本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| Files | Last commit | Last update |
|---|---|---|
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !15372 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共275个文件),为第一批(已合入)之外的其余全部译稿: - 新增263个英文译稿文件(含上游新增算子 attention/flash_kda_grad 的README与测试说明2篇,及14篇基于最新源文档的增量更新) - 重命名12个中文设计文档为英文名(Xxx算子设计介绍.md → Xxx_design.md,与第一批FFN_design.md策略一致) - 更新7个README中的设计文档引用链接 - 更新.pre-commit-config.yaml中codespell忽略词表 本批内全部仓内链接均指向master已有文件(含第一批已合入的42篇译稿),合入后本仓英文文档全部就位、链接完整生效。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验、残留中文/全角标点扫描、EOF换行规范检查,并完成逐篇翻译规范自查与独立语义审查(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增263个英文译稿文件、重命名12个中文设计文档、更新8个现有文件,不修改算子源码。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!15372 | 9 days ago | |
feat(bsag): add HiF8 quantization support Co-authored-by: DaiHuina1<daihuina1@huawei.com> # message auto-generated for no-merge-commit merge: !15653 merge hif8 into master feat(bsag): add HiF8 quantization support Created-by: DaiHuina1 Commit-by: DaiHuina1 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15653 | 4 days ago | |
perf(cmake): 将 DSL Host 发布移到构建阶段 Co-authored-by: sky-zyh<zhangyuhan45@huawei.com> # message auto-generated for no-merge-commit merge: !15491 merge perf/dsl-build-scheduling into master perf(cmake): 将 DSL Host 发布移到构建阶段 Created-by: sky-zyh Commit-by: sky-zyh Merged-by: cann-robot Description: ## 改动 - **并行度。** build.sh -jN 通过 CMake 传给 OpKit,限制单次调用中 DSL lowering 和 Device 编译各自的并发数。有可用 jobserver 时,DSL 任务与其他构建目标共享父构建的并行额度。 Unix Makefiles 沿用仓库现有的 $(MAKE) 递归规则传递 jobserver,不依赖 CMake 3.28 的 JOB_SERVER_AWARE。 - **Host 构建与链接。** CMake 配置阶段生成产物清单,构建阶段按依赖生成 Native .a 和 ACLNN C++ 源文件。Host 动态库直接链接 .a,ACLNN 按清单编译源文件。发布前核对实际产物是否与清单一致。 ## 构建实测 Ascend950 / CANN 9.3.0。固定 MQSMLA 源码为 ops-transformer #15301 的 de472ccf649bc426754d6e19929178b825ede493,覆盖 36 个特化。B/C/D 和 A+ 都只补入同一份 DSL 源码与最小注册(禁止重复遍历 op_dsl,从已有 op_host 注册一次)。原样 A 没有这份 DSL 源码,未修改。 bash build.sh --pkg --ops=mixed_quant_sparse_flash_mla --soc=ascend950 -j32 。各轮使用新构建目录、独立空 DSL/XDG 缓存,CCACHE_DISABLE=1,只允许同轮复用;SDK、毕昇、Host C++、LLVM/MLIR 与第三方依赖固定。 | 组 | cannbot-dsl-dev SHA | ops-transformer SHA | DSL 耗时 | Lowering | Device | passes | 并发峰值(passes / Device) | PSS 峰值 | |---|---|---|---:|---:|---:|---:|---:|---:| | A 原样 master | f1271445f16b0d939135d55e6c71bb19501657e5 | a85177f36e7a79cfa2662496afa4587391ef14cd | 无 DSL 目标 | — | — | 0 | — | — | | A+ 可比 master | f1271445f16b0d939135d55e6c71bb19501657e5 | a85177f36e7a79cfa2662496afa4587391ef14cd | 3095.26 s | 2982.05 s | 100.79 s | 108 | 1 / 1 | 5.43 GiB | | B 原 PR | 94de8c43a2e62ec0265eb9c60cedd86873852b15 | 7d22f6463562b1ce45fa602949bc2d176fe78acd | 259.85 s | 142.28 s | 111.07 s | 36 | 9 / 1 | 5.14 GiB | | C jobs + Device 并行 | c159bccb7ce3f60d868ae0b752405366eb0419c9 | d0d6c13dedc2be64bcc1426e086015b238814b4f | 155.73 s | 141.78 s | 5.74 s | 36 | 9 / 32 | 4.73 GiB | | D 实测提交 | ad8b9ead2f0abef752adac98a9519f1850e18619 | 66191da9f32438f91be4783da1d3cebb7f1ea822 | 162.94 s | 149.54 s | 6.28 s | 36 | 9 / 30 | 4.66 GiB | A 的标准命令退出 0,仅构建同名 Ascend C 算子;包含 ASC 和打包的完整墙钟为 420.64 s,无 DSL 指标。主指标从启动到最后一个 DSL 构建标记;不会等待 ASC 或 .run 打包完成。原 ASC 与 DSL 同时执行的时段按墙钟记录。Lowering 是三路区间的并集,Device 含毕昇和 ABI/元数据校验;PSS 为 DSL 计时窗口内构建进程树的采样峰值。 | 对照 | 节省时间 | 耗时降幅 | 加速比 | |---|---:|---:|---:| | D 相对 A+,总收益 | +2932.32 s | +94.74% | 18.997× | | D 相对 B,本轮收益 | +96.91 s | +37.30% | 1.595× | | C 相对 B,参数传递与 Device 并行 | +104.12 s | +40.07% | 1.669× | | D 相对 C,jobserver 净变化 | -7.21 s | -4.63% | 0.956× | 首轮 C 为 174.23 s,首轮 D(最终修订前)为 157.95 s。表中使用同样的 C 提交和最终 D 提交的冷复测。不同轮的 lowering 有波动,最终 D 与共享主机上 A+ 的原 ASC 编译有重叠;不将秒级差异全部归因于调度。jobserver 的稳定作用是共享预算。 See merge request: cann/ops-transformer!15491 | 5 days ago | |
fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Co-authored-by: gao19871128<1897001@qq.com> # message auto-generated for no-merge-commit merge: !15126 merge master into master fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Created-by: gao19871128 Commit-by: gao19871128 Merged-by: cann-robot Description: ## 描述 fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15126 | 12 days ago | |
feat(mhc): 新增 TextGatedResidual Torch 接口 Co-authored-by: kdy18482276080<kongdeyuan3@huawei.com> # message auto-generated for no-merge-commit merge: !15425 merge feat/text-gated-residual-torch into master feat(mhc): 新增 TextGatedResidual Torch 接口 Created-by: kdy18482276080 Commit-by: kdy18482276080 Merged-by: cann-robot Description: ## 描述 新增 TextGatedResidual 正反向 Torch 接口,包括 C++ ACLNN 调用封装、Python 接口、Meta 推导、接口文档和 Torch 接口目录登记。 - 前向入口根据梯度模式及输入的 requires_grad 自动保存缓存并绑定一阶反向,支持部分输入求导和 torch.no_grad() 推理。 - 提供 text_gated_residual_grad 显式反向接口,权重梯度与对应前向权重的 dtype 一致,gamma 梯度为 FP32。 - 反向使用同包相对导入,支持整包和自定义 vendor 包;补齐 Meta 的 channels 与维度整除检查,以及单输出损失的零梯度处理。 ## 测试 - Ascend950:M=4、32,各覆盖 84 组正反向组合,FP16/BF16、gate/gamma 可选组合、部分输入求导、单输出损失及 no_grad 检查通过。 - 整包和自定义 vendor 包的真实 NPU 回归通过;Meta 检查、Python 语法及 git diff --check 通过。 - 本次未验证 Ascend910B。 ## 文档更新 补充正反向 Torch 接口文档,更新 menu_torch_api.md 和 torch_api_list.md。 ## 关联需求 Issue 关联 Issue #7217 https://gitcode.com/cann/ops-transformer/issues/7217 See merge request: cann/ops-transformer!15425 | 4 days ago | |
Ascend960 combine RSW Co-authored-by: yezhuoxi<yezhuoxi@huawei.com> # message auto-generated for no-merge-commit merge: !13827 merge master into master Ascend960 combine RSW Created-by: yezhuoxi Commit-by: yezhuoxi Merged-by: cann-robot Description: ## 描述 Ascend960 combine算子使用 RSW特性 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7195 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13827 | 5 days ago | |
[cleancode]整仓替换OP_LOGE_WITH_INVALID_ATTR、OP_LOGE_WITH_INVALID_ATTR_SIZE等废弃宏 Co-authored-by: mutex_lock<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !15263 merge replace_obs_api into master [cleancode]整仓替换OP_LOGE_WITH_INVALID_ATTR、OP_LOGE_WITH_INVALID_ATTR_SIZE等废弃宏 Created-by: mutex_lock Commit-by: mutex_lock Merged-by: cann-robot Description: ## 描述 整仓替换 op_common/log/log.h 中已废弃的日志宏,迁移到文档推荐的新宏,避免后续日落删除导致编译失败。 ### 背景与原因 OP_LOGE_WITH_INVALID_ATTR / ATTR_SIZE / INPUT_FORMAT / INPUT_DTYPE 等接口已在 opbase 文档中标记废弃,并给出替代宏。仓内(含 mc2、moe、ffn、experimental)仍有大量调用,需统一切换。 ### 改动方法 仅做宏名替换,调用参数签名一致,不改校验逻辑: | 废弃宏 | 替代宏 | 约计次数 | |--------|--------|----------| | OP_LOGE_WITH_INVALID_ATTR | OP_LOGE_FOR_INVALID_VALUE | 230 | | OP_LOGE_WITH_INVALID_ATTR_SIZE | OP_LOGE_FOR_INVALID_LISTSIZE | 8 | | OP_LOGE_WITH_INVALID_INPUT_FORMAT | OP_LOGE_FOR_INVALID_FORMAT | 13 | | OP_LOGE_WITH_INVALID_INPUT_DTYPE | OP_LOGE_FOR_INVALID_DTYPE | 1 | 共修改 60 个文件,252 处;错误码/日志文案随新宏切换(如 ATTR→VALUE:EZ0002→EZ0024),属预期行为。 ### 涉及范围 - mc2/、moe/、ffn/、experimental/ 等 Host / OPAPI 侧调用点 - 均依赖同一 log/log.h(third_party/opbase/include/op_common/log/log.h) ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7092 ## 测试 - [x] 相关算子 Host / OPAPI UT(按需抽测) - [x] 二级冒烟 / 算子泛化(如有流水要求再补) - [x] 静态核对:旧宏在业务源码中无残留;新宏均在 log.h 中有定义;参数个数未变 ## 文档更新 无业务文档更新;依据 third_party/opbase 既有废弃说明完成迁移。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15263 | 5 days ago | |
[cleancode]整仓替换OP_LOGE_WITH_INVALID_ATTR、OP_LOGE_WITH_INVALID_ATTR_SIZE等废弃宏 Co-authored-by: mutex_lock<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !15263 merge replace_obs_api into master [cleancode]整仓替换OP_LOGE_WITH_INVALID_ATTR、OP_LOGE_WITH_INVALID_ATTR_SIZE等废弃宏 Created-by: mutex_lock Commit-by: mutex_lock Merged-by: cann-robot Description: ## 描述 整仓替换 op_common/log/log.h 中已废弃的日志宏,迁移到文档推荐的新宏,避免后续日落删除导致编译失败。 ### 背景与原因 OP_LOGE_WITH_INVALID_ATTR / ATTR_SIZE / INPUT_FORMAT / INPUT_DTYPE 等接口已在 opbase 文档中标记废弃,并给出替代宏。仓内(含 mc2、moe、ffn、experimental)仍有大量调用,需统一切换。 ### 改动方法 仅做宏名替换,调用参数签名一致,不改校验逻辑: | 废弃宏 | 替代宏 | 约计次数 | |--------|--------|----------| | OP_LOGE_WITH_INVALID_ATTR | OP_LOGE_FOR_INVALID_VALUE | 230 | | OP_LOGE_WITH_INVALID_ATTR_SIZE | OP_LOGE_FOR_INVALID_LISTSIZE | 8 | | OP_LOGE_WITH_INVALID_INPUT_FORMAT | OP_LOGE_FOR_INVALID_FORMAT | 13 | | OP_LOGE_WITH_INVALID_INPUT_DTYPE | OP_LOGE_FOR_INVALID_DTYPE | 1 | 共修改 60 个文件,252 处;错误码/日志文案随新宏切换(如 ATTR→VALUE:EZ0002→EZ0024),属预期行为。 ### 涉及范围 - mc2/、moe/、ffn/、experimental/ 等 Host / OPAPI 侧调用点 - 均依赖同一 log/log.h(third_party/opbase/include/op_common/log/log.h) ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7092 ## 测试 - [x] 相关算子 Host / OPAPI UT(按需抽测) - [x] 二级冒烟 / 算子泛化(如有流水要求再补) - [x] 静态核对:旧宏在业务源码中无残留;新宏均在 log.h 中有定义;参数个数未变 ## 文档更新 无业务文档更新;依据 third_party/opbase 既有废弃说明完成迁移。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15263 | 5 days ago | |
feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !14537 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子适配。适配原则:9201 支持的能力 9202 均支持。 **仓库级适配(原仓库完全缺失 960pr):** - CMakeLists:SOC_VERSION_LIST/ARCH_DIRECTORY_LIST/ASCEND_ALL_COMPUTE_UNIT 增加 ascend960pr(→arch35);arch92 目录路由由仅 960dt 扩展为 960dt/960pr 均生效(否则单独编 960pr 会走空包并漏编 arch92 kernel) - build.sh:SUPPORT_COMPUTE_UNIT_SHORT/SOC_HARDWARE_MAP(ascend960pr=Ascend960PR_969A1) - cmake/scripts/util:const_var.py SOC_MAP_EXT、opdesc_parser.py、ascendc_impl_build.py 同步补齐 **注册级适配(15 算子):** - def.cpp AddConfig、op_host/config/ascend960pr 二进制配置、op_host/CMakeLists.txt 编译选项块(COMPUTE_UNIT Ascend960PR_969A1) **代码级补齐:** - mhc 系列/gather_pa_kv_cache/scatter_pa_kv_cache/rotary fusion pass 等 DAV_9201 平台门禁补齐 DAV_9202 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7300 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已通过冒烟、UT、ST测试。 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-transformer!14537 | 5 days ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !15372 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共275个文件),为第一批(已合入)之外的其余全部译稿: - 新增263个英文译稿文件(含上游新增算子 attention/flash_kda_grad 的README与测试说明2篇,及14篇基于最新源文档的增量更新) - 重命名12个中文设计文档为英文名(Xxx算子设计介绍.md → Xxx_design.md,与第一批FFN_design.md策略一致) - 更新7个README中的设计文档引用链接 - 更新.pre-commit-config.yaml中codespell忽略词表 本批内全部仓内链接均指向master已有文件(含第一批已合入的42篇译稿),合入后本仓英文文档全部就位、链接完整生效。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验、残留中文/全角标点扫描、EOF换行规范检查,并完成逐篇翻译规范自查与独立语义审查(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增263个英文译稿文件、重命名12个中文设计文档、更新8个现有文件,不修改算子源码。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!15372 | 9 days ago | |
feat(mega_moe): A3 W4A8 路径支持 dispatch & combine 阶段通信去重(通信零冗余)特性 Co-authored-by: TensorSmith<yangbohan12@huawei.com> # message auto-generated for no-merge-commit merge: !14318 merge feature/megamoe-zr into master feat(mega_moe): A3 W4A8 路径支持 dispatch & combine 阶段通信去重(通信零冗余)特性 Created-by: TensorSmith Commit-by: TensorSmith Merged-by: cann-robot Description: ### 背景 MoE 推理中 topK 较大时,同一 token 以较高概率命中同一张目标卡上的多个专家;基线 MegaMoE 的 dispatch/combine 按行传输,跨卡冗余搬运占比可观(4 卡 topK8 实测约 26%~50%,与 950PR/DT 路径观察一致)。本特性在 Atlas A3 系列 W4A8 量化路径上消除该冗余:dispatch 侧同一 token 发往 同一目标卡只传输一次,combine 侧该卡上的多个专家输出在本卡按 FP32 累加后合并为一行发回, combine 阶段通信量从组内行数降为每 token 每源卡一行。 与 950PR/DT 系列既有去重能力(!12916)语义对齐:由属性 combine_comm_mode 控制,0=关闭 (默认,行为与基线逐位一致),1=开启。combine_comm_mode=1 时实际开启需同时满足能力约束 与收益门控,处置按「程序能否自动处置」分级:须人工调整的配置(支持路径、最小通信窗口) 不满足时算子在 tiling 阶段直接报错并给出建议值;程序可自动处置的情形不报错——单轮接收 不满足(手动配置 maxRecvTokenNum 过小)自动回基线并打 WARN 日志说明原因,收益门控 不达标(小 batch 等低收益形状)静默走基线并打一条 decision 日志——低收益/单轮不可行形状 由算子自动关回,调用方无需逐形状判断(与 950PR/DT 去重的收益门控语义一致)。 ### 行为矩阵 | 配置 | ccm=0(缺省) | ccm=1 | |---|---|---| | A3 + A8W4-INT,能力约束满足、收益门控达标 | 基线 | 去重开启 | | A3 + A8W4-INT,能力约束满足、收益门控不达标(小 batch 等低收益形状) | 基线 | 基线(decision 日志) | | A3 + A8W4-INT,单轮接收不满足(maxRecvTokenNum 过小) | 基线 | 基线(WARN 日志) | | A3 + A8W4-INT,最小通信窗口不满足 | 基线 | tiling 显式报错(附建议值) | | A3 + 其它量化场景(A8W8-INT/A16W16) | 基线 | tiling 显式报错 | | A2 系列 | 基线 | tiling 显式报错 | | 任意非法取值(非 0/1) | — | tiling 显式报错 | 能力约束(详见 README/torchapi 约束说明更新): - **单轮接收**:maxRecvTokenNum ≥ min(BS,1024) × epWorldSize × min(topK, localMoeExpertNum) (保持缺省值 0 时自动计算的取值恰好满足;手动配置过小时不报错,自动回退基线 + WARN 日志); - **通信窗口**:通信 buffer 满足去重布局的最小窗口需求(get_symm_buffer_for_mega_moe 在 ccm=1 时自动按去重布局计算); - **BS 一致**:所有卡的 BS 完全一致——不一致(即使均 ≥1024)会因通信 chunk 轮次/ 尾 chunk 布局步长不一致导致挂起或结果错位,各卡 BS 不一致的部署需上层补齐后再调用。 ### 精度口径 开启后同一 token 在同一卡上命中的多个专家输出改为在该卡按 FP32 加权累加后合并为一行发送: 与关闭态相比,除跨专家累加顺序外,加权位置与中间舍入次数也发生变化(关闭态:各专家输出先 量化为 BF16 再乘以 topk 权重;开启态:FP32 全程加权累加、末端一次舍入),即使 num_topk=1 结果也可能不同;y 与 ccm=0 不逐位相同属正常差异,两者与参考值的偏差均随输入而异,无一般性 优劣保证,精度按既有容差口径验收通过(与 950PR/DT 去重同口径)。需要与关闭态逐位一致时请 使用 ccm=0;关闭态与基线逐位一致(编译期双实例化,if constexpr 裁剪)。 ### 适用场景(开启建议) topK 较大、同一 token 命中同卡多个专家比例较高、性能瓶颈在通信的形状收益明显;小 batch 等低收益形状由收益门控自动关回基线,无需调用方逐形状判断,门控边界附近的边缘形状建议实测 后再决定。内部 EP8/EP16 × 4 模型 × bs{8..4096} 扫描实测:大 bs 响应类形状收益 2.8%~20.9% (EP8 档 flash bs2048 收益最大 −20.9%;单机 4 卡 EP4 形态同 bs 达 −29.9%,4366→3062 μs), 小 bs 有 0.7%~12.9% 开销(收益门控即按此标定,将低收益形状挡在开启之外)。 ### 验证摘要 - 精度(EP8,双标杆四指标 + output_1 逐位等 golden):K3 真实形状 bs64/bs4096 ccm{0,1} 全过; 开启臂误差指标与关闭臂可区分(证去重路径实跑)。 - 负例:ccm=2 / 非 W4A8 路径 + ccm=1 / 最小窗口不满足 + ccm=1 均在 tiling 显式拒绝, 各 ccm=0 控制组全过;单轮不满足 + ccm=1 断言自动回基线(tiling 成功、去重字段全 0)。 - UT:arch22 tiling UT 覆盖取值/路径校验、单轮不满足自动回退断言、去重开启时的布局字段 透传与收益门控回退。 - 关闭路径与基线逐位一致经专项闸门验证(双实例化裁剪 + 逐位比对;EP8 复验:ccm=0 与 ccm=1@bs8(门控关回)输出逐位一致,ccm=1@bs1024 输出不同、精度验收通过)。 See merge request: cann/ops-transformer!14318 | 5 days ago | |
fix(text_gated_residual_grad): keep API helpers internally linked Co-authored-by: azyuli<zhengyuli1@huawei.com> # message auto-generated for no-merge-commit merge: !15652 merge fix-text-gated-residual-grad-helper-linkage into master fix(text_gated_residual_grad): keep API helpers internally linked Created-by: azyuli Commit-by: azyuli Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnn文件的函数加上static ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ×] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15652 | 4 days ago | |
feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !14537 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子适配。适配原则:9201 支持的能力 9202 均支持。 **仓库级适配(原仓库完全缺失 960pr):** - CMakeLists:SOC_VERSION_LIST/ARCH_DIRECTORY_LIST/ASCEND_ALL_COMPUTE_UNIT 增加 ascend960pr(→arch35);arch92 目录路由由仅 960dt 扩展为 960dt/960pr 均生效(否则单独编 960pr 会走空包并漏编 arch92 kernel) - build.sh:SUPPORT_COMPUTE_UNIT_SHORT/SOC_HARDWARE_MAP(ascend960pr=Ascend960PR_969A1) - cmake/scripts/util:const_var.py SOC_MAP_EXT、opdesc_parser.py、ascendc_impl_build.py 同步补齐 **注册级适配(15 算子):** - def.cpp AddConfig、op_host/config/ascend960pr 二进制配置、op_host/CMakeLists.txt 编译选项块(COMPUTE_UNIT Ascend960PR_969A1) **代码级补齐:** - mhc 系列/gather_pa_kv_cache/scatter_pa_kv_cache/rotary fusion pass 等 DAV_9201 平台门禁补齐 DAV_9202 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7300 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已通过冒烟、UT、ST测试。 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-transformer!14537 | 5 days ago | |
feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !14537 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子适配。适配原则:9201 支持的能力 9202 均支持。 **仓库级适配(原仓库完全缺失 960pr):** - CMakeLists:SOC_VERSION_LIST/ARCH_DIRECTORY_LIST/ASCEND_ALL_COMPUTE_UNIT 增加 ascend960pr(→arch35);arch92 目录路由由仅 960dt 扩展为 960dt/960pr 均生效(否则单独编 960pr 会走空包并漏编 arch92 kernel) - build.sh:SUPPORT_COMPUTE_UNIT_SHORT/SOC_HARDWARE_MAP(ascend960pr=Ascend960PR_969A1) - cmake/scripts/util:const_var.py SOC_MAP_EXT、opdesc_parser.py、ascendc_impl_build.py 同步补齐 **注册级适配(15 算子):** - def.cpp AddConfig、op_host/config/ascend960pr 二进制配置、op_host/CMakeLists.txt 编译选项块(COMPUTE_UNIT Ascend960PR_969A1) **代码级补齐:** - mhc 系列/gather_pa_kv_cache/scatter_pa_kv_cache/rotary fusion pass 等 DAV_9201 平台门禁补齐 DAV_9202 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7300 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已通过冒烟、UT、ST测试。 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-transformer!14537 | 5 days ago | |
fix(package): remove runtime builtin AICPU json on uninstall Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !15523 merge fix/uninstall-runtime-aicpu-json into master fix(package): remove runtime builtin AICPU json on uninstall Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 补充清理 built-in AICPU 运行时生成的 builtin_cust_aicpu.json。 在 built-in AICPU 机制安装后,ops-transformer 会在以下路径安装配置和 device kernel: text opp/built-in/op_impl/aicpu/config/aicpu_transformer.json opp/built-in/op_impl/aicpu/kernel/libtransformer_aicpu_kernels.so 其中 aicpu_transformer.json 的算子配置使用: json "opKernelLib": "CUSTAICPUKernel" CANN AICPU 引擎在加载 built-in custom AICPU kernel 时,会在 built-in AICPU config 目录下生成或更新运行时文件: text opp/built-in/op_impl/aicpu/config/builtin_cust_aicpu.json 该文件不是 ops-transformer 安装包清单中的文件,而是运行时生成的 AICPU 配置产物。现有卸载逻辑只清理 aicpu_transformer.json 和 libtransformer_aicpu_kernels.so,导致 builtin_cust_aicpu.json 在卸载后残留。 本 PR 在 remove_builtin_aicpu_files() 中补充一行精确删除: bash rm -f "${aicpu_impl_path}/config/builtin_cust_aicpu.json" 目录仍然只在为空时删除,不影响同目录下基础 CANN 包共享文件。 ## 关联的Issue 7276 ## 测试 ### 构建命令 bash source /home/anaconda3/etc/profile.d/conda.sh conda activate pec_py310 source /home/qzy/cann/set_env.sh bash build.sh --pkg --soc=ascend910_93 \ -n mixed_quant_sparse_flash_mla_metadata,block_sparse_attention \ -j16 结果:通过,Build pkg success。 构建日志包含: text add_aicpu_cust_kernel_modules for mixed_quant_sparse_flash_mla_metadata_cust_obj Merging aicpu json inputs into .../aicpu_transformer.json Linking cust_aicpu_kernels.so using ARM toolchain Build pkg success ### 卸载验证 模拟安装目录中存在以下三个文件: text config/aicpu_transformer.json config/builtin_cust_aicpu.json kernel/libtransformer_aicpu_kernels.so 执行安装: bash bash build_out/cann-A3-ops-transformer_9.2.0_linux-aarch64.run \ --quiet --full \ --install-path=/tmp/builtin_cust_json_fix_test 结果:通过,install_exit=0。 执行卸载: bash bash build_out/cann-A3-ops-transformer_9.2.0_linux-aarch64.run \ --quiet --uninstall \ --install-path=/tmp/builtin_cust_json_fix_test 结果:通过,uninstall_exit=0。 卸载后检查: bash find /tmp/builtin_cust_json_fix_test/cann/opp/built-in/op_impl/aicpu \ -maxdepth 2 结果:无输出。 说明以下三个文件均被清理: text aicpu_transformer.json builtin_cust_aicpu.json libtransformer_aicpu_kernels.so ### 验证结果汇总 | TC | 内容 | 结果 | |---|---|---| | TC-01 | 构建 AICPU built-in 包 | ✅ | | TC-02 | 安装成功 | ✅ | | TC-03 | 卸载成功 | ✅ | | TC-04 | builtin_cust_aicpu.json 被清理 | ✅ | | TC-05 | transformer AICPU json/so 被清理 | ✅ | | TC-06 | 空目录清理,不影响共享文件 | ✅ | ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15523 | 5 days ago | |
feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !14537 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子适配。适配原则:9201 支持的能力 9202 均支持。 **仓库级适配(原仓库完全缺失 960pr):** - CMakeLists:SOC_VERSION_LIST/ARCH_DIRECTORY_LIST/ASCEND_ALL_COMPUTE_UNIT 增加 ascend960pr(→arch35);arch92 目录路由由仅 960dt 扩展为 960dt/960pr 均生效(否则单独编 960pr 会走空包并漏编 arch92 kernel) - build.sh:SUPPORT_COMPUTE_UNIT_SHORT/SOC_HARDWARE_MAP(ascend960pr=Ascend960PR_969A1) - cmake/scripts/util:const_var.py SOC_MAP_EXT、opdesc_parser.py、ascendc_impl_build.py 同步补齐 **注册级适配(15 算子):** - def.cpp AddConfig、op_host/config/ascend960pr 二进制配置、op_host/CMakeLists.txt 编译选项块(COMPUTE_UNIT Ascend960PR_969A1) **代码级补齐:** - mhc 系列/gather_pa_kv_cache/scatter_pa_kv_cache/rotary fusion pass 等 DAV_9201 平台门禁补齐 DAV_9202 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7300 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已通过冒烟、UT、ST测试。 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-transformer!14537 | 5 days ago | |
fix(torch_extension): 修复带点号算子重复注册导致缺依赖时主包导入失败 Co-authored-by: Leeshoujem<michael.lixiaojie@huawei.com> # message auto-generated for no-merge-commit merge: !15444 merge fix/torch-ext-dotted-op-register-check into master fix(torch_extension): 修复带点号算子重复注册导致缺依赖时主包导入失败 Created-by: Leeshoujem Commit-by: Leeshoujem Merged-by: cann-robot Description: ## 描述 修复 torch_extension 在缺底层依赖时,因带点号算子(如 ds41.indexer_prologue_qw)重复注册导致 import cann_ops_transformer 失败的问题(关联 #7140 / #6994)。 **原因:** 1. OpBuilder 用 hasattr(torch.ops.cann_ops_transformer, "ds41.xxx") 判断是否已注册;点号名在 PyTorch 中是分层命名空间,该检查恒为 False,导入失败后 schema 残留再初始化会二次 Library.define。 2. entry-point 路径的 _load_op 在接口 import 失败后仍继续加载 graph_convert_*,再次触发失败模块初始化,放大为 Duplicate registration,掩盖原始缺依赖错误。 **改动:** 1. op_builder/builder.py:新增 _is_op_registered(),按 . 逐层检查算子是否已注册。 2. ops/__init__.py:entry-point 加载失败时提前 return,不再拉 graph_convert_*。 缺依赖时应只报告依赖缺失;依赖齐全时 K/QW 等接口可正常导入,不再出现重复注册。 ## 关联的Issue 关联Issue [#6994](https://gitcode.com/cann/ops-transformer/issues/6994) [#7140](https://gitcode.com/cann/ops-transformer/issues/7140) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15444 | 5 days ago | |
feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12834 merge fix_2 into master feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5016 ## 描述 #### 🐛 Bug 修复 / ✨ 特性增强 围绕既有 pre-commit 体系的三处完善(8 文件 +38/-12,1 笔提交):**拦截类钩子报告落盘**、**脚本健壮性修复**、**策略与文档对齐**。全部经 --all-files 全量实测校准。 ### 一、拦截类钩子报告统一落盘 pre-commit_reports/(不入 git) | 改动 | 内容 | |---|---| | scripts/run_codespell.sh(新增) | codespell 输出 tee 到 pre-commit_reports/codespell.log(entry 覆写仍跑托管 venv,PIPESTATUS 保退出码) | | .pre-commit-config.yaml | codespell entry 指向包装脚本 | | scripts/oat_check.sh | 报告落点 oat_reports/result.txt → pre-commit_reports/oat_result.txt(单文件与批量两条写路径同步) | | .gitignore | oat_reports/ → pre-commit_reports/ | | docs/zh/develop/pre-commit_guide.md | 失败排查节补报告位置说明 | 自动修类钩子(clang-format/ruff)直接改好文件无需报告;拼写/合规须人工处理,报告落盘便于复查与喂给 agent 修复。 ### 二、健壮性修复(姊妹仓全量实测暴露的同款隐患) | 改动 | 内容 | |---|---| | scripts/oat_check.sh | eval 拼接改数组传参 + -f 加引——文件名含 ()/&/[]/空格时 eval 会打断 shell 致扫描假死/假过(本仓当前 0 此类文件名,防御性修复) | | scripts/format_cpp.sh | 目录不存在时原仅打印提示仍继续执行,改为报错退出(exit 1) | ### 三、策略与文档对齐 | 改动 | 内容 | |---|---| | OAT.xml | 豁免 requirements*.txt(依赖清单,双过滤器)、*.info(cmake help,双过滤器)——全量扫描 250→240,残留均为真实缺头债(增量消化) | | trailing-whitespace | 补 --markdown-linebreak-ext=md(防静默剥掉 md 双空格硬换行语法,实测:双空格保留、三空格收敛、单空格照删) | | .clang-format | PointerAlignment 改 **Left**(int* p 指针随类型,领导确认口径;引用 & 同规则);年份 2025→2026 | ## 测试 - 全量 OAT 16 批真实扫描(无双误退出码);缺头 py 拦截有效、豁免类型放行 - md 双空格保留实测通过;codespell 命中落盘、OAT 报告落盘且目录不被 git 跟踪 - 本提交自身过全部钩子(含 OAT);yaml/xml/bash 语法全过 ## 留作仓主决策(本 PR 不动) - ruff --ignore 现行清单含 F841,F821,F401 等 F 系列——skills-dev 口径为「F 系列全启用抓真 bug」,两仓策略不同,建议仓主确认后另行统一 - third_party/catlass、third_party/opbase 下同名 oat_check.sh 为上游副本,未动 ## 类型标签 - [x] 🐛 Bug 修复 - [x] ✨ 特性增强 See merge request: cann/ops-transformer!12834 | 1 month ago | |
产品文档png文件名改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9654 merge master into master 产品文档png文件名改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3899](https://gitcode.com/cann/ops-transformer/issues/3899) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9654 | 3 months ago | |
feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !14537 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子适配ascend960pr(DV122)平台并补齐仓库级960pr支持 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子适配。适配原则:9201 支持的能力 9202 均支持。 **仓库级适配(原仓库完全缺失 960pr):** - CMakeLists:SOC_VERSION_LIST/ARCH_DIRECTORY_LIST/ASCEND_ALL_COMPUTE_UNIT 增加 ascend960pr(→arch35);arch92 目录路由由仅 960dt 扩展为 960dt/960pr 均生效(否则单独编 960pr 会走空包并漏编 arch92 kernel) - build.sh:SUPPORT_COMPUTE_UNIT_SHORT/SOC_HARDWARE_MAP(ascend960pr=Ascend960PR_969A1) - cmake/scripts/util:const_var.py SOC_MAP_EXT、opdesc_parser.py、ascendc_impl_build.py 同步补齐 **注册级适配(15 算子):** - def.cpp AddConfig、op_host/config/ascend960pr 二进制配置、op_host/CMakeLists.txt 编译选项块(COMPUTE_UNIT Ascend960PR_969A1) **代码级补齐:** - mhc 系列/gather_pa_kv_cache/scatter_pa_kv_cache/rotary fusion pass 等 DAV_9201 平台门禁补齐 DAV_9202 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7300 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已通过冒烟、UT、ST测试。 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-transformer!14537 | 5 days ago | |
master英文合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14969 merge master into master master英文合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 商发的英文文档合入 ## 关联的Issue 关联Issue [#6488](https://gitcode.com/cann/ops-transformer/issues/6488) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14969 | 16 days ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !15372 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共275个文件),为第一批(已合入)之外的其余全部译稿: - 新增263个英文译稿文件(含上游新增算子 attention/flash_kda_grad 的README与测试说明2篇,及14篇基于最新源文档的增量更新) - 重命名12个中文设计文档为英文名(Xxx算子设计介绍.md → Xxx_design.md,与第一批FFN_design.md策略一致) - 更新7个README中的设计文档引用链接 - 更新.pre-commit-config.yaml中codespell忽略词表 本批内全部仓内链接均指向master已有文件(含第一批已合入的42篇译稿),合入后本仓英文文档全部就位、链接完整生效。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验、残留中文/全角标点扫描、EOF换行规范检查,并完成逐篇翻译规范自查与独立语义审查(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增263个英文译稿文件、重命名12个中文设计文档、更新8个现有文件,不修改算子源码。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!15372 | 9 days ago | |
fix(cmake): 补装 a6 适配 py 并统一 a6 源码目录登记 Co-authored-by: waker<lizhengjun7@h-partners.com> # message auto-generated for no-merge-commit merge: !15323 merge fix-py-install into master fix(cmake): 补装 a6 适配 py 并统一 a6 源码目录登记 Created-by: wanker Commit-by: waker Merged-by: cann-robot Description: ## 背景 线上回黄(BUILD_OPS_RTY_KERNEL)编出的 ascend960dt 包中缺少 moe_distribute_dispatch_v2_a6.py 等 A6 适配 py。 排查确认:py 已由 generate_transformer_adapt_py 生成到 build/impl/dynamic/,但两条打包路径的 install 白名单只包含 .py / _a2 / _a3 / _apt,_a6.py 在安装阶段被丢弃。 ## 修改内容 1. CMakeLists.txt:回黄路径的安装后缀列表增加 a6。 2. cmake/custom_build.cmake:custom 路径补装 <op>_a6.py。 3. cmake/func.cmake:add_bin_compile_target 统一登记 <op>_a6_dir,避免各算子手工 set(... PARENT_SCOPE)。 4. 移除 moe_distribute_dispatch_v2 / moe_distribute_dispatch_v3 / moe_distribute_combine_add_rms_norm 中重复的 _a6_dir 定义。 ## 验证 - 保留各算子的 un-suffixed _depends,host 侧符号链接与依赖 kernel 头文件安装行为不变。 - --pkg --soc=ascend960dt 后,build/impl/dynamic/ 与安装树 dynamic/ 均出现 moe_distribute_dispatch_v2_a6.py。 - 其余 SoC(910b / 910_93 / 950)无行为变化。 ## 影响范围 仅影响 A6(ascend960dt / ascend960pr)适配 py 的安装。 See merge request: cann/ops-transformer!15323 | 8 days ago | |
docs: CONTRIBUTING新增算子分类与贡献区别章节,补充生态算子覆盖率与用例上库要求 Co-authored-by: wang-minbo<wangminbo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !14305 merge docs/contributing-builtin-experimental into master docs: CONTRIBUTING新增算子分类与贡献区别章节,补充生态算子覆盖率与用例上库要求 Created-by: wang-minbo Commit-by: wang-minbo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/6942 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14305 | 13 days ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !15306 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第一批,共42个被其他译稿引用的文件):根README_en.md、CONTRIBUTING_en.md、SECURITY_en.md;各算子设计文档英文版(ChunkKdaFwd/FA/FAG/MlaProlog/FFN/AllGatherAdd等design文档)及ascendir系列接口文档;examples系列说明(含fast_kernel_launch_example、mc2/all_gather_add、flash_attn L0_minimal等);以及gmm/grouped_matmul_activation、attention/nsa_compress_attention_infer、attention/nsa_compress_with_cache、attention/recurrent_kda、ffn/ffn、mhc/mhc_sinkhorn、posembedding/partial_rotary_mul_quant共7个算子的README译稿与相关测试/示例说明。 本批为后续批量英文文档提交做前置:本批文件合入master后,其余281篇译稿中的仓内链接(均指向master已有文件或本批文件)即可生效,避免链接失效拦截。7个算子相关文档已全部集中于本批提交,未拆散。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(第一批内全部相对链接仅指向master已有文件或本批新增文件),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增41个英文译稿文件,重命名1个中文设计文档(ffn/ffn/docs/FFN算子设计介绍.md → FFN_design.md),不修改其他任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!15306 | 10 days ago | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 4 months ago | |
fix(pre-commit): 全仓OAT合规整改——许可证/版权头存量修复与豁免策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13363 merge fix_3 into master fix(pre-commit): 全仓OAT合规整改——许可证/版权头存量修复与豁免策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5885 ## 描述 全仓 OAT 合规整改( pre-commit run oat-check --all-files 从 200 条问题清零): **1. OAT.xml 豁免策略对齐**(仅新增 6 行 filteritem,零删除): - experimental/.*:孵化目录豁免 license/copyright/binary 三类检查(含 swiglu_gated_mlp 等第三方 Apache-2.0 双版权贡献代码,策略上不归管) - *.jpg:文档图片豁免二进制拦截(与已有 *.png 一致) - LICENSE:许可证正文本身,豁免许可证头检查 - Third_Party_Open_Source_Software_Notice:第三方声明文件,豁免版权头检查 **2. 文件头修复(167 个源文件)**: - 旧版许可证头(redistribute it and/or modify. 句式,2026-03 入库、04-03 OAT 上线前时间差遗留)→ 标准 CANN V2 头 - 变体错别字:Copyend (c)、You can not use、in in compliance、free software; 分号、CANN 1.0 许可证等 - 无头文件补标准头(如 golden.py、executor_aclnnMoeFusedTopk.py) - 版权年保留各文件原有年份;CRLF/混合行尾文件逐字节保持原行尾,diff 仅头部 **3. 历史遗留原因**:存量问题多经网页端合并(不触发本地钩子)或 OAT 上线前入库积累。 ## 验证 - pre-commit run oat-check --all-files:9 个批次全部 0 issue,Passed - git pc HEAD~1 + 显式 pre-commit run --files 复核收敛,第 2 笔为 clang-format/ruff/end-of-files 自动修复 - py/sh 语法、OAT.xml XML 合法性校验通过 基线 master:d9d81a50a See merge request: cann/ops-transformer!13363 | 1 month ago | |
remove README 文件中NPUFlashAttention的失效链接 Co-authored-by: wym_666<wangyumei11@huawei.com> # message auto-generated for no-merge-commit merge: !14157 merge readme into master remove README 文件中NPUFlashAttention的失效链接 Created-by: wym_666 Commit-by: wym_666 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> remove README 文件中NPUFlashAttention的失效链接 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#5932](https://gitcode.com/cann/ops-transformer/issues/5932) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14157 | 26 days ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !15306 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第一批,共42个被其他译稿引用的文件):根README_en.md、CONTRIBUTING_en.md、SECURITY_en.md;各算子设计文档英文版(ChunkKdaFwd/FA/FAG/MlaProlog/FFN/AllGatherAdd等design文档)及ascendir系列接口文档;examples系列说明(含fast_kernel_launch_example、mc2/all_gather_add、flash_attn L0_minimal等);以及gmm/grouped_matmul_activation、attention/nsa_compress_attention_infer、attention/nsa_compress_with_cache、attention/recurrent_kda、ffn/ffn、mhc/mhc_sinkhorn、posembedding/partial_rotary_mul_quant共7个算子的README译稿与相关测试/示例说明。 本批为后续批量英文文档提交做前置:本批文件合入master后,其余281篇译稿中的仓内链接(均指向master已有文件或本批文件)即可生效,避免链接失效拦截。7个算子相关文档已全部集中于本批提交,未拆散。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(第一批内全部相对链接仅指向master已有文件或本批新增文件),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增41个英文译稿文件,重命名1个中文设计文档(ffn/ffn/docs/FFN算子设计介绍.md → FFN_design.md),不修改其他任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!15306 | 10 days ago | |
fix: 修复离线场景三方件下载与在线构建URL不一致问题 Co-authored-by: Leeshoujem<michael.lixiaojie@huawei.com> # message auto-generated for no-merge-commit merge: !14028 merge fix/offline-3rd-party-download into master fix: 修复离线场景三方件下载与在线构建URL不一致问题 Created-by: Leeshoujem Commit-by: Leeshoujem Merged-by: cann-robot Description: ## 描述 fix: 修复离线场景三方件下载与在线构建URL不一致问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14028 | 25 days ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !15306 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第一批,共42个被其他译稿引用的文件):根README_en.md、CONTRIBUTING_en.md、SECURITY_en.md;各算子设计文档英文版(ChunkKdaFwd/FA/FAG/MlaProlog/FFN/AllGatherAdd等design文档)及ascendir系列接口文档;examples系列说明(含fast_kernel_launch_example、mc2/all_gather_add、flash_attn L0_minimal等);以及gmm/grouped_matmul_activation、attention/nsa_compress_attention_infer、attention/nsa_compress_with_cache、attention/recurrent_kda、ffn/ffn、mhc/mhc_sinkhorn、posembedding/partial_rotary_mul_quant共7个算子的README译稿与相关测试/示例说明。 本批为后续批量英文文档提交做前置:本批文件合入master后,其余281篇译稿中的仓内链接(均指向master已有文件或本批文件)即可生效,避免链接失效拦截。7个算子相关文档已全部集中于本批提交,未拆散。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(第一批内全部相对链接仅指向master已有文件或本批新增文件),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增41个英文译稿文件,重命名1个中文设计文档(ffn/ffn/docs/FFN算子设计介绍.md → FFN_design.md),不修改其他任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!15306 | 10 days ago | |
支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Co-authored-by: lidongsheng<lidongsheng43@huawei.com> Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2170 merge 910_lds into master 支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Created-by: qq_46353993 Commit-by: 吴剑飞;lidongsheng Merged-by: cann-robot Description: ## 描述 本次修改支持用户通过build.sh的编译入口传入模板参数--kernel_template_input后按tilingkey编译、传入--bisheng_flags进行调试异常 ## 关联的Issue [支持按模板参数指定编译kernel](https://gitcode.com/cann/ops-transformer/issues/1036) [支持编译入参新增调试异常和调优参数](https://gitcode.com/cann/ops-transformer/issues/1044) ## 测试 二级冒烟、指定模板参数编译并执行测试用例 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!2170 | 8 months ago | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 4 months ago | |
perf(cmake): 将 DSL Host 发布移到构建阶段 Co-authored-by: sky-zyh<zhangyuhan45@huawei.com> # message auto-generated for no-merge-commit merge: !15491 merge perf/dsl-build-scheduling into master perf(cmake): 将 DSL Host 发布移到构建阶段 Created-by: sky-zyh Commit-by: sky-zyh Merged-by: cann-robot Description: ## 改动 - **并行度。** build.sh -jN 通过 CMake 传给 OpKit,限制单次调用中 DSL lowering 和 Device 编译各自的并发数。有可用 jobserver 时,DSL 任务与其他构建目标共享父构建的并行额度。 Unix Makefiles 沿用仓库现有的 $(MAKE) 递归规则传递 jobserver,不依赖 CMake 3.28 的 JOB_SERVER_AWARE。 - **Host 构建与链接。** CMake 配置阶段生成产物清单,构建阶段按依赖生成 Native .a 和 ACLNN C++ 源文件。Host 动态库直接链接 .a,ACLNN 按清单编译源文件。发布前核对实际产物是否与清单一致。 ## 构建实测 Ascend950 / CANN 9.3.0。固定 MQSMLA 源码为 ops-transformer #15301 的 de472ccf649bc426754d6e19929178b825ede493,覆盖 36 个特化。B/C/D 和 A+ 都只补入同一份 DSL 源码与最小注册(禁止重复遍历 op_dsl,从已有 op_host 注册一次)。原样 A 没有这份 DSL 源码,未修改。 bash build.sh --pkg --ops=mixed_quant_sparse_flash_mla --soc=ascend950 -j32 。各轮使用新构建目录、独立空 DSL/XDG 缓存,CCACHE_DISABLE=1,只允许同轮复用;SDK、毕昇、Host C++、LLVM/MLIR 与第三方依赖固定。 | 组 | cannbot-dsl-dev SHA | ops-transformer SHA | DSL 耗时 | Lowering | Device | passes | 并发峰值(passes / Device) | PSS 峰值 | |---|---|---|---:|---:|---:|---:|---:|---:| | A 原样 master | f1271445f16b0d939135d55e6c71bb19501657e5 | a85177f36e7a79cfa2662496afa4587391ef14cd | 无 DSL 目标 | — | — | 0 | — | — | | A+ 可比 master | f1271445f16b0d939135d55e6c71bb19501657e5 | a85177f36e7a79cfa2662496afa4587391ef14cd | 3095.26 s | 2982.05 s | 100.79 s | 108 | 1 / 1 | 5.43 GiB | | B 原 PR | 94de8c43a2e62ec0265eb9c60cedd86873852b15 | 7d22f6463562b1ce45fa602949bc2d176fe78acd | 259.85 s | 142.28 s | 111.07 s | 36 | 9 / 1 | 5.14 GiB | | C jobs + Device 并行 | c159bccb7ce3f60d868ae0b752405366eb0419c9 | d0d6c13dedc2be64bcc1426e086015b238814b4f | 155.73 s | 141.78 s | 5.74 s | 36 | 9 / 32 | 4.73 GiB | | D 实测提交 | ad8b9ead2f0abef752adac98a9519f1850e18619 | 66191da9f32438f91be4783da1d3cebb7f1ea822 | 162.94 s | 149.54 s | 6.28 s | 36 | 9 / 30 | 4.66 GiB | A 的标准命令退出 0,仅构建同名 Ascend C 算子;包含 ASC 和打包的完整墙钟为 420.64 s,无 DSL 指标。主指标从启动到最后一个 DSL 构建标记;不会等待 ASC 或 .run 打包完成。原 ASC 与 DSL 同时执行的时段按墙钟记录。Lowering 是三路区间的并集,Device 含毕昇和 ABI/元数据校验;PSS 为 DSL 计时窗口内构建进程树的采样峰值。 | 对照 | 节省时间 | 耗时降幅 | 加速比 | |---|---:|---:|---:| | D 相对 A+,总收益 | +2932.32 s | +94.74% | 18.997× | | D 相对 B,本轮收益 | +96.91 s | +37.30% | 1.595× | | C 相对 B,参数传递与 Device 并行 | +104.12 s | +40.07% | 1.669× | | D 相对 C,jobserver 净变化 | -7.21 s | -4.63% | 0.956× | 首轮 C 为 174.23 s,首轮 D(最终修订前)为 157.95 s。表中使用同样的 C 提交和最终 D 提交的冷复测。不同轮的 lowering 有波动,最终 D 与共享主机上 A+ 的原 ASC 编译有重叠;不将秒级差异全部归因于调度。jobserver 的稳定作用是共享预算。 See merge request: cann/ops-transformer!15491 | 5 days ago | |
删除dispatch/combine_setup/teardown aclnn接口,graph文件 Co-authored-by: jiangxiuhan1<jiangxiuhan@huawei.com> # message auto-generated for no-merge-commit merge: !12568 merge issue into master 删除dispatch/combine_setup/teardown aclnn接口,graph文件 Created-by: jiangxiuhan1 Commit-by: jiangxiuhan1 Merged-by: cann-robot Description: ## 描述 moe_distribute_dispatch_setup,moe_distribute_dispatch_teardown,moe_distribute_combine_setup,moe_distribute_combine_teardown算子经评审日落,删除相关算子aclnn接口,graph文件。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6943 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12568 | 13 days ago | |
update cmake minimum required to 3.18.4 Co-authored-by: poorwill<wangbing110@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master update cmake minimum required to 3.18.4 Created-by: wangbing110 Commit-by: poorwill Merged-by: cann-robot Description: update cmake minimum required to 3.18.4 See merge request: cann/ops-transformer!9634 | 3 months ago | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 4 months ago | |
fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Co-authored-by: gao19871128<1897001@qq.com> # message auto-generated for no-merge-commit merge: !15126 merge master into master fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Created-by: gao19871128 Commit-by: gao19871128 Merged-by: cann-robot Description: ## 描述 fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15126 | 12 days ago | |
check_compile_version Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2085 merge check_version into master check_compile_version Created-by: hid81635372 Commit-by: 吴剑飞 Merged-by: cann-robot Description: ## 描述 工程上支持在编译时对子包版本进行校验 ## 关联的Issue https://gitcode.com/cann/ops-transformer/pull/2085 ## 测试 功能上可以在子包版本低于构建依赖时进行告警,RDV已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 工程能力增加编译时版本校验功能 See merge request: cann/ops-transformer!2085 | 8 months ago |
🔥Latest News
- [2026/08] The repository integrates the pre-commit code check framework. After configuration,
git commitautomatically checks and fixes format issues, intercepting specification issues at the commit stage and improving code merge efficiency. For details, see the pre-commit configuration guide. - [2026/07] The quant_flash_attn operator is newly supported on A5, dedicated to the fully quantized Dense Attention scenario. The experimental directory adds an operator with the same name that supports MxFP4 full quantization on A5. The chunk_gated_delta_rule operator supports A5. A5 adds the DSV4 dense training-stage TopK filtering backward operators dense_lightning_indexer_grad_kl_loss and dense_lightning_indexer_softmax_lse. mc2 newly supports the engram_fetch_grad operator.
- [2026/06] sparse_flash_mla, mixed_quant_sparse_flash_mla, and the corresponding metadata operators are newly supported on A5 for sparse Attention computation in the DSV4 scenario. lightning_indexer_v2, quant_lightning_indexer_v2, and the corresponding metadata operators are added for TopK filtering in the DSV4 scenario. A5 adds the DSV4 sparse training-stage Attention backward operators sparse_flash_mla_grad and sparse_lightning_indexer_kl_loss_grad. mc2 newly supports the engram_fetch and engram_fetch_wait operators.
- [2026/05] The fused_infer_attention_score operator supports MxFP8 full quantization on A5. The flash_attn operator is newly supported on A5, dedicated to the non-quantized Dense Attention scenario.
- [2026/04] mc2 newly supports the mega_moe operator.
- [2026/03] The recurrent_gated_delta_rule operator supports A5.
- [2026/02] Newly supported operators: mhc_post, mhc_pre, and mhc_res.
- [2026/01] Added the grouped_matmul<<<>>> invocation example for convenient customized use.
- [2026/01] Newly supported operators: fused_floyd_attention, fused_floyd_attention_grad, and matmul_allto_all.
- [2025/12] Added QuickStart, which guides beginners with zero experience through operator project deployment (Docker environment supported), operator development, and the contribution process.
- [2025/12] Optimized the guide documents, focusing on the Operator Development Guide, clarifying the minimal deliverables and key sample code, and providing guidance on migrating operators from the Ascend/samples repository to this project.
- [2025/12] Supports transformer-type ONNX operator plugins, including NPUMultiHeadAttention, NPUMoeComputeExpertTokens, and so on.
- [2025/12] Newly supported operators: kv_rms_norm_rope_cache, attention_update, attention_worker_scheduler, gather_pa_kv_cache, kv_quant_sparse_flash_attention, lightning_indexer_grad, mla_preprocess, mla_preprocess_v2, grouped_matmul_swiglu_quant_v2, attention_to_ffn, and ffn_to_attention.
- [2025/12] Open-source operators support development and debugging with the NPU Simulator simulation tool.
- [2025/12] Open-source operators support the Ascend 950PR&950DT products/KirinX90 products.
- [2025/11] Newly supported operators: kv_quant_sparse_flash_attention, lightning_indexer, quant_lightning_indexer, and sparse_flash_attention.
- [2025/11] Added the sample operators rope_matrix and all_gather_add.
- [2025/11] Added the operator development project template NpuOpsTransformerExt, which seamlessly integrates PyTorch tensor operations and supports automatic differentiation and a unified GPU/NPU interface.
- [2025/10] Added the experimental directory and improved the Contribution Guide, allowing developers to debug and contribute custom operators.
- [2025/09] The ops-transformer project goes online for the first time, with open-source operators supporting Atlas A2/A3 products.
🚀Overview
ops-transformer is an advanced operator library in the CANN (Compute Architecture for Neural Networks) operator library that provides computation for transformer-type large models. It includes the attention, moe, and mc2 operator categories, covering various scenarios such as attention computation, MoE computation, and communication-computation fusion. The position of the operator library in the architecture diagram is as follows.

📌Version Compatibility
The source code of this project is released along with CANN software versions. For the mapping between CANN software versions and tags of this project, refer to the corresponding version descriptions in the release repository. Note that to ensure smooth customized development of your source code, select a compatible CANN version and the source code of the corresponding Gitcode tag. Using the master branch may cause version mismatch risks.
🛠️Environment Preparation
Environment deployment is the prerequisite for experiencing the capabilities of this project. Complete the NPU driver and CANN package installation first to ensure that the environment works properly.
⬇️Source Code Download
After the environment is ready, download the branch source code that matches the CANN version. The general command is as follows, where ${tag_version} is replaced with the branch tag name. The following uses downloading the 9.0.0 branch source code as an example:
# General command: git clone -b ${tag_version} https://atomgit.com/cann/ops-transformer.git
git clone -b 9.0.0 https://atomgit.com/cann/ops-transformer.git
Description: If the compatible branch source code already exists in the environment, you can skip this step. For example, CANNLab provides the source code corresponding to the latest CANN version by default.
📖Learning Tutorials
- Quick Start: Quickly experience the core basic capabilities of the project from scratch, covering source code compilation, operator invocation, development, debugging, and other operations.
- Advanced Tutorials: If you need to learn more about project compilation and deployment, operator invocation, development, debugging and tuning, and other capabilities, see the documentation center for detailed guidance.
💬Related Information
- Directory Structure
- Operator Index
- aclnn API Index
- torch API Index
- Contribution Guide
- Security Statement
- License
- SIG
- [Contact Us] WeChat: Clark_Dan
PS: The features and documentation of this project are continuously being updated and improved. Stay tuned for the latest version.
- Issue feedback: Submit issues through GitCode Issues.
- Community interaction: Join discussions through GitCode Discussions.
- Technical column: Get technical articles (such as serialized tutorials and best practices) through GitCode Wiki.