文件最后提交记录最后更新时间
doc(kv_rms_norm_rope_cache): fix incorrect function signature in aclnnKvRmsNormRopeCache doc Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !3828 merge doc/fix-kvrms-doc into master doc(kv_rms_norm_rope_cache): fix incorrect function signature in aclnnKvRmsNormRopeCache doc Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 描述 修复 aclnnKvRmsNormRopeCache 文档中函数原型 aclnnKvRmsNormRopeCacheGetWorkspaceSize 的参数声明错误,具体包括: 1. 第9个参数命名错误:ckvScaleOptionalcKvScaleOptional(大小写与其他参数风格不一致) 2. kRopeOut 缺少 const 修饰符:aclTensor*const aclTensor* 3. cKvOut 缺少 const 修饰符:aclTensor*const aclTensor* 4. workspaceSize 应为输出参数,类型错误:uint64_tuint64_t* 5. executor 应为输出参数,类型错误:aclOpExecutor*aclOpExecutor** 其中第4、5条为关键错误:workspaceSizeexecutor 是两段式接口的输出参数,若声明为值类型,调用方将无法获取计算结果。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1731 ## 测试 文档修改,无需功能测试。已对照源码头文件及示例代码验证参数声明的正确性。 ## 文档更新 更新了 posembedding/kv_rms_norm_rope_cache/docs/aclnnKvRmsNormRopeCache.md 中的函数原型声明。 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!38281 个月前
add atk case Co-authored-by: zerosaki_admin<chenzhaominyi1@huawei.com> # message auto-generated for no-merge-commit merge: !5323 merge master into master add atk file Created-by: zerosaki_admin Commit-by: zerosaki_admin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增加前冒烟用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2551](https://gitcode.com/cann/ops-transformer/issues/2551) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!53238 天前
modify kvRmsNormRopeCache aclnn md and proto description Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !1307 merge kv_md_proto_fix into master modify kvRmsNormRopeCache aclnn md and proto description Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 描述 aclnnKvRmsNormRopeCache.md更新为新模板 原型注释修改语法错误 readme文档修改参数名称错误 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue:https://gitcode.com/cann/ops-transformer/issues/678 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnKvRmsNormRopeCache.md文档,更新了readme.md文档,更新了原型注释 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!13073 个月前
整改遗漏的OP_LOGE日志 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !5101 merge 0509 into master 整改遗漏的OP_LOGE日志 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 整改遗漏的OP_LOGE ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2108 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:日志整改 See merge request: cann/ops-transformer!510118 天前
fix: 修复 KvRmsNormRopeCache 重计算 RoPE 尾块 UB 非对齐访问 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !4903 merge fix-kv-rms-norm-rope-cache-regbase-shape-check into master fix: 修复 KvRmsNormRopeCache 重计算 RoPE 尾块 UB 非对齐访问 Created-by: qianzehong Commit-by: rk Merged-by: cann-robot Description: ## 描述 修复 KvRmsNormRopeCache arch35 regbase recompute 模板中 K 侧 RoPE 尾块可能触发 VEC_ERROR 的问题,并补齐 Dk 整除场景的尾块保护。 - RopeVF 改为显式接收前后半输出指针 outPtr1/outPtr2,第二段输出使用外层已规划的 kOutLocal1 地址,不再在函数内部通过动态半长推导第二段地址。 - RoPE 相关分支的 cos/sin/kOut/kQuant/scale/offset UB 分段统一使用 this->ubFactor / CONST_TWO 作为前后半区间隔,保持完整 block half 的对齐布局。 - 保留 tmpFactor / CONST_TWOcosSinLen 作为真实搬运长度,尾块只搬运实际有效数据。 - Dk 相关分支在最后一轮仅当 ubFactorDkTail > 0 时使用 tail 长度;当 dk 可被 ubFactor 整除时,最后一轮继续按完整块处理,避免 tmpFactor 被置为 0。 ## 关联的Issue 关联 Issue #2242https://gitcode.com/cann/ops-transformer/issues/2242 ## 测试 - git diff --check 通过。 - 已完成静态检查:当前分支相对 upstream/master 仅 1 个提交,净变更 1 个 kernel 文件。 - 已检查 Dv 分支已有 ubFactorDvTail > 0 保护;本次 Dk 分支补齐同类保护。 - 用户上板反馈:注释 RopeWithoutQuant 路径可绕过 VEC_ERROR,本次修复针对该路径中第二段输出向量 store 的对齐问题。 ## 文档更新 无需更新文档。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!490322 天前
fix: repair kv_rms_norm_rope_cache op_host UT build Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !5696 merge master into master fix: repair kv_rms_norm_rope_cache op_host UT build Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 描述 修复 kv_rms_norm_rope_cache 算子的 opapi UT 未正确纳入构建的问题。 kv_rms_norm_rope_cache 在执行: bash build.sh -u --opapi --ops=kv_rms_norm_rope_cache 时,opapi UT 需要生成并构建 transformer_op_api_ut。此前该算子目标_cases_obj未指定源文件,导致构建文件无法生成。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2560 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!56968 天前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
Wsl_transform资料修改 Co-authored-by: wang_shuli<wangshuli6@h-partners.com> # message auto-generated for no-merge-commit merge: !3489 merge master into master Wsl_transform资料修改 Created-by: wang_shuli Commit-by: wang_shuli Merged-by: cann-robot Description: ## 描述 之前没有注意到图灵的一些资料是有误的,对kirin是否支持一些数据类型添加了说明,现发现存在一定问题,进行排查修改 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1554 ## 测试 ## 文档更新 更新了README.md文件。 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!34891 个月前
README.md

KvRmsNormRopeCache

产品支持情况

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

功能说明

  • 算子功能:对输入张量(kv)的尾轴,拆分出左半边用于rms_norm计算,右半边用于rope计算,再将计算结果分别scatter到两块cache中。

  • 计算公式:

    (1) interleaveRope:

    x=kv[...,Dv:]x=kv[...,Dv:]

    x1=x[...,::2]x1=x[...,::2]

    x2=x[...,1::2]x2=x[...,1::2]

    x_part1=torch.cat((x1,x2),dim=−1)x\_part1=torch.cat((x1,x2),dim=-1)

    x_part2=torch.cat((−x2,x1),dim=−1)x\_part2=torch.cat((-x2,x1),dim=-1)

    y=x_part1∗cos+x_part2∗siny=x\_part1*cos+x\_part2*sin

    (2) rmsNorm:

    x=kv[...,:Dv]x=kv[...,:Dv]

    square_x=x∗xsquare\_x=x*x

    mean_square_x=square_x.mean(dim=−1,keepdim=True)mean\_square\_x=square\_x.mean(dim=-1,keepdim=True)

    rms=torch.sqrt(mean_square_x+epsilon)rms=torch.sqrt(mean\_square\_x+epsilon)

    y=(x/rms)∗gammay=(x/rms)*gamma

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
kv 输入 用于切分出rms_norm计算所需数据Dv和rope计算所需数据Dk的输入数据,对应公式中的`kv`。 FLOAT16、BFLOAT16 ND
gamma 输入 用于rms_norm计算的输入数据,对应公式中的`gamma`。 FLOAT16、BFLOAT16 ND
cos 输入 用于rope计算的输入数据,对输入张量进行余弦变换,对应公式中的`cos`。 FLOAT16、BFLOAT16 ND
sin 输入 用于rope计算的输入数据,对输入张量进行正弦变换,对应公式中的`sin`。 FLOAT16、BFLOAT16 ND
index 输入 用于指定写入cache的具体索引位置。 INT64 ND
k_cache 输入/输出 提前申请的cache,输入输出同地址复用。 FLOAT16、BFLOAT16、INT8、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN ND
ckv_cache 输入/输出 提前申请的cache,输入输出同地址复用。 FLOAT16、BFLOAT16、INT8、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN ND
k_rope_scale 可选属性 当kCacheRef数据类型为INT8、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN时需要此输入参数。 FLOAT32 ND
c_kv_scale 可选属性 当ckv_cache数据类型为INT8、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN时需要此输入参数。 FLOAT32 ND
k_rope_offset 可选属性 当k_cache数据类型为INT8、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN且对应的k_rope_scale输入存在并量化场景为非对称量化时,需要此参数输入。 FLOAT32 ND
c_kv_offset 可选属性 当ckv_cache数据类型为INT8、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN且对应的c_kv_scale输入存在并量化场景为非对称量化时,需要此参数输入。 FLOAT32 ND
epsilon 可选属性
  • 用于防止rms_norm计算除0错误,对应公式中的eps。
  • 默认值为1e-5。
FLOAT32 -
cache_mode 可选属性 cache格式的选择标记。类型有Norm、PA、PA_BNSD、PA_NZ、PA_BLK_BNSD、PA_BLK_NZ。 CHAR* -
is_output_kv 可选属性 kRopeOut和cKvOut输出控制标记。 BOOL -
k_rope 输出 rope计算结果,对应interleaveRope计算公式中的`y`。由isOutputKv控制,当isOutputKv为true时,需输出。 FLOAT16、BFLOAT16 ND
c_kv 输出 rms_norm计算结果,对应rmsNorm计算公式中的`y`。由isOutputKv控制,当isOutputKv为true时,需输出。 FLOAT16、BFLOAT16 ND
  • Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16、HIFLOAT8、FLOAT8E5M2、FLOAT8E4M3FN。

约束说明

  • 输入shape限制:
    • kv为四维张量,shape为[Bkv,N,Skv,D],Bkv为输入kv的batch size,Skv为输入kv的sequence length,大小由用户输入场景决定,无明确限制。
    • N为输入kv的head number。此算子与DeepSeekV3网络结构强相关,仅支持N=1的场景,不存在N非1的场景。
    • D为输入kv的head dim。rms_norm计算所需数据Dv和rope计算所需数据Dk由输入kv的D切分而来。故Dk、Dv大小需满足Dk+Dv=D。同时,Dk需满足rope规则。根据rope规则,Dk为偶数。
    • 若cache_mode为PA场景(cache_mode为PA、PA_BNSD、PA_NZ、PA_BLK_BNSD、PA_BLK_NZ),其shape[BlockNum,BlockSize,N,Dk]中BlockSize需32B对齐。
    • 输入张量均不支持空Tensor。
  • 其他限制:
    • 对于index,当cache_mode为Norm时,shape为2维[Bkv,Skv],要求index的value值范围为[-1,Scache)。不同的Bkv下,value数值可以重复。
    • 当cache_mode为PA_BNSD、PA_NZ时,shape为1维[Bkv * Skv],要求index的value值范围为[-1,BlockNum * BlockSize)。value数值不能重复。
    • 当cache_mode为PA_BLK_BNSD、PA_BLK_NZ时,shape为1维[Bkv * ceil_div(Skv,BlockSize)],要求index的value的数值范围为[-1,BlockNum * BlockSize)。value/BlockSize的值不能重复。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_kv_rms_norm_rope_cache 通过aclnnKvRmsNormRopeCache接口方式调用KvRmsNormRopeCache算子。
图模式 test_geir_kv_rms_norm_rope_cache 通过算子IR构图方式调用KvRmsNormRopeCache算子。