文件最后提交记录最后更新时间
GatherPaKvCache支持非连续 Co-authored-by: BIGWHITETEETH<jingruiyang@huawei.com> # message auto-generated for no-merge-commit merge: !5502 merge master into master GatherPaKvCache支持非连续 Created-by: BIGWHITETEETH Commit-by: BIGWHITETEETH Merged-by: cann-robot Description: ## 描述 支持keyCache/valueCache的blockNum、blockSize、N三根轴非连续,以及key/value输出的B、S轴非连续。NZ格式支持D轴前面维度非连续。 ## 关联的Issue [2786](https://gitcode.com/cann/ops-transformer/issues/2786) ## 测试 已经过冒烟和自测 ## 文档更新 更新了aclnnGatherPaKvCache.md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!55023 天前
匹配最新cann版本,上线新版本attention/ffn/moe/posembedding算子 Co-authored-by: huangchuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !538 merge master into master 匹配最新cann版本,上线新版本attention/ffn/moe/posembedding算子 Created-by: huang-chuhong Commit-by: huangchuhong Merged-by: cann-robot Description: ## 描述 transformer 同步算子最新开发,涉及attention/ffn/moe/posembedding ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/315 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5385 个月前
fix scatterPaKvCache example Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> # message auto-generated for no-merge-commit merge: !4826 merge fix_scatterPaKvCache_example into master fix scatterPaKvCache example Created-by: yu_qinfei Commit-by: yu_qinfei Merged-by: cann-robot Description: ## 描述 修复cann包中ScatterPaKvCache,ScatterPaCache, GatherPaKvCache算子原型缺失问题 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2177 ## 测试 已跑st 用例,cann包中验证原型已存在 ## 文档更新 attention/scatter_pa_kv_cache/docs/aclnnScatterPaKvCache.md ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!48261 个月前
GatherPaKvCache支持非连续 Co-authored-by: BIGWHITETEETH<jingruiyang@huawei.com> # message auto-generated for no-merge-commit merge: !5502 merge master into master GatherPaKvCache支持非连续 Created-by: BIGWHITETEETH Commit-by: BIGWHITETEETH Merged-by: cann-robot Description: ## 描述 支持keyCache/valueCache的blockNum、blockSize、N三根轴非连续,以及key/value输出的B、S轴非连续。NZ格式支持D轴前面维度非连续。 ## 关联的Issue [2786](https://gitcode.com/cann/ops-transformer/issues/2786) ## 测试 已经过冒烟和自测 ## 文档更新 更新了aclnnGatherPaKvCache.md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!55023 天前
GatherPaKvCache支持非连续 Co-authored-by: BIGWHITETEETH<jingruiyang@huawei.com> # message auto-generated for no-merge-commit merge: !5502 merge master into master GatherPaKvCache支持非连续 Created-by: BIGWHITETEETH Commit-by: BIGWHITETEETH Merged-by: cann-robot Description: ## 描述 支持keyCache/valueCache的blockNum、blockSize、N三根轴非连续,以及key/value输出的B、S轴非连续。NZ格式支持D轴前面维度非连续。 ## 关联的Issue [2786](https://gitcode.com/cann/ops-transformer/issues/2786) ## 测试 已经过冒烟和自测 ## 文档更新 更新了aclnnGatherPaKvCache.md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!55023 天前
GatherPaKvCache ut tiling重复定义bug修复 Co-authored-by: zhuzemao<zhuzemao1@h-partners.com> # message auto-generated for no-merge-commit merge: !5764 merge modify_gpkc_tiling_ut into master GatherPaKvCache ut tiling重复定义bug修复 Created-by: zhuzemao Commit-by: zhuzemao Merged-by: cann-robot Description: ## 描述 GatherPaKvCache ut tiling重复定义bug修复 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2594 ## 测试 不涉及 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!576411 天前
匹配最新cann版本,上线新版本attention/ffn/moe/posembedding算子 Co-authored-by: huangchuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !538 merge master into master 匹配最新cann版本,上线新版本attention/ffn/moe/posembedding算子 Created-by: huang-chuhong Commit-by: huangchuhong Merged-by: cann-robot Description: ## 描述 transformer 同步算子最新开发,涉及attention/ffn/moe/posembedding ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/315 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5385 个月前
资料 断链问题修复 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !3979 merge master into master 资料 断链问题修复 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 资料 断链问题修复 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!39791 个月前
README.md

GatherPaKvCache

产品支持情况

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

功能说明

  • 算子功能:根据blockTables中的blockId值、seqLens中key/value的seqLen从keyCache/valueCache中将内存不连续的token搬运、拼接成连续的key/value序列。

  • 计算逻辑:

    • keyRef/valueRef的第一个维度取决于seq_lens大小。
    • 如果isSeqLensCumsum为true,则seqLens中最后一个值即为keyRef/valueRef的第一个维度大小: keyRef[dim0] = seqLens[-1]
    • 如果isSeqLensCumsum为false,则seqLens中所有值的累加和即为keyRef/valueRef的第一个维度大小:keyRef[dim0] = sum(seqLens)

    关于keyRefvalueRef的一些限制条件如下:

    • 每个token大小控制在148k以内,例如,对于fp16/bf16类型,num_heads * head_size(keyRef/valueRef)取128*576。
  • 示例:

      keyCache_shape: [128, 128, 16, 144]
      valueCache_shape: [128, 128, 16, 128]
      blockTables_shape: [16, 12]
      seqLens_shape: [16]
      keyRef_shape: [8931, 16, 144]
      valueRef_shape: [8931, 16, 128]
      seqOffset_shape: [16]
      out1_shape: [8931, 16, 144]  
      out2_shape: [8931, 16, 128]        
    

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
keyCache 输入 当前层存储的key向量缓存 INT8, FLOAT16, BFLOAT16, FLOAT, UINT8, INT16, UINT16, INT32, UINT32, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN ND
valueCache 输入 当前层存储的value向量缓存 INT8, FLOAT16, BFLOAT16, FLOAT, UINT8, INT16, UINT16, INT32, UINT32, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN FRACTAL_NZ
blockTables 输入 每个batch中KV Cache的逻辑块到物理块的映射关系 INT32、INT64 ND
seqLens 输入 每个batch对应的序列长度 INT32、INT64 ND
keyRef 输入/输出 当前层的key向量 INT8, FLOAT16, BFLOAT16, FLOAT, UINT8, INT16, UINT16, INT32, UINT32, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN ND
valueRef 输入/输出 当前层的value向量 INT8, FLOAT16, BFLOAT16, FLOAT, UINT8, INT16, UINT16, INT32, UINT32, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN ND
seqOffset 输入 blockTables获取blockId时存在的首偏移 INT32、INT64 ND
cacheMode 输入 表示输入的数据排布格式,支持Norm、PA_NZ String ND
isSeqLensCumsum 输入 表示seqLens是否为累加和。false表示非累加和 BOOL ND

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_gather_pa_kv_cache 通过aclnnGatherPaKvCache调用GatherPaKvCache算子