| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 17 天前 | |
fix(nn): release resources on init failure in aclnn examples and docs Co-authored-by: wangjun03<wangjun01@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !8693 merge fix/init-failure-resource-release-nn into master fix(nn): release resources on init failure in aclnn examples and docs Created-by: wangjun03 Commit-by: wangjun03 Merged-by: cann-robot Description: ## 描述 修复 NN/Transformer 类算子调用示例在初始化失败场景下资源释放不完整的问题。 - aclrtSetDevice 失败时,在返回前调用 aclFinalize,释放已初始化的 ACL 资源。 - aclrtCreateStream 失败时,在返回前依次调用 aclrtResetDevice 和 aclFinalize,释放已设置的 Device 及 ACL 资源。 - 保留原有 CHECK_RET 写法和正常执行路径的资源释放顺序。 - 同步修改文档示例和对应的可执行示例源码,保证两处代码一致。 本次修改参考仓库内 PR #8603(aclnnSoftmax)的修复方式,仅补齐资源释放逻辑,不涉及算子 Tiling、Kernel 和计算功能变更。 ## 涉及算子 ### activation(4 个算子,8 个文件) - **SoftmaxV2**:aclnnSoftmax - **LogSoftmaxV2**:aclnnLogSoftmax - **SoftmaxGrad**:aclnnSoftmaxBackward - **LogSoftmaxGrad**:aclnnLogSoftmaxBackward ### norm(23 个算子,56 个文件) - **GroupNormGrad**:aclnnGroupNormBackward - **LpNormV2**:aclnnLinalgVectorNorm、aclnnNorm - **LayerNormV4**:aclnnLayerNorm、aclnnFastLayerNorm - **LayerNormGradV3**:aclnnLayerNormBackward - **AddLayerNorm**:aclnnAddLayerNorm - **AddLayerNormQuant**:aclnnAddLayerNormQuant - **AddRmsNorm**:aclnnAddRmsNorm - **AddRmsNormCast**:aclnnAddRmsNormCast - **AddRmsNormQuant**:aclnnAddRmsNormQuant - **AddRmsNormDynamicQuant**:aclnnAddRmsNormDynamicQuant、aclnnAddRmsNormDynamicQuantV2 - **AddRmsNormDynamicMxQuant**:aclnnAddRmsNormDynamicMxQuant - **RmsNormDynamicMxQuant**:aclnnRmsNormDynamicMxQuant - **RmsNormGradQuant**:aclnnRmsNormGradQuant - **RmsNormQuantV3**:aclnnRmsNormQuantV3 - **BatchNormV3**:aclnnBatchNorm、aclnnBatchNormElemt - **BatchNormGradV3**:aclnnBatchNormBackward、aclnnFastBatchNormBackward - **RmsNorm**:aclnnRmsNorm - **RmsNormGrad**:aclnnRmsNormGrad - **InplaceAddRmsNorm**:aclnnInplaceAddRmsNorm - **SyncBatchNormBackwardElemt**:aclnnBatchNormElemtBackward - **SyncBatchNormBackwardReduce**:aclnnBatchNormReduceBackward - **SyncBatchNormGatherStats**:aclnnSyncBatchNormGatherStats ### experimental 镜像(8 个文件) - experimental/activation: LogSoftmaxV2 - experimental/loss: SoftmaxGrad - experimental/norm: SyncBatchNormBackwardElemt、SyncBatchNormBackwardReduce、SyncBatchNormGatherStats ## 关联的 Issue Issue #4745 ## 测试 - git diff --check:通过。 - 本次仅修改调用示例的异常处理逻辑,未执行 NPU 运行测试。 ## 文档更新 - 更新上述算子 docs/ 目录下的 aclnn*.md 中的调用示例。 - 同步更新 examples/ 目录下的 test_aclnn_*.cpp 可执行示例源码。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8693 | 2 个月前 | |
TF plugin 迁移 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !7632 merge nn4 into master TF plugin 迁移 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 TF plugin 迁移 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4196 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7632 | 3 个月前 | |
feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10101 merge q_aclnn_version into master feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 以 RegBase 架构(NpuArch = DAV_3510,含 Ascend950 及后续 Regbase 芯片)兼容为目标,统一两类芯片判断写法: 1. **区间判断追加**:对 4 个算子 op_api 中 GetSocVersion() >= ASCEND910B && GetSocVersion() <= ASCEND910E 区间判断追加 || Ops::NN::AclnnUtil::IsRegbase(),使 RegBase 平台在 SocVersion 区间之外时也走 910B 支持分支 2. **硬编码统一**:将 1 个算子的本地架构判断封装函数(IsArch3510)实现改为 IsRegbase(),后续 Regbase 芯片无需逐文件修改 ## 修改内容一:区间判断追加(4 个文件,4 处) | 算子 | 文件 | 修改 | |------|------|------| | logsoftmaxv2 | activation/log_softmax_v2/op_api/aclnn_log_softmax.cpp | CheckSocVersionIsSupportBf16 追加 IsRegbase();补 include | | logsoftmaxgrad | activation/log_softmax_grad/op_api/aclnn_logsoftmax_backward.cpp | 同上(include 原已存在) | | softmaxgrad | activation/softmax_grad/op_api/aclnn_softmax_backward.cpp | 同上(include 原已存在) | | batchNormElemt | norm/batch_norm_elemt/op_host/op_api/aclnn_batch_norm_elemt.cpp | 追加 IsRegbase() 并删除冗余 == SocVersion::ASCEND950;补 include | ### 关于删除 == SocVersion::ASCEND950 的说明 SocVersion 枚举中 ASCEND950 = ASCEND910_95(值 3)位于 ASCEND910B(1)与 ASCEND910E(4)之间,区间判断本已覆盖 950,原 || == ASCEND950 分支从不单独生效;且 Ascend950 的 NpuArch 即 DAV_3510,IsRegbase() 对 950 同样为真。净效果为纯扩展,存量平台无收窄。 ## 修改内容二:硬编码判断统一(1 个文件,1 处) - layerNormV4:norm/layer_norm_v4/op_host/op_api/aclnn_layer_norm.cpp:123 —— IsArch3510() 函数体改为 Ops::NN::AclnnUtil::IsRegbase()(调用点不动) ### 范围说明 - addRmsNormQuantV2(aclnn_add_rms_norm_quant_v2):upstream !10098(完善RMSNorm量化校验)已将其 IsSocVersion950() 统一改名并实现为 IsRegbase(),本次不改,与 upstream 保持零 diff - batchNormGradV3(aclnn_fast_batch_norm_backward):经评审本次不改,与 upstream 保持零 diff,其恒真条件见关联 Issue - 公共头 level2_base_caculation.h、experimental 目录、tests 不在本次范围,遗留问题见关联 Issue ## 关联的Issue - #5707 (ops-nn仓RegBase兼容遗留问题清理:公共头IsRegbase同步、恒真条件修正、重复查询优化) ## 测试 - pre-commit 检查(clang-format/codespell/OAT 等)全部通过 - 修改文件 g++ -fsyntax-only 语法验证通过 - 已触发 compile 编译 - 建议测试项: 1. 910B/910E 平台回归 BF16 正反向用例行为不变 2. Ascend950 平台回归(验证删除 == ASCEND950 等价、layerNormV4 的 950 分支行为不变) 3. RegBase 平台 BF16 用例由校验拒绝变为正常放行 4. 区间外平台(910/310/310P)BF16 仍被拦截 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ### 关联issue - [cann/ops-math#5467(ops-math 侧 910B~910E 区间判断追加 IsRegBase)](https://gitcode.com/cann/ops-math/pull/5467) See merge request: cann/ops-nn!10101 | 1 个月前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 18 天前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 18 天前 | |
feat: 责任田 31 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11896 merge feat/responsibility-ops-ascend960-clean into master feat: 责任田 31 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 从 ops-nn-dev 基线同步责任田(norm/activation/index)33 算子的 Ascend960 平台支持。 - def 注册目标平台(Ascend960)+ config binary.json - kernel arch35 宏隔离,非目标平台走 #else 原路径零回归 ## 测试 已在 Ascend960 环境完成编译与功能验证。 ## 类型标签 - [x] ✨ Feature 关联 Issue: #6624 See merge request: cann/ops-nn!11896 | 22 天前 | |
feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10951 merge feat/infer-datatype-migration into master feat(graph): 补齐9个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 9 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC/IMPLEMT_INFERFUNC 的类型推导语义: - **透传类(out=in0,4个)**:ConfusionSoftmaxGrad(y=grad)、LogSoftmaxV2(logsoftmax=logits)、SoftmaxGrad(grad_x=softmax)、SyncBatchNormBackwardElemt(grad_input=grad_output); - **双输出同源(1个)**:SyncBatchNormBackwardReduce(sum_dy_xmu 与 y 均取 sum_dy 的 dtype,对齐 v1.0 nn_batch_norm_ops.cc 实现); - **非0索引锚定(out=in1,1个)**:LogSoftmaxGrad(y=x,输入0 是 grad); - **多输出绑定(3个)**:LayerNorm/LayerNormV3(y=x、mean=gamma、variance/rstd=beta,CANN 特有的混合精度载体设计,对齐 v1.0 nn_norm_ops.cc)、SyncBatchNormGatherStats(4 个输出均取 variance 的 dtype,shape 另取 mean,对齐 v1.0 实现)。 InferDataType 仅做纯推导(SoftmaxGrad 为 grad_x=softmax 透传),不增加输入 dtype 一致性校验:混合 dtype 组合由 tiling 侧既有三口全等校验在编译期拦截。 > 2026-10-13:本 MR 曾为 SoftmaxGrad 加入构图期 grad_softmax==softmax 一致性校验,经复审已回退(revert 提交 e1ad6cfa1),恢复纯透传形态。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue 无 ## 测试 1. 语法检查:9 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,9 个新 .o 均进入 graph_plugin_nn_obj 并链接入 libopgraph_nn.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,9 算子覆盖透传、in1 锚定、多输出逐口绑定(含 GatherStats 4 输出、LayerNorm 系 3 输出、BackwardReduce 双输出)及 SoftmaxGrad 混合 dtype 透传行为,全部通过(2026-10-13 回退后全量重跑)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10951 | 18 天前 | |
feat: 责任田 31 算子批量同步 Ascend960 平台支持 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !11896 merge feat/responsibility-ops-ascend960-clean into master feat: 责任田 31 算子批量同步 Ascend960 平台支持 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 从 ops-nn-dev 基线同步责任田(norm/activation/index)33 算子的 Ascend960 平台支持。 - def 注册目标平台(Ascend960)+ config binary.json - kernel arch35 宏隔离,非目标平台走 #else 原路径零回归 ## 测试 已在 Ascend960 环境完成编译与功能验证。 ## 类型标签 - [x] ✨ Feature 关联 Issue: #6624 See merge request: cann/ops-nn!11896 | 22 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 |
SoftmaxGrad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
接口功能:完成softmax的反向传播。
-
计算公式:对于Softmax函数的求导,可以使用以下公式: gradOutput(上一层输出梯度)、output(Softmax正向输出)的关系可表示如下:
out=gradOutput⋅output−sum(gradOutput⋅output)⋅outputout = gradOutput \cdot output - sum(gradOutput \cdot output)\cdot output out=gradOutput⋅output−sum(gradOutput⋅output)⋅output
-
参数说明:
参数名 输入/输出/属性 描述 数据类型 数据格式 gradOutput 输入 反向传播的梯度值,即上一层的输出梯度。公式中的gradOutput。 FLOAT16、FLOAT32、BFLOAT16 ND output 输入 Softmax函数的输出值,公式中的output。 FLOAT16、FLOAT32、BFLOAT16 ND dim 输入 Softmax函数的维度。 INT64 - out 输出 函数的输出是输入的梯度值。 FLOAT16、FLOAT32、BFLOAT16 ND - Atlas推理系列产品、Atlas训练系列产品:数据类型支持FLOAT16、FLOAT32。
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_softmax_grad | 通过aclnnSoftmaxBackward接口方式调用SoftmaxGrad算子。 |