| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 个月前 | |
TF plugin 迁移2 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !7586 merge nn2 into master TF plugin 迁移2 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!7586 | 2 个月前 | |
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 个月前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 1 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 1 天前 | |
[agent] [Requirement|需求建议]: 补齐优化器算子的 TTK golden 与测试接入 Co-authored-by: huang-qiang<huangqiang3@huawei.com> # message auto-generated for no-merge-commit merge: !11139 merge agent/issue-91 into master [agent] [Requirement|需求建议]: 补齐优化器算子的 TTK golden 与测试接入 Created-by: huang-qiang Commit-by: huang-qiang Merged-by: cann-robot Description: ## 描述 为三个优化器算子补齐 TTK kernel golden 并接入 kernel 测试通路,仅新增/修改测试资产( optim/<op>/tests/assets/golden.py),不改动任何生产代码(Host/Kernel/Tiling/def/InferShape/CSV),通过 __golden__ = {"kernel": {"<op>": "<func>"}} 被 ttk 自动发现并绑定参数。 **正式 golden 严格直接调用指定接口**(tensorflow==2.19.0): - apply_adam → **tf.raw_ops.ApplyAdam** - apply_ftrl → **tf.raw_ops.ApplyFtrl**(FTRL-Proximal **V1**,不引入 ApplyFtrlV2 的 l2_shrinkage) - apply_gradient_descent:按自身契约保留标准 NumPy 实现 var - alpha*delta,未改动。 **Graph/Session 隔离方式**:每次 golden 调用在**独立 tf.Graph + tf.compat.v1.Session** 内执行,状态变量用 tf.compat.v1.Variable(..., use_resource=False)(引用变量)创建。**不调用**全局 tf.compat.v1.disable_eager_execution()、不做全局资源变量开关——v1 会话只存活于函数内 with 块,TTK 进程与其他 golden 的 eager 模式不受影响(self-smoke 断言执行后 tf.executing_eagerly() 仍为 True)。 **引用变量初始化与状态正确性**:每次调用新建 Graph 与新变量、从本用例输入独立初始化;[var, upd] 在同一次 sess.run 中取回并断言相等(NaN-aware,越界输入合法产生 NaN 时同 buffer 的 NaN==NaN 不误判),证明更新节点确实执行、不误读初值;self-smoke 另含"重复调用同输入结果一致"的状态隔离断言。 **节点类型证明**:构建图内更新节点 upd.op.type 在正式计算路径上断言等于 'ApplyAdam' / 'ApplyFtrl',即 TTK 正式 golden 实际执行的就是这两个指定节点(非 ResourceApply*、非 numpy 公式、无异常回退)。 **接口映射**: - ApplyAdam:var/m/v、beta1_power、beta2_power、lr、beta1、beta2、epsilon、grad + use_locking/use_nesterov;核对 beta power 偏差修正(lr_hat=lr·√(1-beta2_power)/(1-beta1_power))、epsilon 位于分母、Nesterov 双分支、m/v 状态更新。 - ApplyFtrl:var/accum/linear/grad、lr、l1、l2、lr_power + use_locking=False、multiply_linear_by_lr=False(V1 契约:linear 不预乘 lr,与 apply_ftrl_dag.h 一致)。 **dtype 策略**:6 个 Adam 标量按 def 恒 FP32,golden 内 FP32 读取,**不随状态张量降精**;BF16/FP16 的状态张量升 FP32 计算、末尾降回输出 dtype(与 kernel 内部 FP32 语义一致)。**输出契约**:单显式输出 var(CSV output_shapes=1、inplace=()),m/v/accum/linear 为原位设备状态、非被比较输出,不按原位索引数量增加返回值。 ApplyAdam 与 ApplyAdamD 是不同注册算子:本 PR 仅交付 ApplyAdam(目录/注册名 optim/apply_adam 不变),不复制含 v_hat 未定义缺陷的 apply_adam_d golden,不使用 tf.train.AdamOptimizer。 ## 关联的Issue 关联 Issue #6608 ## 测试 **L0 self-smoke**(TF 直调 golden vs 独立 numpy fp64 参考交叉对拍): - Adam:Nesterov 双分支(断言两分支数值不同)、非零初始 m/v、零梯度、fp16 低精度、单输出断言、状态隔离断言、eager 未关断言。 - Ftrl:非零初始状态、零梯度、L1 阈值分支(var=0)、lr_power 边界(|lr_power|→1)、fp32/fp16 低精度、单输出断言、状态隔离断言、eager 未关断言。 - 等价性实测:TF vs numpy fp64 max 差 ~1.4e-8(Adam)、~2.4e-8(Ftrl)。 **L2(真实 NPU 全量 ST,raw_ops 直调版)**: - apply_adam:**100%(99/99)**(bf16/fp16/fp32 各 33 例) - apply_ftrl:**58/62(93.55%)** - apply_gradient_descent:**100%(99/99)**(未改动,回归有效) **ApplyFtrl 4 个剩余失败——用新 golden 逐例 dump 复核(in/out/golden,按真实 dtype 读取,bf16 用 ml_dtypes.bfloat16;golden 复算 vs dump golden 全部确定性一致)**: 1. **比较规则近零局限**:case010(fp32)/case081(bf16)——有效域(负 accum=0),mere 达标(8.7e-7 / 2.1e-3,均低于各自阈值),失败仅因近零元素 mare 超标(case081 gold=0 而 NPU=-9.9e-7,|gold|+1e-7 分母下相对误差爆炸)——stat_rel_err 的固有局限,未放宽阈值、未改比较标准。 2. **测试输入越界**:case034(fp16)(10921/21840 负 accum)、case074(fp16)(47958/95979 负 accum)——违反 FTRL accum=Σgrad²≥0 公开契约的 fuzz 输入;case034 的 658 处 ±inf 位置与符号在 golden/NPU 间**完全配对一致**、有限部分 |maxdiff|=0、mere=2.95e-7;case074 mere=3.4e-7、|maxdiff|=1.95e-3(fp16 舍入量级)——残余差异仅集中在近零元素的 mare。 3. **无生产 kernel 缺陷**:所有 |maxdiff| 均为 fp32-vs-device 或低精度舍入量级;Adam 100% 与 TF 直调参考佐证 kernel 数学正确;未修改生产 Host/Kernel。 **约束遵守**:保留全部 62+99 用例与原比较标准(stat_rel_err 阈值不变);每用例独立初始化状态;未删除失败场景、未裁剪输入规避失败、未吞异常、未擅自放宽容差、未改 CSV/比较器/生产代码。pre-commit(trailing-whitespace / end-of-file / ruff-check / ruff-format / codespell / OAT)全部通过,未使用 --no-verify。 **框架版本**:tensorflow==2.19.0(CPU 执行,TF_CPP_MIN_LOG_LEVEL=3 抑制日志,懒加载不影响插件发现)。 ## 文档更新 无(仅测试资产)。 ## 类型标签 - [x] 其他,请描述:新增/重写 ApplyAdam/ApplyGradientDescent/ApplyFtrl 的 TTK kernel golden 测试资产,正式 golden 严格直调 tf.raw_ops.ApplyAdam / tf.raw_ops.ApplyFtrl ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11139 | 8 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 1 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 22 天前 |
ApplyGradientDescent
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品s | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:用于在梯度下降训练过程中更新模型参数。
-
计算公式:
var=var−alpha×deltavar = var - alpha \times delta var=var−alpha×delta
其中,var表示待更新的模型参数,alpha表示学习率,delta表示参数的梯度。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| var | 输入 | 待更新的模型参数,公式中的var。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| alpha | 输入 | 学习率,控制参数更新的步长,公式中的alpha。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| delta | 输入 | 对应参数var的梯度值,公式中的delta。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| var | 输出 | 更新后的模型参数,公式中的var。 | FLOAT、FLOAT16、BFLOAT16 | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_apply_gradient_descent | 通过算子IR构图方式调用ApplyGradientDescent算子。 |