| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix key pool empty split-k workspace read Co-authored-by: qiansunchi159<qiansunchi@huawei.com> # message auto-generated for no-merge-commit merge: !12350 merge fix/keypool-a2-empty-split-k-20260917 into master fix key pool empty split-k workspace read Created-by: qiansunchi159 Commit-by: qiansunchi159 Merged-by: cann-robot Description: ## 描述 修复keyPool算子和compressor算子在核用不满场景出现的偶先精度问题 ## 关联的Issue 关联Issue [#5440](https://gitcode.com/cann/ops-transformer/issues/5440) ## 测试 ATK用例泛化1000条通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12350 | 2 天前 | |
attention+moe:950平台判断迁移NpuArch(DAV_3510) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12374 merge fix_3 into master attention+moe:950平台判断迁移NpuArch(DAV_3510) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5147 ## 摘要 attention tiling 层 + moe op_api 层 950 平台判断迁移 NpuArch 口径:**9 处 tiling 枚举判断 + 2 处 op_api 枚举判断**改为 NpuArch::DAV_3510。**统一原则:获取不动、仅判断替换**——原 socVersion_ 成员及 GetSocVersion() 赋值全部保留(供后续型号级区分复用,与 mc2 #12072 的 npuArch_+socVersion_2201 并存模式同构),新增 npuArch_ 成员承载 950 判断。单笔提交,13 文件 +22/-14。 ## 改动明细 | 算子 | 文件 | 改动 | |---|---|---| | chunk_gated_delta_rule | tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,3 处判断改 arch(workspace 分支、tilingKey 分支、FP32 state 守卫) | | compressor | arch35/tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,1 处判断改 arch(高性能模板选择) | | compressor | tiling_register.cpp | arch22/arch35 分发判断直迁(无存储参与) | | key_pool | arch35/tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,1 处判断改 arch | | quant_compressor | arch35/tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,1 处判断改 arch | | kda_input_proj | tiling.cpp | 局部守卫判断直迁,日志文案同步(SOC Version→NpuArch,内部日志非客户面) | | msa_index_score | tiling.cpp | info.isAscend950 赋值源改 arch 判断(成员名保留) | | moe_token_permute | op_api ×2 | regbase 分支判断与 fallback 分发判断直迁 arch(无存储参与,同层先例 moe_inplace_index_add / gmm 系) | ## 语义等价性 - ASCEND950 ↔ DAV_3510 为框架既定 N:1 映射,GetSocVersion()==ASCEND950 与 GetCurNpuArch()==DAV_3510 在真实平台与 UT 桩(soc2ArchMap)上行为一致 - 原 socVersion_ 获取链路零改动(成员、赋值、类型均保留) - 新增 npuArch_ 默认值 DAV_2201 与原 ASCEND910B 等价代际;chunk_gated_delta_rule 的 npuArch_ 无默认值(跟随原成员风格,构造时统一赋值) - arch22 类未动,A2/A3 型号级区分保留 ## 口径说明 本 PR 使用原生枚举 NpuArch::DAV_3510(platform/soc_spec.h),与 attention 目录既有先例(chunk_kda_fwd_tiling.cpp:218、flash_attention_score_grad IsAscend950)一致;非 mc2 的 opbase 常量形态 Ops::Base::DAV_3510(两者为同值 constexpr 别名,attention 侧文件直接使用 PlatformAscendC,无需 opbase 头依赖)。 ## 范围说明(经逐项核实,非漏改) - **experimental / examples 目录**:整体不在整改范围 - **bsa_select_block_mask**:socVersion 可来自 compileInfoPtr->socVersion(platformInfo 为空的降级路径),该路径无 arch 查询手段——待 compileInfo 结构增加 arch 字段后迁移 - **compressor_grad / indexer_quant_cache**:socVersion_ 成员赋值后无任何消费(存而不用),非判断点 - msa_index_score 的 isAscend950 成员名保留(判断已迁 arch,命名清理另行批次) - op_api 层字符串判断(chunk_gated_delta_rule op_api、sparse_flash_mla_metadata 系签名链、quant_lightning_indexer_v2_metadata)、aicpu 层 ValidSocVersion、测试数据:后续批次 - mc2 剩余 12 处 aclrtGetSocName 字符串判断经核实全部为 **DFX 异常 dump 回调**(ExceptionImplWrapper,无 TilingContext,仅 C 接口可用)——待框架提供 C 层 arch 查询后统一迁移 - 客户面(def.cpp AddConfig / CMake / README / docs doxygen / 面向用户的报错文案如 "only supported on Ascend950"):不改 ## 测试 - chunk_gated_delta_rule op_host UT → **23 tests PASSED**(保留+新增改法) - compressor + key_pool + quant_compressor op_host UT → **79 tests PASSED**(同构改法前序版本,本版差异仅 2 行保留行,无行为影响) - compressor_grad 本环境 pypto codegen 失败为基线环境问题(stash 纯净 master 复现,本 PR 未触碰该算子) - kda_input_proj / msa_index_score 无 op_host UT,以 CI 为准 - moe_token_permute op_api UT → **25 tests PASSED**(含 v2 分发路径) ## 检视报告(2026-09-20,对最终提交 dc7ea371e 全量 diff 逐行核对) | 验证项 | 结果 | |---|---| | 改动范围 | 11 文件 +20/-12,无杂项混入 | | 获取保留 | 4 处 socVersion_ 成员/赋值原样保留,零删改 ✅ | | 判断替换 | 9 处逐一对应,均为 ==/!= ASCEND950 ↔ ==/!= DAV_3510 严格同型替换 ✅ | | 新增成员 | npuArch_ 4 处均有消费者(各自判断点),无死成员引入 ✅ | | 客户面 | 用户可见报错文案(如 FP32 state 守卫的 "only supported on Ascend950")保留产品名 ✅ | | 基线 | 基于最新主线,无已合入 PR 回退 ✅ | **结论:可合入。** See merge request: cann/ops-transformer!12374 | 15 小时前 | |
compressor 添加 examples & ut 覆盖率 & err msg修改 Co-authored-by: guigui_jzh<jinzhonghao@huawei.com> # message auto-generated for no-merge-commit merge: !9579 merge master into master compressor 添加 examples & ut 覆盖率 & err msg修改 Created-by: guigui_jzh Commit-by: guigui_jzh Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9579 | 1 个月前 | |
新增CompressorGrad算子 Co-authored-by: 莫允扬<moyunyang@huawei.com> Co-authored-by: huangyuqian<huangyuqian2@huawei.com> Co-authored-by: wuhaogl<wuhao305@h-partners.com> # message auto-generated for no-merge-commit merge: !9763 merge master into master 新增CompressorGrad算子 Created-by: myy268 Commit-by: myy;myy268;huangyuqian;wuhaogl;莫允扬 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 **Compressor**(KV cache 压缩算子,SMLA/QLI 前处理)新增反向算子 **CompressorGrad**,打通训练/微调场景下压缩分支的梯度计算链路。 **1. 新增反向算子 attention/compressor_grad/** - **op_host**:算子定义(compressor_grad_def.cpp,9 输入 4 输出:d_x/d_wkv/d_wgate/d_ape)、infershape、tiling(30 字段 TilingData + workspace 分区计算 + 全量入参校验) - **op_kernel**:PyPTO 实现的 compressor_grad.py,三阶段流水线(Vec scatter 反向 + Cube 双 matmul + Vec 跨核归约),支持 coff=1/2、BSH/TH 双布局、FP16/BF16,D∈{128,512}、cmp_ratio∈[2,128] **2. 正向算子 compressor 增强** - 新增 softmax_score/kv 两个 FP32 中间输出与 grad_enabled 属性(grad_enabled=true 时导出中间量,作为 CompressorGrad 输入) **3. torch_extension 集成** - compressor.py 注册 autograd:backward 通过 aclnnCompressorGrad 计算 d_x/d_wkv/d_wgate/d_ape,前向 grad_enabled 自动按 x.requires_grad 置位 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9763 | 1 个月前 | |
refactor(compressor,compressor_grad,quant_compressor): cleancode 整改与重复代码消除 Co-authored-by: myy268<moyunyang@huawei.com> # message auto-generated for no-merge-commit merge: !12106 merge cpcleancode3 into master refactor(compressor,compressor_grad,quant_compressor): cleancode 整改与重复代码消除 Created-by: myy268 Commit-by: myy268 Merged-by: cann-robot Description: ## 描述 本 PR 对 compressor / compressor_grad / quant_compressor 三个算子做 cleancode 整改与重复代码消除,共 11 个提交: 1. fix:去掉 cmp_ratio 默认值,补齐取值范围校验 [2,128] 2. 拆分 tiling 超大函数(IteratorSlice / ComputeVec1,每函数 ≤50 行) 3. 抽取 tiling 魔鬼数字为语义化常量(compressor / quant_compressor / compressor_grad) 4. tiling 成员函数按 const 正确性补 const;to_string 模板分支改 if constexpr 5. 修复 cleancode 告警:TilingParse 回调形参加 const(*const)、删除未使用的 kernel_tiling.h、条件显式 ge::GRAPH_SUCCESS 比较、统一 Convert* 形参名 6. PyPTO kernel(compressor_grad.py)用 pl.make_tuple 聚合上下文,消除 49 组 >10 行重复块(文件 3502 → 3076 行) 7. 重排 DATATYPE_TO_STRING_MAP,消除跨算子重复代码 8. 拆分 infershape 超大函数(>50 行) 仅重构与清理,算子逻辑、计算顺序与数值结果不变。 ## 关联的Issue 关联 Issue #5328 ## 测试 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12106 | 4 天前 | |
attention+moe:950平台判断迁移NpuArch(DAV_3510) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12374 merge fix_3 into master attention+moe:950平台判断迁移NpuArch(DAV_3510) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5147 ## 摘要 attention tiling 层 + moe op_api 层 950 平台判断迁移 NpuArch 口径:**9 处 tiling 枚举判断 + 2 处 op_api 枚举判断**改为 NpuArch::DAV_3510。**统一原则:获取不动、仅判断替换**——原 socVersion_ 成员及 GetSocVersion() 赋值全部保留(供后续型号级区分复用,与 mc2 #12072 的 npuArch_+socVersion_2201 并存模式同构),新增 npuArch_ 成员承载 950 判断。单笔提交,13 文件 +22/-14。 ## 改动明细 | 算子 | 文件 | 改动 | |---|---|---| | chunk_gated_delta_rule | tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,3 处判断改 arch(workspace 分支、tilingKey 分支、FP32 state 守卫) | | compressor | arch35/tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,1 处判断改 arch(高性能模板选择) | | compressor | tiling_register.cpp | arch22/arch35 分发判断直迁(无存储参与) | | key_pool | arch35/tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,1 处判断改 arch | | quant_compressor | arch35/tiling.h/.cpp | 保留 socVersion_ + 新增 npuArch_,1 处判断改 arch | | kda_input_proj | tiling.cpp | 局部守卫判断直迁,日志文案同步(SOC Version→NpuArch,内部日志非客户面) | | msa_index_score | tiling.cpp | info.isAscend950 赋值源改 arch 判断(成员名保留) | | moe_token_permute | op_api ×2 | regbase 分支判断与 fallback 分发判断直迁 arch(无存储参与,同层先例 moe_inplace_index_add / gmm 系) | ## 语义等价性 - ASCEND950 ↔ DAV_3510 为框架既定 N:1 映射,GetSocVersion()==ASCEND950 与 GetCurNpuArch()==DAV_3510 在真实平台与 UT 桩(soc2ArchMap)上行为一致 - 原 socVersion_ 获取链路零改动(成员、赋值、类型均保留) - 新增 npuArch_ 默认值 DAV_2201 与原 ASCEND910B 等价代际;chunk_gated_delta_rule 的 npuArch_ 无默认值(跟随原成员风格,构造时统一赋值) - arch22 类未动,A2/A3 型号级区分保留 ## 口径说明 本 PR 使用原生枚举 NpuArch::DAV_3510(platform/soc_spec.h),与 attention 目录既有先例(chunk_kda_fwd_tiling.cpp:218、flash_attention_score_grad IsAscend950)一致;非 mc2 的 opbase 常量形态 Ops::Base::DAV_3510(两者为同值 constexpr 别名,attention 侧文件直接使用 PlatformAscendC,无需 opbase 头依赖)。 ## 范围说明(经逐项核实,非漏改) - **experimental / examples 目录**:整体不在整改范围 - **bsa_select_block_mask**:socVersion 可来自 compileInfoPtr->socVersion(platformInfo 为空的降级路径),该路径无 arch 查询手段——待 compileInfo 结构增加 arch 字段后迁移 - **compressor_grad / indexer_quant_cache**:socVersion_ 成员赋值后无任何消费(存而不用),非判断点 - msa_index_score 的 isAscend950 成员名保留(判断已迁 arch,命名清理另行批次) - op_api 层字符串判断(chunk_gated_delta_rule op_api、sparse_flash_mla_metadata 系签名链、quant_lightning_indexer_v2_metadata)、aicpu 层 ValidSocVersion、测试数据:后续批次 - mc2 剩余 12 处 aclrtGetSocName 字符串判断经核实全部为 **DFX 异常 dump 回调**(ExceptionImplWrapper,无 TilingContext,仅 C 接口可用)——待框架提供 C 层 arch 查询后统一迁移 - 客户面(def.cpp AddConfig / CMake / README / docs doxygen / 面向用户的报错文案如 "only supported on Ascend950"):不改 ## 测试 - chunk_gated_delta_rule op_host UT → **23 tests PASSED**(保留+新增改法) - compressor + key_pool + quant_compressor op_host UT → **79 tests PASSED**(同构改法前序版本,本版差异仅 2 行保留行,无行为影响) - compressor_grad 本环境 pypto codegen 失败为基线环境问题(stash 纯净 master 复现,本 PR 未触碰该算子) - kda_input_proj / msa_index_score 无 op_host UT,以 CI 为准 - moe_token_permute op_api UT → **25 tests PASSED**(含 v2 分发路径) ## 检视报告(2026-09-20,对最终提交 dc7ea371e 全量 diff 逐行核对) | 验证项 | 结果 | |---|---| | 改动范围 | 11 文件 +20/-12,无杂项混入 | | 获取保留 | 4 处 socVersion_ 成员/赋值原样保留,零删改 ✅ | | 判断替换 | 9 处逐一对应,均为 ==/!= ASCEND950 ↔ ==/!= DAV_3510 严格同型替换 ✅ | | 新增成员 | npuArch_ 4 处均有消费者(各自判断点),无死成员引入 ✅ | | 客户面 | 用户可见报错文案(如 FP32 state 守卫的 "only supported on Ascend950")保留产品名 ✅ | | 基线 | 基于最新主线,无已合入 PR 回退 ✅ | **结论:可合入。** See merge request: cann/ops-transformer!12374 | 15 小时前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 15 小时前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 天前 | ||
| 15 小时前 |