本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
[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 天前 | |
[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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 个月前 | |
产品文档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 个月前 | |
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 天前 | |
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 天前 | |
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 个月前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 天前 | |
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 个月前 | |
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 个月前 | |
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 天前 | |
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 天前 | |
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 | 26 天前 | |
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 天前 | |
支持按模板参数编译算子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 个月前 | |
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 个月前 | |
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 天前 | |
删除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 天前 | |
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 个月前 | |
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 个月前 | |
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 天前 | |
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 个月前 |
🔥Latest News
- [2026/08] 仓内集成pre-commit代码检查框架,配置后
git commit时自动检查并修复格式问题,将规范问题拦截在提交阶段、提升代码合入效率,详见pre-commit配置指导书。 - [2026/07] A5上新支持算子quant_flash_attn,Dense Attention全量化场景专用,以及experimental目录新增同名算子支持A5的MxFP4全量化;chunk_gated_delta_rule算子支持A5;A5新增DSV4 dense训练阶段TopK筛选反向算子dense_lightning_indexer_grad_kl_loss、dense_lightning_indexer_softmax_lse;mc2新支持算子engram_fetch_grad。
- [2026/06] A5上新增支持sparse_flash_mla、mixed_quant_sparse_flash_mla以及对应的metadata算子,用于DSV4场景稀疏Attention计算。新增lightning_indexer_v2、quant_lightning_indexer_v2以及对应的metadata算子,用于DSV4场景TopK筛选。A5新增DSV4 sparse训练阶段Attention反向算子sparse_flash_mla_grad、sparse_lightning_indexer_kl_loss_grad;mc2新支持算子engram_fetch、engram_fetch_wait。
- [2026/05] fused_infer_attention_score算子A5上支持MxFP8全量化;A5上新支持算子flash_attn,Dense Attention非量化场景专用。
- [2026/04] mc2新支持算子mega_moe。
- [2026/03] recurrent_gated_delta_rule算子支持A5。
- [2026/02] 新支持算子mhc_post、mhc_pre、mhc_res。
- [2026/01] 新支持算子grouped_matmul<<<>>>调用示例,方便用户自定义使用。
- [2026/01] 新支持算子fused_floyd_attention、fused_floyd_attention_grad、matmul_allto_all。
- [2025/12] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导。
- [2025/12] 支持transformer类onnx算子插件,包括NPUMultiHeadAttention、NPUMoeComputeExpertTokens等。
- [2025/12] 新支持算子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、ffn_to_attention。
- [2025/12] 开源算子支持NPU Simulator仿真工具开发调试。
- [2025/12] 开源算子支持Ascend 950PR&950DT系列产品/KirinX90系列产品。
- [2025/11] 新支持算子kv_quant_sparse_flash_attention、lightning_indexer、quant_lightning_indexer、sparse_flash_attention。
- [2025/11] 新支持示例算子rope_matrix和all_gather_add。
- [2025/11] 新增算子开发工程模板NpuOpsTransformerExt,无缝集成PyTorch张量操作,支持自动微分和GPU/NPU统一接口。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-transformer项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-transformer是CANN(Compute Architecture for Neural Networks)算子库中提供transformer类大模型计算的进阶算子库,包括attention类、moe类、mc2类等,覆盖各类attention、MoE计算、通算融合等场景,算子库在架构图中的位置如下。

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,通用命令如下,${tag_version}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令: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
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。