| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[activation] 新增 experimental 算子 swiglu_clamp + cann_ops_nn PTA binding Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !7492 merge feature/swiglu_step into master [activation] 新增 experimental 算子 swiglu_clamp + cann_ops_nn PTA binding Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 本 PR 新增 experimental/activation/swiglu_clamp 算子 —— silu+clamp+mul 融合激活(SwigluClamp 顺序: **silu 在前、clamp 上限在后**;区别于本仓现有的 clipped_swiglu 的 clamp-then-silu 顺序)。用于 Step-3.7-Flash 等 MoE 模型的 FFN 专家层激活,已在 910B / 910C 完成端到端推理 + 精度验证。 数学: gate = x[..., :N], up = x[..., N:] out = silu(gate).clamp(max=limit) * up.clamp(min=-limit, max=limit) 输入 x[..., 2N] → 输出 [..., N],dtype 同输入;limit 为标量属性(默认 7.0)。中间升 fp32 计算,store 前降精度。 **交付件**(对齐 experimental/activation/mish 模板): | 目录 | 内容 | | --------------- | ------------------------------------------------------------ | | op_host/ | OpDef 注册 + InferShape(末维减半,奇数拒绝) + Tiling(dtype-aware bufferCoefficient) | | op_kernel/ | AscendC 实现: sigmoid / silu / clamp(Mins/Maxs) / Mul,中间升 fp32,bf16/fp16 经 Cast 路径,bf16 同 else 分支 | | op_api/aclnn/ | 两段式接口(.cpp/.h),ACLNN_CMD dlsym,无需头 include | | tests/ut/ | op_host: Infershape 5 case + Tiling 3 dtype; op_kernel: 1 case(gen_data/compare_data,rtol=1e-4,tikicpulib CPU 仿真); 910B / 910C 双 SoC 均 5/5 + 1/1 PASS | | examples/ | ACLNN 调用示例(bf16 + fp32) | | README.md | 算子说明(接口/数学/精度/dtype/平台) | **附带 torch_extension/cann_ops_nn PTA binding**: - csrc/activation/swiglu_clamp.cpp: ACLNN_CMD + PYBIND11,torch.ops.cann_ops_nn.swiglu_clamp 调用链 - ops/activation/swiglu_clamp.py: OpBuilder schema + register_meta(末维减半) + PrivateUse1 - ops/__init__.py: 注册链 from . import activation ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3913 ## 测试 **双 SoC 真机验证**(910B + 910C,均通过 SIG 评审前全量验证): | 验证项 | 910B(AT800T,CANN 9.0.1) | 910C(Atlas A3 / AT900A3,CANN 9.0.0) | | ------------------------------------------------ | ------------------------------ | ------------------------------------------- | | 编译 / 安装(--experimental) | ✅ | ✅(交叉编译 ascend910_93 kernel,3 个 .o) | | ophost UT(infershape + tiling) | ✅ 5/5 | ✅ 5/5 | | op_kernel UT(tikicpulib CPU 仿真,fp32,rtol=1e-4) | ✅ 1/1 | ✅ 1/1 | | ACLNN example(端到端) | ✅ bf16 / fp32 / fp16 | ✅ bf16 / fp32 | | PTA binding torch.ops.cann_ops_nn.swiglu_clamp | ✅ [4,32]→[4,16] + clamp 定点 | ✅ 同 | **双 SoC 输出逐位一致**:910B / 910C 的 aclnn example 共享定点 result[22] 完全相同 —— **bf16 -2.859375、fp32 -2.857722**(= 手算 silu(3) × clamp(-1,±7) = 2.857722 × (-1)),两 SoC 分毫不差,跨平台数值行为确定、无 SoC 相关偏移。 **精度**(60 case = 5 shape × 4 输入模式 × 3 dtype,主矩阵在 910B,910C 定点逐位复验): - BFLOAT16(Step-3.7 实际使用 dtype):**20/20 全 PASS**(MERE+MARE) - FLOAT32:**20/20 全 PASS**(近乎精确,MERE ~1e-8) - FLOAT16:20/20 MERE PASS;MARE 15 case 超标 → 根因 IEEE 754 fp16 denormal 表示极限(silu(深负gate) 下溢到 ~1e-8),**非算子缺陷**;过滤 ~1% 病态点后 MARE 4.88e-4 低于单倍阈值,达标 **性能**(详见 swiglu_clamp-performance-report.md):融合算子相对 torch 拆开(silu+clamp+clamp+mul,~4 个 aclnn)—— bf16 prefill(eager 大档)**5.4–7.5×**、decode(graph)**2.1–3.6×**;端到端 msprof 实测 prefill bf16 **6.20×**,与算子级 bench 吻合。 精度标准对标[生态算子开源精度标准(experimental_standard.md)](https://gitcode.com/cann/opbase/blob/master/docs/zh/ops_precision_standard/experimental_standard.md)。 ## 文档更新 - 新增 experimental/activation/swiglu_clamp/README.md(算子说明: 接口/数学/精度/dtype/平台/编译/运行) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7492 | 2 个月前 | |
修改测试问题 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !7987 merge master into master 修改测试问题 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改TorchNPU改名 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7987 | 2 个月前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !366 merge license6 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!366 | 10 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 | |
fix: def-driven dtype + InferDataType separation for Celu/DataFormatDimMap/ApplyProximalGradientDescent Changes per operator (Celu, DataFormatDimMap, ApplyProximalGradientDescent): 1. def-driven dtype (item 7): - tiling_key.h: ASCENDC_TPL_DATATYPE_DECL → ASCENDC_TPL_UINT_DECL - kernel .cpp/_apt.cpp: template <typename D_T> → template <int MODE>, use DTYPE_<INPUT> macro - tiling_arch35.cpp/tiling.cpp: ASCENDC_TPL_SEL_PARAM no longer passes dtype value 2. InferShape/InferDataType separation (item 8): - Delete op_host/*_infershape.cpp (InferShape reused from canndev runtime) - Create op_graph/*_graph_infer.cpp with IMPL_OP().InferDataType() registration - InferDataType logic: output dtype = input[0] dtype 3. Celu dynamic GEIR example added (item 5) Reference: ops-cv PR 1126, acts_ulq_input_grad pattern | 2 个月前 | |
[Requirement|需求建议]: 【社区任务】NllLossGrad算子A2/A3 AscendC实现贡献 Co-authored-by: yangke<1723981822@qq.com> # message auto-generated for no-merge-commit merge: !8065 merge master into master [Requirement|需求建议]: 【社区任务】NllLossGrad算子A2/A3 AscendC实现贡献 Created-by: gcw_8p1hhlB0 Commit-by: gcw_8p1hhlB0;yangke Merged-by: cann-robot Description: ## 描述 通过西工大CANN暑期训练营社区任务完成 NLLLossGrad 算子的 AscendC 改造与性能优化,保持与现有 TBE 算子语义一致,已通过cann judge测试。 任务要求适配 Atlas A2 训练系列产品/Atlas A3 系列产品,性能在所有核参与计算场景下不低于原 TBE 算子的 95%。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4414 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8065 | 2 个月前 | |
FusedPatchMlp 算子AscendC实现贡献 Co-authored-by: wuxs68<wuxs68@chinaunicom.cn> # message auto-generated for no-merge-commit merge: !7672 merge master into master FusedPatchMlp 算子AscendC实现贡献 Created-by: wuxs68 Commit-by: wuxs68 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> FusedPatchMlp 算子AscendC实现贡献 来自移动终端方向国家人工智能应用中试基地 Co-authored-by: 联通(广东)产业互联网有限公司 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#4142](https://gitcode.com/cann/ops-nn/issues/4142) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ### 1. Ops-NN UT 构建 测试指令: bash build.sh -u --ops=fused_patch_mlp --experimental 测试结果:  ### 2. Ops-NN op_host UT 测试指令: bash build.sh -u --ops=fused_patch_mlp --experimental --ophost 测试结果:  ### 3. Ops-NN op_kernel UT 测试指令: bash build.sh -u --ops=fused_patch_mlp --experimental --opkernel 测试结果:  ### 4. Ops-NN op_api UT 测试指令: bash build.sh -u --ops=fused_patch_mlp --experimental --opapi 测试结果:  ## 算子级性能对比 对 ChatTS 中的 TimeSeriesEmbedding.mlp 进行融合替换测试,比较对象包括: 1. **原始 PyTorch 实现**:nn.Sequential 包含 Linear + GELU + Linear + GELU + Linear 的逐层调用 2. **本 PR 融合算子**:aclnn_fused_patch_mlp,将多层 Linear+GELU 合并为单次 API 调用 测试在 NPU 上进行,覆盖多种实际运行 shape,使用相同的权重、偏置、dtype、预热次数和迭代次数。测试前校验输出误差,然后统计同步后的端到端前向延迟。 | Shape | 参数规模 | 原始 MLP Median | 融合算子 Median | 加速比 | 时延下降 | | ---: | ---: | ---: | ---: | ---: | ---: | | [1, 4096, 16] | hidden=256, 3层 | 0.3236 ms | 0.0931 ms | 3.48× | 71.23% | | [1, 4096, 64] | hidden=256, 3层 | 0.4591 ms | 0.0942 ms | 4.87× | 79.47% | | [1, 4096, 16] | hidden=256, 5层 | 0.5349 ms | 0.1210 ms | 4.42× | 77.39% | | [2, 4096, 16] | hidden=256, 3层 | 0.3094 ms | 0.1120 ms | 2.76× | 63.80% | ## 正确性结果 性能测试同时校验了融合算子的输出正确性: - fused_vs_original_allclose:✅ 通过(所有测试 case) - 最大绝对误差:< 6.11e-5 ~ 3.05e-4(远小于 1e-3 阈值) - 所有性能测试 case 均为 **0 allclose failures** ## 整模型端到端收益 将 ChatTS-14B 中的 TimeSeriesEmbedding.mlp 替换为 FusedPatchMlp 后,整模型 forward 端到端性能对比: | 模型 | 序列长度 | Patch 数 | 原始模型 Median | 融合模型 Median | 加速比 | 时延下降 | | :--- | ---: | ---: | ---: | ---: | ---: | ---: | | ChatTS-14B | 1024 | 128 | 338.657 ms | 314.316 ms | **1.077×** | **7.2%** | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!7672 | 2 个月前 | |
【社区任务】AscendC实现SyncBatchNormBackwardElemt算子贡献 Co-authored-by: infinity_infi<67455467@qq.com> # message auto-generated for no-merge-commit merge: !6359 merge master into master 【社区任务】AscendC实现SyncBatchNormBackwardElemt算子贡献 Created-by: infinity_infi Commit-by: infinity_infi Merged-by: cann-robot Description: ## 描述 【社区任务】AscendC实现SyncBatchNormBackwardElemt算子贡献 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3657 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6359 | 2 个月前 | |
fix: def-driven dtype + InferDataType separation for Celu/DataFormatDimMap/ApplyProximalGradientDescent Changes per operator (Celu, DataFormatDimMap, ApplyProximalGradientDescent): 1. def-driven dtype (item 7): - tiling_key.h: ASCENDC_TPL_DATATYPE_DECL → ASCENDC_TPL_UINT_DECL - kernel .cpp/_apt.cpp: template <typename D_T> → template <int MODE>, use DTYPE_<INPUT> macro - tiling_arch35.cpp/tiling.cpp: ASCENDC_TPL_SEL_PARAM no longer passes dtype value 2. InferShape/InferDataType separation (item 8): - Delete op_host/*_infershape.cpp (InferShape reused from canndev runtime) - Create op_graph/*_graph_infer.cpp with IMPL_OP().InferDataType() registration - InferDataType logic: output dtype = input[0] dtype 3. Celu dynamic GEIR example added (item 5) Reference: ops-cv PR 1126, acts_ulq_input_grad pattern | 2 个月前 | |
docs目录基本概念md中文名改为英文名 Co-authored-by: chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !7857 merge master into master docs目录基本概念md中文名改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao;chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> docs目录基本概念md文件名改为英文: 避免link中的中文字符引发的跳转异常,例如两段式接口.md变成%E4%B8%A4%E6%AE%B5%E5%BC%8F%E6%8E%A5%E5%8F%A3.md,不易于维护,可能导致其他平台跳转有问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/context所有md和对应的link ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7857 | 3 个月前 | |
【社区任务】AscendC实现AscendAntiQuantV2算子贡献 Co-authored-by: weixin_54022960<yaoqz80@126.com> # message auto-generated for no-merge-commit merge: !6332 merge master into master 【社区任务】AscendC实现AscendAntiQuantV2算子贡献 Created-by: weixin_54022960 Commit-by: weixin_54022960 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3480 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6332 | 2 个月前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !366 merge license6 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!366 | 10 个月前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !366 merge license6 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!366 | 10 个月前 |