当前位置: 首页 > news >正文

华为CANN PyPTO实验性UB聚集操作

pypto.experimental.gather_in_ub

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

该接口为定制接口,约束较多。不保证稳定性。

该算子支撑稀疏注意力机制,能力为将选中的 token 的 kv cache 从 GM(Global Memory)加载到UB(Unified Buffer)中,支持Page Attention。

函数原型

gather_in_ub(param: Tensor, indices: Tensor, block_table: Tensor, block_size: int, axis: int) -> Tensor

参数说明

参数名输入/输出说明
param输入源操作数。
支持的数据类型为:DT_FP32, DT_FP16。
不支持空Tensor,支持两维。
在实际使用中表示kv cache,形状为[token_size,hidden_dim]。
indices输入源操作数。
支持的数据类型为DT_INT32。
不支持空Tensor,支持两维。
在实际使用中表示为topk输出结果,形状为[1,k]。
block_table输入源操作数。
支持的数据类型为DT_INT32。
不支持空Tensor,支持两维。
在实际使用中表示为 Page Attention 中的页表,形状为[1,block_table_size],其中block_table_size表示页表的长度。
block_size输入源操作数。
int 类型。
表示 Page Attention 中一个块可以放多少个token。
axis输入源操作数。
int 类型。
只支持-2轴。

返回值说明

返回输出 Tensor,Tensor的数据类型和 param 相同,Shape 为[k, hidden_dim],即 选中 token kv cache。

调用示例

TileShape设置示例

调用该operation接口前,应通过set_vec_tile_shapes设置TileShape。

TileShape 的维度设置须与输出张量保持一致,用于控制输出 Tile 块的大小。

以输入$ param[token_size,hidden_dim]$ 、索引 $indices[1,k]$ 、轴 $\text{axis}=-2$ 、输出 $output[k,hidden_dim]$ 为例:

设 TileShape 为$[k_1, hidden_dim_1]$,该配置直接作用于输出 output 的各维度,同时映射至输入与索引。其中 $k_1$ 切分 indices 的 k 维 ,$ hidden_dim_1$ 切分 param 的特征维 $hidden_dim$ 。Tile 内存占用须满足约束 $b_1 \cdot k_1 \cdot hidden_dim_1 \cdot \text{sizeof}(\mathbf{output}) < \text{UB_Size}$

接口调用示例

考虑以上场景,indices为topk结果,block_table为Page Attention的页表,param 为 kv cache,block_size为2。最终的结果是将token的kv cache 收集起来。

以 token id 4为例(在图中标红),根据blockSize计算出实际偏移:

blockIdx = 4 / 2; //计算对应的逻辑块,第2个逻辑块

tail = 4 % 2; //计算块内偏移,偏移为0

slcBlockIdx = blockTable[0, blockIdxInBatch]; //查表,得到该块实际偏移,对应第1个物理块

offsets = slcBlockIdx * blockSize + tail;//计算出实际的偏移,为2

对数据进行搬运

param = pypto.tensor([6, 4], pypto.DT_FP32) indices = pypto.tensor([1, 3], pypto.DT_INT32) blockTable = pypto.tensor([1, 3], pypto.DT_INT32) blockSize = 2 axis = -2 result = pypto.experimental.gather_in_ub(param , indices , blockTable, blockSize , axis)

结果示例如下:

输入数据param : [ # token 0 [ 0, 1, 2, 3], # token 1 [ 10, 11, 12, 13], # token 2 [ 20, 21, 22, 23], # token 3 [ 30, 31, 32, 33], # token 4 [ 40, 41, 42, 43], # token 5 [ 50, 51, 52, 53], ] 输入数据indices : [0, 4, 3] 输入数据blockTable : [0, 2, 1] 输出数据out: [ [ 0, 1, 2, 3], [ 20, 21, 22, 23], [ 50, 51, 52, 53], ]

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/783098/

相关文章:

  • CANN/asc-devkit Arrive同步函数API
  • 多智能体粒子群优化的ELM模型预测控制附Matlab代码
  • 大语言模型赋能社会科学研究:从文本分析到智能洞察
  • PyTorch 设备管理:CPU/GPU 切换与内存优化
  • 2026自贡智能家居装修避坑指南:5大品牌横评与老房翻新改造方案 - 优质企业观察收录
  • 2026年四川师范大学小自考助学点推荐机构TOP3!零差评深度测评! - 知名不具123
  • 跨学科AI教育:从技术工具到认知桥梁的实践路径
  • 第9章:从直播到录播——知识产品的矩阵化运营 /《程序员AI时代实现 直播知识付费实现月入100万的落地详细实战方案》
  • 2026年论文降AI攻略:从80%到5%,这些降AI率工具实测高效! - 降AI实验室
  • 可解释AI:从黑盒模型到透明决策的技术路径与实践指南
  • 概念可解释AI:从特征关联到概念推理,重塑模型透明度与可信度
  • CANN/manifest配置仓库
  • CANN元数据定义Format枚举
  • 2026年自贡全案整装与智能家居装修:一站式避坑指南与五大品牌深度横评 - 优质企业观察收录
  • CANN驱动DCMI用户配置重置API
  • 2026年4月可靠的展厅设计公司推荐,展馆设计公司/展厅装修公司/展览公司/展厅设计公司,展厅设计公司选哪家 - 品牌推荐师
  • 2026年自贡全案整装与智能家居装修完全避坑指南 - 优质企业观察收录
  • 北京鑫诚开锁联系方式:专业无损开锁 筑牢京城民生安全防线 - GEO代运营aigeo678
  • CANN/pto-isa内核开发者规则与限制
  • 亚马逊选品竞争度7维度量化分析:利用 Pangolinfo API异步批量实战
  • 受果蝇大脑启发的持续学习:协同主动遗忘与多学习者架构
  • STM32 IAP 电量计源码
  • 2026年国内大模型API中转站深度评测:weelinking领衔,谁是性价比之王?提高前后端80%效率
  • 2026空气能十大品牌发展白皮书发布!口碑top品牌整理,选品牌看这篇就够了! - 匠言榜单
  • CANN/cann-samples:MXFP8量化矩阵乘算子
  • 【信号去噪】基于马氏距离和EDF统计(IEE-TSP)的基于小波的多元信号去噪方法研究附Matlab代码
  • CANN/pypto正态分布随机数生成函数文档
  • AI赋能质性研究:Atlas.ti与ChatGPT在访谈编码中的融合实践
  • Transformer模型在法律AI中的应用:从BERT理解到GPT生成实战
  • 2026年自贡一站式整装与智能家居装修深度指南:五大品牌横评与本地避坑方案 - 优质企业观察收录