| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 8 天前 | |
adam_apply_one_assign 算子geir测试用例修改 Co-authored-by: h1234515<huangzhiyuan21@huawei.com> # message auto-generated for no-merge-commit merge: !9253 merge adam_apply_one_assign_geir into master adam_apply_one_assign 算子geir测试用例修改 Created-by: h1234515 Commit-by: h1234515 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> adam_apply_one_assign 算子geir用例修改 跑bash build.sh --run_example adam_apply_one_assign graph --soc=ascend950时报错,将geir用例的static_cast<float*>改为(float*) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5233 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --run_example adam_apply_one_assign graph --soc=ascend950 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9253 | 10 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 8 天前 | |
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 | 1 个月前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 11 天前 | |
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 | 1 个月前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 5 天前 | |
perf: apply_adagrad_d arch35 kernel 以 Vec::Div 替换 Vec::DivHighPrecision 提升性能 Co-authored-by: huang-qiang<huangqiang3@huawei.com> # message auto-generated for no-merge-commit merge: !9875 merge agent/issue-74 into master perf: apply_adagrad_d arch35 kernel 以 Vec::Div 替换 Vec::DivHighPrecision 提升性能 Created-by: huang-qiang Commit-by: huang-qiang Merged-by: cann-robot Description: ## 描述 对 apply_adagrad_d 算子 arch35(Ascend950)后置 kernel 做除法指令选型优化,将 var 更新路径的高精度除法替换为标准除法,在精度影响可忽略的前提下获得整体提速。 ### 改动原因 apply_adagrad_d 的计算公式为: - accum += grad * grad - var -= lr * grad / sqrt(accum) arch35 DAG 实现(optim/apply_adagrad_d/op_kernel/arch35/apply_adagrad_d_dag.h)中,var 更新路径的 OpVarT = Bind<Vec::DivHighPrecision<T>, OpLrMulGrad, OpAccumSqrt> 使用高精度除法 Vec::DivHighPrecision,指令开销较高。经精度验证,该路径使用标准除法 Vec::Div 即可满足精度要求,故替换以提升性能。 ### 改动方法 在 apply_adagrad_d_dag.h 中完成两处替换,覆盖 update_slots 两种执行路径: | 结构 | 路径场景 | 修改内容 | |------|----------|----------| | ApplyAdagradDUpdateSlots | update_slots=true(accum 原地累加后开方) | Vec::DivHighPrecision<T> → Vec::Div<T> | | ApplyAdagradD | update_slots=false(直接使用传入 accum) | Vec::DivHighPrecision<T> → Vec::Div<T> | 影响范围:fp16 / bf16 / fp32 三种 dtype(tiling 层实例化于 apply_adagrad_d_tiling_arch35.cpp,fp16/bf16 内部提升为 float 计算)。另补充文件末尾换行符。 ## 关联的Issue - #5583 ## 测试 使用相同输入 + golden 配对验证(作者报告的验证结论): - **性能**:整体约 1.12x 提速,其中 bf16 约 1.31x。 - **精度**:accum 输出前后恒等;var 精度达标率 1203 → 1198(劣化 0.4%,最大误差不变),影响可忽略。 - 覆盖三种 dtype、小/中/大 shape、update_slots 两态、常规/次正规/±max/inf 边界取值。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9875 | 3 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 12 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 8 天前 | |
fix(apply_adam_v2, fused_mul_apply_momentum): 修复FP16 Cast别名冲突、跨tile事件同步、infershape对齐canndev、inplace output shape直取input Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !9005 merge fix-adam-momentum-geir-issues into master fix(apply_adam_v2, fused_mul_apply_momentum): 修复FP16 Cast别名冲突、跨tile事件同步、infershape对齐canndev、inplace output shape直取input Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: PR 描述 标题: fix(apply_adam_v2, fused_mul_apply_momentum): 修复 FP16 Cast 别名冲突、跨 tile 事件同步、infershape 对齐 canndev 描述: 关联 Issue Closes #<issue_number> 修改内容 apply_adam_v2 1. 修复 FP16 in-place Cast 别名冲突 (VEC_ERROR) - 文件: op_kernel/arch35/apply_adam_v2_kernel.h - 改动: ProcessAdamFp16 和 ProcessMbartAdamFp16 中,用 B4 作为 FP16 中转缓冲,改为逐输入 CopyIn→B4(FP16)→Cast→B{target}(FP32) 模式,确保 Cast 的 src (B4) 和 dst (B{target}) 在不同 TBuf 上,消除别名冲突 - 新增: Process() 中 fetch evVtoMTE2 事件,前 3 个输入完成后通过 SetFlag/WaitFlag(V_MTE2) 释放 B4 供下一个输入复用 - 不变: Cast back (FP32→FP16) 保持 in-place(narrowing 安全) 2. output 名称对齐 canndev - 文件: op_host/apply_adam_v2_def.cpp - 改动: output 从 var_out/m_out/v_out 改为 var/m/v 3. infershape 对齐 canndev - 文件: op_host/apply_adam_v2_infershape.cpp - 改动: 从 InferShape4Elewise 改为内联实现 InferShape4InIdxAndOutVector 逻辑(output0,1,2 = input0 shape),包含 canndev 的 input shape 校验逻辑 4. tiling output shape 直取 input - 文件: op_host/arch35/apply_adam_v2_tiling_arch35.cpp - 改动: output shape 不再从 ctx_->GetOutputShape 读取,直接用 raw_input_shapes_[i](inplace 语义保证 outputi = inputi),绕过 GEIR infershape 推导问题 5. README 补充约束 - GEIR 模式不支持 -1/-2 动态 shape(canndev infershape 限制) fused_mul_apply_momentum 1. 修复 FP16 跨 tile V_MTE2 事件死锁 - 文件: op_kernel/arch35/fused_mul_apply_momentum_kernel.h - 改动: ProcessTile 结尾对 FP16 路径补上 SetFlag(V_MTE2),与下一 tile 开头的 WaitFlag(V_MTE2) 配对 - 影响范围: 仅 FP16 路径(if constexpr (IS_FP16)),FP32 不受影响 2. infershape 对齐 canndev - 文件: op_host/fused_mul_apply_momentum_infershape.cpp - 改动: 从 InferShape4Elewise 改为内联实现 InferShape4InIdxAndOutVector 逻辑(output0,1 = input0 shape) 3. tiling output shape 直取 input - 文件: op_host/arch35/fused_mul_apply_momentum_tiling_arch35.cpp - 改动: 同 apply_adam_v2,output shape 直取 rawInputShapes_[i] 4. def 补充 use_locking 属性 - 文件: op_host/fused_mul_apply_momentum_def.cpp - 改动: 添加 this->Attr("use_locking").AttrType(OPTIONAL).Bool(false) 5. README 补充约束 - 同 apply_adam_v2 验证 - ApplyAdamV2 L0_004 (FP32, mbart_adam): Kernel 模式 PASS - FusedMulApplyMomentum L0_001 (FP16, standard): Kernel 模式 PASS(修复死锁后) - GEIR 模式: 非 -1/-2 shape 场景 inplace 检查通过;-1/-2 场景受 canndev infershape 限制不支持(README 已说明) See merge request: cann/ops-nn!9005 | 18 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 8 天前 | |
AIDD扫描语义问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !9352 merge master into master AIDD扫描语义问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 AIDD扫描语义问题修改 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9352 | 11 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 11 天前 | |
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 | 1 个月前 | |
BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !9453 merge master into master BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> BNInfer:泛化测试1000条均PASS InplaceApplyRMSProp:泛化测试1000条均PASS ApplyCamePart1:泛化测试1000条均PASS ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9453 | 10 天前 | |
feat(optim): add ApplyCamePart2 operator Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !9121 merge apply_came_part2 into master feat(optim): add ApplyCamePart2 operator Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: ## PR: feat(optim): add ApplyCamePart2 operator ### 概述 新增 ApplyCamePart2 算子,实现 CAME 优化器 4-Part 拆分的第二部分(Part2)。在 Part1 已计算出 grad 的行/列/总和统计(sum_grad_r、sum_grad_c、sum_grad_rc)后,本算子对上一 step 的行/列二阶矩估计 r、c 做 EMA 更新,并用置信度归一化计算归一化更新方向 u,同时累加 u 的平方和 sum_square_u 供 Part3 继续消费。算子基于 Ascend C 开发,支持 Ascend950 (arch35) 平台,仅支持 GEIR 图模式调用。 CAME 优化器分四个 Part 串行执行:本算子为第二部分,完成 r/c 二阶矩 EMA 更新与归一化更新方向 u 的计算;与 ApplyCamePart1(梯度统计)、ApplyCamePart3(裁剪 + 一阶矩)、ApplyCamePart4(参数更新)配套使用。其中 r、c 为原地(in-place)更新。 ### 算子功能 实现 CAME 优化器 Part2 阶段的计算公式(对齐 kernel 实现): $$ \begin{aligned} r_{\text{out}} &= \beta_2 \cdot r + (1 - \beta_2) \cdot \frac{\text{sum\_grad\_r}}{M} \\ c_{\text{out}} &= \beta_2 \cdot c + (1 - \beta_2) \cdot \frac{\text{sum\_grad\_c}}{N} \\ \text{denom} &= \beta_2 \cdot \frac{\text{sum\_r}}{N} + (1 - \beta_2) \cdot \frac{\text{sum\_grad\_rc}}{M \cdot N} \\ u &= \frac{\text{grad}}{\sqrt{r_{\text{out}} \cdot c_{\text{out}} \,/\, \text{denom}}} \\ \text{sum\_square\_u} &= \sum (u \odot u) \end{aligned} $$ 其中 $N=\text{grad.shape}[0]$ 为行数、$M=\text{grad.shape}[1]$ 为列数,$r_{\text{out}}$ 按行广播、$c_{\text{out}}$ 按列广播,$\text{sum\_r}$ 缺省时由算子内部计算 $\sum r$,$\text{global\_shape}$ 缺省时取 grad 的 $[N, M]$。 **关键特性**: - **In-place 更新**:r/c 输出与输入同名共享 GM 地址,框架将同一 GM 地址传给 kernel 的输入/输出参数,kernel 先读输入再写输出,并在 SyncAll 后读取更新值,原地语义正确 - **三阶段串行流水线**:Kernel 分 ProcessR(行二阶矩 EMA)→ ProcessC(列二阶矩 EMA)→ ProcessU(归一化方向 + 平方和)三阶段串行执行,阶段间通过 SyncAll 全核同步保证数据一致性 - **Pre/Post 辅助核**:Pre 阶段(sum_r 缺省时触发)分块计算 $\sum r$ 并通过 AtomicAdd 写入 workspace;Post 阶段由 core0 跨核归约 sum_square_u - **TypicalNet 优化**:对常见网络 shape(1024×1024、1024×4096、4096×1024、116736×1024)使用专用 TilingKey(201-203)和精简 kernel 路径 - **多 dtype 支持**:grad/r/c 支持 FP16/FP32/BF16;u/sum_square_u 强制 FP32 保精度;FP16/BF16 路径使用 ApplyCamePart2Float16 专用类 ### 对标竞品 | 竞品 | 接口 | 说明 | |------|------|------| | PyTorch | came_pytorch CAME optimizer | 功能对标,PyTorch 在 Python 层实现单阶段融合 | | NumPy | CPU 参考实现 | 功能对标,CANN 拆分为 4-Part 串行 | ### 支持规格 | 项目 | 支持情况 | |------|---------| | **数据类型** | float16, float32, bfloat16(grad/r/c);float32(u/sum_square_u/sum_grad_r/c/rc/beta2/sum_r);int64(global_shape) | | **数据格式** | ND | | **平台** | Ascend950 (arch35)、Atlas A3 训练/推理系列、Atlas A2 训练/推理系列 | | **调用模式** | GEIR 图模式 | | **输入端口** | 9 个(7 REQUIRED: grad, sum_grad_r, sum_grad_c, sum_grad_rc, r, c, beta2;2 OPTIONAL: sum_r, global_shape) | | **输出端口** | 4 个(r, c, u, sum_square_u;r/c 原地更新) | | **维度** | 仅支持 2D grad(rank=2,shape=[N, M]) | ### 交付件清单 optim/apply_came_part2/ ├── CMakeLists.txt # 构建配置 ├── README.md # 算子说明文档 ├── examples/ │ ├── test_geir_apply_came_part2.cpp # GEIR 图模式调用示例 │ └── arch35/ │ ├── test_geir_apply_came_part2.cpp # GEIR 静态数值校验 │ └── test_geir_apply_came_part2_dynamic.cpp # GEIR 动态 shape 校验 ├── op_graph/ │ ├── apply_came_part2_proto.h # GE IR 原型定义(9输入4输出,r/c同名原地) │ └── apply_came_part2_graph_infer.cpp # 图模式 InferDataType ├── op_host/ │ ├── apply_came_part2_def.cpp # 算子定义(7+2输入4输出) │ ├── apply_came_part2_infershape.cpp # 形状推导(u=grad.shape, r/c=输入shape) │ └── arch35/ │ ├── apply_came_part2_tiling_arch35.h # Tiling 数据结构 + CompileInfo │ └── apply_came_part2_tiling_arch35.cpp # Tiling 计算(596行) ├── op_kernel/ │ ├── apply_came_part2.cpp # Kernel 入口(6 TilingKey 分发 + Pre/Post) │ └── arch35/ │ ├── apply_came_part2.h # 通用 Kernel 类声明(976行实现) │ ├── apply_came_part2_common.h # 公共常量与工具函数 │ ├── apply_came_part2_pre.h # Pre 阶段:sum_r 计算 │ ├── apply_came_part2_post.h # Post 阶段:sum_square_u 跨核归约 │ ├── apply_came_part2_float16.h # FP16/BF16 专用 Kernel │ ├── apply_came_part2_typical_net.h # TypicalNet 专用 Kernel(float) │ └── apply_came_part2_float16_typical_net.h # TypicalNet 专用 Kernel(fp16/bf16) └── tests/ut/op_host/ ├── test_apply_came_part2_infershape.cpp # InferShape UT └── arch35/ └── test_apply_came_part2_tiling.cpp # Tiling UT ### 测试验证 #### 单元测试 (UT) - **覆盖范围**:InferShape + Tiling - **状态**:已交付 - **InferShape UT**:grad rank 校验、shape copy 正确性 - **Tiling UT**:形状校验、多核切分、TypicalNet 检测、Workspace 分配 #### GEIR 端对端验证 - **状态**:已交付 - **静态数值校验**:构图运行并与 CPU golden 逐值比对 r/c/u/sum_square_u - **动态 shape 校验**:动态维度(-1)与动态 rank(-2)多组 shape 校验 - **覆盖范围**: - 数据类型:FP32 / FP16 / BF16 - 形状组合:常规 shape + TypicalNet shape - 特殊场景:空 Tensor(N=0 或 M=0)、可选输入 sum_r/global_shape 缺省 ### 代码质量 - ✅ 文件头格式统一(Copyright 注释块) - ✅ Tiling 校验使用 OP_LOGE/VECTOR_INNER_ERR_REPORT 统一日志格式(rank/shape/dtype 三级校验) - ✅ 魔鬼数字常量化(BLOCK_SIZE=32, CALC_SIZE=256, CACHE_LINE=512, NUM_SCALAR_IN_UB=7) - ✅ InferShape 使用 OP_CHECK_NULL_WITH_CONTEXT + OP_CHECK_IF 格式 - ✅ InferDataType 支持图模式注册 - ✅ Kernel 三阶段流水线 + SyncAll 全核同步保证数据一致性 - ✅ In-place r/c 更新语义正确(先读后写 + SyncAll 后再读) - ✅ TypicalNet 优化路径覆盖 4 组常见 shape - ✅ 单元测试已交付(InferShape UT + Tiling UT) - ✅ GEIR 端对端示例已交付(静态 + 动态 shape) ### 编译验证 bash cd ops-nn bash build.sh --soc=ascend950 --pkg --ops=apply_came_part2 -j 256 # 预期输出 ✅ 编译成功 ✅ 生成算子包:cann-ops-nn-custom_linux-x86_64.run ### 关键实现细节 #### 1. 算子接口 | 参数 | 类型 | 说明 | |:-----|:-----|:-----| | INPUT grad | Tensor (REQUIRED) | 梯度,二维张量 [N, M],fp16/fp32/bf16 | | INPUT sum_grad_r | Tensor (REQUIRED) | grad 按行求和,shape [N],fp32 | | INPUT sum_grad_c | Tensor (REQUIRED) | grad 按列求和,shape [M],fp32 | | INPUT sum_grad_rc | Tensor (REQUIRED) | grad 全体元素之和,shape [1],fp32 | | INPUT r | Tensor (REQUIRED) | 行二阶矩估计,shape [N],fp16/fp32/bf16 | | INPUT c | Tensor (REQUIRED) | 列二阶矩估计,shape [M],fp16/fp32/bf16 | | INPUT beta2 | Tensor (REQUIRED) | 二阶矩衰减系数,标量 shape [1],fp32 | | OPTIONAL_INPUT sum_r | Tensor (OPTIONAL) | r 的全体元素之和,shape [1],fp32 | | OPTIONAL_INPUT global_shape | Tensor (OPTIONAL) | 原始 [N, M],shape [2],int64 | | OUTPUT r | Tensor (REQUIRED) | 更新后的行二阶矩,shape [N],原地更新 | | OUTPUT c | Tensor (REQUIRED) | 更新后的列二阶矩,shape [M],原地更新 | | OUTPUT u | Tensor (REQUIRED) | 归一化更新方向,shape = grad.shape,强制 fp32 | | OUTPUT sum_square_u | Tensor (REQUIRED) | u 的平方和,shape [1],fp32 | #### 2. Kernel 实现 - **架构**:三阶段串行流水线(ProcessR → ProcessC → ProcessU)+ Pre/Post 辅助核 - **TilingKey 分发**:6 个 Key(101-103 通用路径,201-203 TypicalNet 路径),通过 TILING_KEY_IS 宏分发 - **ProcessR**:行二阶矩 EMA 更新,r_out = beta2*r + (1-beta2)*sum_grad_r/M(Muls + Axpy) - **ProcessC**:列二阶矩 EMA 更新,c_out = beta2*c + (1-beta2)*sum_grad_c/N(Muls + Axpy) - **ProcessU**: 1. 计算 denom = beta2*sum_r/N + (1-beta2)*sum_grad_rc/(M*N) 2. CopyInUr/CopyInUc:加载更新后的 r/c 3. CopyInGrad:分块加载 grad 4. BroadcastR → TransposeR(ConfusionTranspose) → MulRC(r*c) → Muls(rcCoefficient) → Sqrt → Div(grad/sqrt) → Mul(u*u) → ReduceSumU 5. CopyOutU:写 u 到 GM + 写 per-core sum_square_u 到 workspace #### 3. 精度策略 - **FP32**:原生计算,无转换 - **FP16/BF16**:r/c 更新使用原生 dtype(Muls/Axpy 支持);u 计算在 ApplyCamePart2Float16 类中使用 Cast→FP32 计算→u 强制 fp32 输出 #### 4. Tiling 实现 - **形状校验**:grad rank==2;r/c/sum_grad_r/sum_grad_c/sum_grad_rc rank==1;shape 一致性;dtype 一致性 - **Tiling4CalcR**:按 N 切分多核,UB 空间按 N/(N+M) 比例分配,对齐 32B - **Tiling4CalcC**:按 M 切分多核,UB 空间按 M/(N+M) 比例分配,对齐 32B - **Tiling4CalcRc**:复用 r 切分,行方向按 CALC_SIZE/4 切分,列方向按 CALC_SIZE 切分 - **TypicalNet**:4 组 shape(1024×1024 等)使用 128 对齐 + 全列加载优化 - **Workspace**:sysWorkspace(16MB) + sumRWorkspace(512B) + sumSquareUWorkspace(核数×loop 数,512B 对齐) #### 5. In-place 优化 - r/c 输出与输入同名,框架保证 GM 地址一致 - Kernel ProcessR/ProcessC 先读输入 r/c 再写输出 r_out/c_out - SyncAll 后 ProcessU 从 rOutGm_/cOutGm_ 读取更新后的值 - Proto 定义中 INPUT r/c 与 OUTPUT r/c 同名,实现原地语义 ### 依赖与限制 - **依赖**:CANN 9.0.0 - **配套算子**:ApplyCamePart1(梯度统计)、ApplyCamePart3(裁剪 + 一阶矩)、ApplyCamePart4(参数更新) - **限制**: - 仅支持 GEIR 图模式(无 ACLNN 接口) - 仅支持 Ascend950 (arch35) - 仅支持 2D grad(rank=2,shape=[N, M]) - grad/r/c 三者 dtype 必须一致 - r/c 为原地输出 - 支持空 Tensor(N=0 或 M=0 时返回空结果,不报错) - 支持可选输入 sum_r(缺省时内部计算)和 global_shape(缺省时取 grad shape) ### Checklist - [x] 代码符合 ops-nn 内置算子标准 - [x] 文件头格式统一 - [x] Tiling 校验规范化(rank/shape/dtype 三级) - [x] clang-format 格式化 - [x] InferShape 支持 rank 校验 - [x] InferDataType 支持图模式注册 - [x] Kernel 三阶段流水线 + SyncAll 同步 - [x] In-place r/c 更新语义正确 - [x] TypicalNet 优化路径 - [x] 单元测试通过(InferShape UT + Tiling UT) - [x] GEIR 端对端验证通过(静态 + 动态 shape) - [x] README 文档完整 - [ ] 编译安装验证通过(待验证) See merge request: cann/ops-nn!9121 | 8 天前 | |
BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !9453 merge master into master BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> BNInfer:泛化测试1000条均PASS InplaceApplyRMSProp:泛化测试1000条均PASS ApplyCamePart1:泛化测试1000条均PASS ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9453 | 10 天前 | |
feat: 新增 ApplyCamePart4 算子 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9123 merge master into master feat: 新增 ApplyCamePart4 算子 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 新增 ApplyCamePart4 算子,用于 CAME 优化器第 4 段(参数更新段)。 输入待更新参数 param_in、一阶动量 m(形状 (N,M))与置信因子 r_in(N)、c_in(M),按 CAME 更新规则回写 param_out、r_out、c_out。sum_r(全 N 行 r_in 的归约和)与 global_shape(全局 N,M)为可选输入:分布式场景由前序算子/全局形状传入;单机场景缺省,kernel 内部完成归约并取本地 n/m。 - 数据类型:param_in/m/r_in/c_in 及输出 param_out/r_out/c_out 支持 FLOAT/FLOAT16/BFLOAT16;weight_decay/lr/beta3/sum_r/sum_u_r/sum_u_c/sum_u_rc 恒为 FLOAT;global_shape 为 INT64。 - 数据格式:全部 ND。 - 无属性(attr);weight_decay/lr/beta3 等标量均作为输入传入。 - 平台:Ascend 950PR/Ascend 950DT(arch35,本仓 vendor 包);Atlas A2 系列由 canndev 内置 ascendc 实现支持。 ## 关联的Issue - #5176 ## 测试 - 新增 tiling 单测:tests/ut/op_host/arch35/test_apply_came_part4_tiling.cpp - 新增 infershape 单测:tests/ut/op_host/test_apply_came_part4_infershape.cpp - 新增 golden 数据:tests/assets/golden.py - 新增图模式调用样例:examples/test_geir_apply_came_part4.cpp ## 文档更新 - 新增算子 README:optim/apply_came_part4/README.md - 更新算子清单:docs/zh/op_list.md ## 类型标签 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9123 | 12 天前 | |
fix(docs): 修正 Softsign/ApplyCenteredRMSProp/BNInferGrad 产品支持表 Atlas 200I/500 A2 标记 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9336 merge fix_doc into master fix(docs): 修正 Softsign/ApplyCenteredRMSProp/BNInferGrad 产品支持表 Atlas 200I/500 A2 标记 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 修复内容 修正 3 个算子 README.md「产品支持情况」表中 **Atlas 200I/500 A2 推理产品** 的支持标记错误(× → √): | 算子 | 文件 | 修改前 | 修改后 | |---|---|---|---| | Softsign | activation/softsign/README.md | × | √ | | ApplyCenteredRMSProp | optim/apply_centered_rms_prop/README.md | × | √ | | BNInferGrad | norm/bn_infer_grad/README.md | × | √ | ## 修复依据 以 canndev 仓 ini 为产品支持判据(Ascend 950PR/DT 按规则默认支持,其余系列以 ini 实际注册为准)。 在 canndev/ops/built-in/tbe/op_info_cfg/ai_core/ascend310b/aic-ascend310b-ops-info.ini 中检索到上述三算子均已注册: - [Softsign] input0.dtype=float16,float - [ApplyCenteredRMSProp] dynamicShapeSupport.flag=true - [BNInferGrad] compute.cost=10 「Atlas 200I/500 A2 推理产品」对应 Ascend 310B 系列(Ascend310B1/B2/B3/B4),即 ascend310b ini。因此三算子在该产品实际可用,README 应标记为 √。 ## 不在本次修改范围 - **SeluGrad**:ascend310b ini 中未注册 [SeluGrad],其 README「×」标记正确,保持不变。 - 其余产品行(950PR/DT、A3、A2、推理系列、训练系列)均与 ini 一致,无需改动。 ## 变更清单 - activation/softsign/README.md - optim/apply_centered_rms_prop/README.md - norm/bn_infer_grad/README.md Fixes #5244 See merge request: cann/ops-nn!9336 | 11 天前 | |
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 | 1 个月前 | |
[CANNBot] apply_ftrl_v2算子增加异常拦截校验 Co-authored-by: chen_chenn<chenchen167@huawei.com> # message auto-generated for no-merge-commit merge: !8371 merge ApplyFtrlV2 into master [CANNBot] apply_ftrl_v2算子增加异常拦截校验 Created-by: chen_chenn Commit-by: chen_chenn Merged-by: cann-robot Description: ## 描述 apply_ftrl_v2算子增加异常拦截校验 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4828 ## 测试 TTK ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8371 | 22 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 11 天前 | |
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 | 1 个月前 | |
[CANNBot] 修复apply_keras_momentum标量输入时shape(var)!=shape(accum)的tiling报错 Co-authored-by: chen_chenn<chenchen167@huawei.com> # message auto-generated for no-merge-commit merge: !8913 merge fix_applyKerasMomentum into master [CANNBot] 修复apply_keras_momentum标量输入时shape(var)!=shape(accum)的tiling报错 Created-by: chen_chenn Commit-by: chen_chenn Merged-by: cann-robot Description: ## 描述 修复apply_keras_momentum标量输入时shape(var)!=shape(accum)的tiling报错 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4914 ## 测试 TTK ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8913 | 19 天前 | |
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 | 1 个月前 | |
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 | 1 个月前 | |
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 | 1 个月前 | |
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 | 1 个月前 | |
FusedAdam算子950实现 Co-authored-by: Tower19<liudingming3@huawei.com> # message auto-generated for no-merge-commit merge: !8934 merge master into master FusedAdam算子950实现 Created-by: Tower19 Commit-by: Tower19 Merged-by: cann-robot Description: ## 描述 完成FusedAdam算子kernel实现 ## 关联的Issue 待补充 ## 测试 待补充 ## 文档更新 更新了相关readme文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!8934 | 5 天前 | |
fix quickstart Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9897 merge master into master fix quickstart Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 修改quickstart的内容 ## 关联的Issue 关联Issue #3840 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9897 | 4 天前 | |
feat: add verification on FusedMulApplyKerasMomentum Co-authored-by: niukang_hw<niukang1@huawei.com> # message auto-generated for no-merge-commit merge: !8268 merge dev_fused_mul_apply_keras_momentum into master feat: add verification on FusedMulApplyKerasMomentum Created-by: niukang_hw Commit-by: niukang_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8268 | 1 个月前 | |
fix(proto): 统一 OPS_PROTO_DEF 去重宏保护格式 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9265 merge docs/heaviside-op-api-support into master fix(proto): 统一 OPS_PROTO_DEF 去重宏保护格式 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充去重宏(2 个算子): - norm/bn_infer_grad:BNInferGrad 补充 OPS_PROTO_DEF_BNINFERGRAD - optim/fused_mul_apply_momentum:FusedMulApplyMomentum 补充 OPS_PROTO_DEF_FUSEDMULAPPLYMOMENTUM 清理格式(3 个算子): - quant/act_ulq_clamp_max_grad:移除去重宏内多余空行 - quant/act_ulq_clamp_min_grad:移除去重宏内多余空行 - quant/acts_ulq_input_grad:移除去重宏内多余空行 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5193 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9265 | 12 天前 | |
fix: align fused_mul_apply_momentum_extern parameter types with canndev and drop BF16 support Co-authored-by: niukang_hw<niukang1@huawei.com> # message auto-generated for no-merge-commit merge: !9189 merge master into master fix: align fused_mul_apply_momentum_extern parameter types with canndev and drop BF16 support Created-by: niukang_hw Commit-by: niukang_hw Merged-by: cann-robot Description: ## 描述 在 TTK 的 GEIR 模式测试中,算子 fused_mul_apply_momentum_extern 出现类型错误。 #### 问题现象 测试报错:The op do not support thr dtype: DT_BFLOAT16 表明该算子当前无法处理 BF16(bfloat16)数据类型输入。 #### 根因定位 Kernel 层面:该算子的 kernel 实现中已包含对 BF16 类型的支持。 Proto/注册层面:算子的 Proto 定义(或 REG_OP 参数类型声明)中并未包含 BF16 类型,导致类型检查失败。 对齐要求:该 Proto 定义必须与上游 canndev 仓库保持一致。而 canndev 中该算子不支持 BF16,因此不能独立添加 BF16 支持。 #### 修改方案 fused_mul_apply_momentum_extern 算子删除所有 BF16 相关代码。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5132 需求开发pr: https://gitcode.com/cann/ops-nn/pull/7533 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> #### 测试环境 - 平台:Ascend950PR (arch35, DAV_3510) - CANN:9.0.0 - TTK:ops-test-kit v3.0.0 - 用例总数:100 条 #### 按输入 dtype × Nesterov 模式统计 | 通路 | dtype | use_nesterov | TilingKey | 用例数 | Kernel 模式 | GEIR 模式 | |------|-------|:------------:|:---------:|:------:|:-----------:|:---------:| | K0 | FP32 | false | 0 | 20 | 20/20 PASS | 20/20 PASS | | K1 | FP32 | true | 1 | 15 | 15/15 PASS | 15/15 PASS | | K2 | FP16 | false | 0 | 20 | 20/20 PASS | 20/20 PASS | | K3 | FP16 | true | 1 | 15 | 15/15 PASS | 15/15 PASS | | S | 混合 | 混合 | 0/1 | 30 | 30/30 PASS | 30/30 PASS | | **合计** | | | | **100** | **100/100 PASS** | **100/100 PASS** | #### 特殊场景覆盖(S 系列 30 条) | 场景 | 用例数 | dtype | Kernel | GEIR | |------|--------|-------|:------:|:----:| | rank 1~8 多维 shape | 8 | FP32/FP16 | 8/8 PASS | 8/8 PASS | | 对齐边界 256/512/1024 元素 | 6 | FP32/FP16 | 6/6 PASS | 6/6 PASS | | 极端值(lr=1e-5, momentum=0.999) | 4 | FP32/FP16 | 4/4 PASS | 4/4 PASS | | 正负混合数据 | 4 | FP32/FP16 | 4/4 PASS | 4/4 PASS | | NaN 传播 | 2 | FP32 | 2/2 PASS | 2/2 PASS | | Inf 传播 | 2 | FP32 | 2/2 PASS | 2/2 PASS | | 全零梯度 | 2 | FP32/FP16 | 2/2 PASS | 2/2 PASS | | use_locking=True | 2 | FP32/FP16 | 2/2 PASS | 2/2 PASS | #### 结论 **Kernel 模式:100/100 PASS(0 FAIL)** **GEIR 模式:100/100 PASS(0 FAIL)** 双通路验证全部通过,覆盖 FP32/FP16 × 标准/Nesterov 四种组合 + 30 条特殊场景用例。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9189 | 13 天前 | |
docs_fix Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !9894 merge master into master docs_fix Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 本 PR 对 ctc_loss、l1_loss、fused_adamw、fused_sgd 四个算子的接口文档(.md)进行勘误修复,共涉及 4 个文件,改动量 +15/-16。 主要解决以下文档与实现不一致的问题: - **参数名大小写不一致**:文档中参数名与实际接口签名不符 - **描述对象错误**:文档描述的作用对象与实际接口语义不匹配 - **约束条件过时**:文档约束与当前实现逻辑不符 - **参数命名规范**:文档参数名未遵循 camelCase 规范 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | loss/ctc_loss_v2/docs/aclnnCtcLossV2.md | 多处 | 将 targetLengths 统一改为 targetlengths,与实际 aclIntArray* 参数命名一致,消除大小写歧义 | | 2 | loss/lp_loss/docs/aclnnL1Loss.md | +2/-2 | 修正 target 参数描述:broadcast 关系对象由 gradOutput、target 更正为 self;补充 out 参数说明为"输出 tensor,存放 L1Loss 计算结果",并将"shape 只支持 0 维"规范为"out 为 0 维 tensor" | | 3 | optim/fused_adamw/docs/aclnnFusedAdamw.md | +1/-1 | 修正约束描述:原"数据格式不在支持范围"更正为"数据类型不同",与实际类型校验逻辑一致 | | 4 | optim/fused_sgd/docs/aclnnFusedSgd.md | +1/-2 | 参数名 workspace_size 更正为 workspaceSize,与 aclnnFusedSgd 接口签名一致;删除过时的 gradScale 等于 0 约束说明 | ### 改动原则 - **纯文档修复,不改变任何代码逻辑**:所有改动均为 .md 文件内的文字描述,不涉及 .cpp/.h 源文件 - **对齐实现**:修正后的描述与当前算子实现、接口签名、约束逻辑保持一致 - **聚焦最小改动**:仅修正文档与实现不一致项,不做额外的文档重构 ## 关联的Issue Issue #5554 ## 测试 - 文档改动无需编译/功能测试,通过人工 review 验证描述与代码实现一致 - 改动不影响算子行为,CI 编译与功能测试结果不受影响 ## 文档更新 本 PR 即为文档更新,涉及以下文件: - loss/ctc_loss_v2/docs/aclnnCtcLossV2.md - loss/lp_loss/docs/aclnnL1Loss.md - optim/fused_adamw/docs/aclnnFusedAdamw.md - optim/fused_sgd/docs/aclnnFusedSgd.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9894 | 4 天前 | |
feat(optim): add InplaceApplyAdaMax operator for Ascend950 Co-authored-by: Miao_Haifeng<miaohaifeng@huawei.com> # message auto-generated for no-merge-commit merge: !8919 merge inplace_apply_ada_max_code_review into master feat(optim): add InplaceApplyAdaMax operator for Ascend950 Created-by: Almost_CANN Commit-by: Miao_Haifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 功能说明 - **算子功能**:执行AdaMax优化器的单步参数更新。AdaMax是Adam优化器的变体,使用无穷范数 $L_{\infty}$ 代替二阶矩估计,对权重 var、一阶矩m、无穷范数v进行更新。输出端口名 var/m/v 与输入同名(GE inplace 别名),框架将输出内存别名到输入内存,实现原地更新。 - **计算公式**: 给定时间步 $t$ 的梯度 $g_t$,衰减系数 $\beta_1, \beta_2$,学习率 $lr$,数值稳定常数 $\epsilon$,以及外部传入的偏差校正因子 $\beta_1^t$: $$ \begin{aligned} m_{t} &= \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t \\ v_{t} &= \max(\beta_2 \cdot v_{t-1},\ |g_t|) \\ var_{t} &= var_{t-1} - \frac{lr}{1 - \beta_1^t} \cdot \frac{m_t}{v_t + \epsilon} \end{aligned} $$ 算子原型:9输入 + 3输出 (var/m/v,输出名与输入同名 = GE inplace 别名) + 1属性 (use_locking)。对齐 canndev REG_OP(ApplyAdaMaxD)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了ops-nn/docs/zh/op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8919 | 15 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 12 天前 | |
feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9685 merge tf-plugin-part2 into master feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 为 TensorFlow(TF)算子插件迁移的第二批(分支 tf-plugin-part2),新增 21 个 *_tf_plugin.cpp 插件注册文件,覆盖 common、conv、matmul、pooling、optim、norm、index、vfusion 模块。每个文件通过 REGISTER_CUSTOM_OP 将 TF 框架算子注册为自定义算子: - .FrameworkType(TENSORFLOW):声明算子来源于 TF 框架; - .OriginOpType(...):映射原始 TF 算子类型(含 Resource* 变体,如 ApplyAddSign / ResourceApplyAddSign); - 参数解析:多数算子通过 AutoMappingByOpFn 自动映射属性;Conv2D 额外将 filter format 固定为 HWCN,并根据 explicit_paddings 与输入 format(NCHW/NHWC)生成 pads 属性;Conv2DBackpropInput / Conv2DBackpropFilter / Conv3DBackpropFilter / Conv3DBackpropInput / AvgPool3D 等设置 NDHWC/NCDHW/DHWCN 等 format 与 pads 默认值;BatchMatMulV2 将 adj_x / adj_y 映射为 adj_x1 / adj_x2,并对 BatchMatMulV3 提供 ParseOpToGraphFn 将算子展开为 Data -> BatchMatMulV3 -> Cast 子图;InstanceNormGrad 提供 FusionParseParamsFn 融合参数解析接口; - .ImplyType(ImplyType::TVM):所有注册算子采用 TVM 实现。 ### 新增算子清单(21 个文件) | 文件 | 注册算子(OriginOpType) | |------|-------------------------| | common/src/framework/apply_add_sign_tf_plugin.cpp | ApplyAddSign(ApplyAddSign / ResourceApplyAddSign) | | common/src/framework/basic_lstm_cell_tf_plugin.cpp | BasicLSTMCell | | common/src/framework/basic_lstm_cell_grad_tf_plugin.cpp | BasicLSTMCellCStateGrad / BasicLSTMCellWeightGrad / BasicLSTMCellInputGrad | | common/src/framework/dynamic_lstm_tf_plugin.cpp | DynamicLSTM | | conv/conv2d_v2/framework/conv2d_tf_plugin.cpp | Conv2D | | conv/conv3d_v2/framework/conv3d_tf_plugin.cpp | Conv3D | | conv/conv3d_backprop_filter_v2/framework/conv2d_backprop_filter_tf_plugin.cpp | Conv2DBackpropFilter | | conv/conv3d_backprop_filter_v2/framework/conv3d_backprop_filter_tf_plugin.cpp | Conv3DBackpropFilter(Conv3DBackpropFilterV2) | | conv/conv3d_backprop_input_v2/framework/conv2d_backprop_input_tf_plugin.cpp | Conv2DBackpropInput | | conv/conv3d_backprop_input_v2/framework/conv3d_backprop_input_tf_plugin.cpp | Conv3DBackpropInput(Conv3DBackpropInputV2) | | index/non_zero_with_value_shape_v2/framework/non_zero_with_value_shape_v2_tf_plugin.cpp | NonZeroWithValueShapeV2 | | matmul/mat_mul_v3/framework/matmul_tf_plugin.cpp | MatMulV2(MatMul) | | matmul/batch_mat_mul_v3/framework/batch_matmul_tf_plugin.cpp | BatchMatMulV2(BatchMatMul / BatchMatMulV2 / BatchMatMulV3) | | norm/instance_norm_grad/framework/instance_norm_grad_tf_plugin.cpp | InstanceNormGrad | | optim/inplace_apply_adagrad_da/framework/apply_adagrad_da_tf_plugin.cpp | ApplyAdagradDA(ApplyAdagradDA / ResourceApplyAdagradDA) | | optim/inplace_apply_adagrad_v2/framework/apply_adagradv2_tf_plugin.cpp | ApplyAdagradV2(ApplyAdagradV2 / ResourceApplyAdagradV2) | | optim/inplace_apply_power_sign/framework/apply_power_sign_tf_plugin.cpp | ApplyPowerSign(ApplyPowerSign / ResourceApplyPowerSign) | | pooling/avg_pool3_d/framework/avg_pool3d_tf_plugin.cpp | AvgPool3D | | pooling/dilation2_d/framework/dilation2d_tf_plugin.cpp | Dilation2D | | pooling/max_pool_3d_grad_grad/framework/max_pool3d_grad_grad_tf_plugin.cpp | MaxPool3DGradGrad | | vfusion/normalize_bbox/framework/normalize_bbox_tf_plugin.cpp | NormalizeBBox | ### 改动原因 TF 算子插件迁移系列工作的第二批:将 TF 算子按模块拆分为独立的 */framework/*_tf_plugin.cpp 注册文件,统一注册方式与代码组织。 ## 关联的Issue - #5464 ## 测试 本次变更仅新增插件注册文件,未包含测试用例变更。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9685 | 5 天前 | |
feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9685 merge tf-plugin-part2 into master feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 为 TensorFlow(TF)算子插件迁移的第二批(分支 tf-plugin-part2),新增 21 个 *_tf_plugin.cpp 插件注册文件,覆盖 common、conv、matmul、pooling、optim、norm、index、vfusion 模块。每个文件通过 REGISTER_CUSTOM_OP 将 TF 框架算子注册为自定义算子: - .FrameworkType(TENSORFLOW):声明算子来源于 TF 框架; - .OriginOpType(...):映射原始 TF 算子类型(含 Resource* 变体,如 ApplyAddSign / ResourceApplyAddSign); - 参数解析:多数算子通过 AutoMappingByOpFn 自动映射属性;Conv2D 额外将 filter format 固定为 HWCN,并根据 explicit_paddings 与输入 format(NCHW/NHWC)生成 pads 属性;Conv2DBackpropInput / Conv2DBackpropFilter / Conv3DBackpropFilter / Conv3DBackpropInput / AvgPool3D 等设置 NDHWC/NCDHW/DHWCN 等 format 与 pads 默认值;BatchMatMulV2 将 adj_x / adj_y 映射为 adj_x1 / adj_x2,并对 BatchMatMulV3 提供 ParseOpToGraphFn 将算子展开为 Data -> BatchMatMulV3 -> Cast 子图;InstanceNormGrad 提供 FusionParseParamsFn 融合参数解析接口; - .ImplyType(ImplyType::TVM):所有注册算子采用 TVM 实现。 ### 新增算子清单(21 个文件) | 文件 | 注册算子(OriginOpType) | |------|-------------------------| | common/src/framework/apply_add_sign_tf_plugin.cpp | ApplyAddSign(ApplyAddSign / ResourceApplyAddSign) | | common/src/framework/basic_lstm_cell_tf_plugin.cpp | BasicLSTMCell | | common/src/framework/basic_lstm_cell_grad_tf_plugin.cpp | BasicLSTMCellCStateGrad / BasicLSTMCellWeightGrad / BasicLSTMCellInputGrad | | common/src/framework/dynamic_lstm_tf_plugin.cpp | DynamicLSTM | | conv/conv2d_v2/framework/conv2d_tf_plugin.cpp | Conv2D | | conv/conv3d_v2/framework/conv3d_tf_plugin.cpp | Conv3D | | conv/conv3d_backprop_filter_v2/framework/conv2d_backprop_filter_tf_plugin.cpp | Conv2DBackpropFilter | | conv/conv3d_backprop_filter_v2/framework/conv3d_backprop_filter_tf_plugin.cpp | Conv3DBackpropFilter(Conv3DBackpropFilterV2) | | conv/conv3d_backprop_input_v2/framework/conv2d_backprop_input_tf_plugin.cpp | Conv2DBackpropInput | | conv/conv3d_backprop_input_v2/framework/conv3d_backprop_input_tf_plugin.cpp | Conv3DBackpropInput(Conv3DBackpropInputV2) | | index/non_zero_with_value_shape_v2/framework/non_zero_with_value_shape_v2_tf_plugin.cpp | NonZeroWithValueShapeV2 | | matmul/mat_mul_v3/framework/matmul_tf_plugin.cpp | MatMulV2(MatMul) | | matmul/batch_mat_mul_v3/framework/batch_matmul_tf_plugin.cpp | BatchMatMulV2(BatchMatMul / BatchMatMulV2 / BatchMatMulV3) | | norm/instance_norm_grad/framework/instance_norm_grad_tf_plugin.cpp | InstanceNormGrad | | optim/inplace_apply_adagrad_da/framework/apply_adagrad_da_tf_plugin.cpp | ApplyAdagradDA(ApplyAdagradDA / ResourceApplyAdagradDA) | | optim/inplace_apply_adagrad_v2/framework/apply_adagradv2_tf_plugin.cpp | ApplyAdagradV2(ApplyAdagradV2 / ResourceApplyAdagradV2) | | optim/inplace_apply_power_sign/framework/apply_power_sign_tf_plugin.cpp | ApplyPowerSign(ApplyPowerSign / ResourceApplyPowerSign) | | pooling/avg_pool3_d/framework/avg_pool3d_tf_plugin.cpp | AvgPool3D | | pooling/dilation2_d/framework/dilation2d_tf_plugin.cpp | Dilation2D | | pooling/max_pool_3d_grad_grad/framework/max_pool3d_grad_grad_tf_plugin.cpp | MaxPool3DGradGrad | | vfusion/normalize_bbox/framework/normalize_bbox_tf_plugin.cpp | NormalizeBBox | ### 改动原因 TF 算子插件迁移系列工作的第二批:将 TF 算子按模块拆分为独立的 */framework/*_tf_plugin.cpp 注册文件,统一注册方式与代码组织。 ## 关联的Issue - #5464 ## 测试 本次变更仅新增插件注册文件,未包含测试用例变更。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9685 | 5 天前 | |
[CANNBOT]:新增 InplaceApplyAdamWithAmsgrad 算子适配Ascend950 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9467 merge readme into master [CANNBOT]:新增 InplaceApplyAdamWithAmsgrad 算子适配Ascend950 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增 InplaceApplyAdamWithAmsgrad 算子(GEIR 通路,BF16/FP16/FP32) InplaceApplyAdamWithAmsgrad对AMSGrad优化器的四个状态张量var、m、v、vhat执行单步原地更新,语义对标TensorFlow ResourceApplyAdamWithAmsgrad。var、m、v、vhat在原地写回更新值;grad与六个标量超参参与计算,全部张量输入输出共享同一数据类型。 计算公式如下,更新依赖顺序固定为m→v→vhat(使用新v)→var(使用新m): $$ \alpha = lr \times \frac{\sqrt{1 - beta2\_power}}{1 - beta1\_power} $$ $$ m = m + (grad - m) \times (1 - beta1) $$ $$ v = v + (grad \times grad - v) \times (1 - beta2) $$ $$ vhat = where(vhat < v,\ v,\ vhat) $$ $$ var = var - \frac{m \times \alpha}{\sqrt{vhat} + epsilon} $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5407 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9467 | 5 天前 | |
[CANNBot]新增inplace_apply_add_sign优化器算子支持Ascend950 Co-authored-by: chen_chenn<chenchen167@huawei.com> # message auto-generated for no-merge-commit merge: !9013 merge inplace_apply_add_sign into master [CANNBot]新增inplace_apply_add_sign优化器算子支持Ascend950 Created-by: chen_chenn Commit-by: chen_chenn Merged-by: cann-robot Description: ## 描述 新增inplace_apply_add_sign优化器算子支持Ascend950 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5507 ## 测试 TTK obp冒烟 二级冒烟 ## 文档更新 optim/inplace_apply_add_sign/README.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9013 | 5 天前 | |
BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !9453 merge master into master BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> BNInfer:泛化测试1000条均PASS InplaceApplyRMSProp:泛化测试1000条均PASS ApplyCamePart1:泛化测试1000条均PASS ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9453 | 10 天前 | |
修复host侧数据格式校验等内容 Co-authored-by: zhaixiao<zhaixiao1@huawei.com> # message auto-generated for no-merge-commit merge: !9956 merge fix/inplace-apply-ftrl-precision into master 修复host侧数据格式校验等内容 Created-by: Onthetreeoh Commit-by: zhaixiao Merged-by: cann-robot Description: ## 描述 host侧新增数据格式校验,包括学习率等参数的rank-0,format校验,以及补充文档内容中参数的值域要求。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9956 | 1 天前 | |
feat: add inplace_apply_ftrl_v2 op Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !8646 merge feat/inplace-apply-ftrl-v2 into master feat: add inplace_apply_ftrl_v2 op Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 描述 新增 InplaceApplyFtrlV2 算子,FTRL-Proximal 在线学习优化算法的单步参数更新算子。支持 BFLOAT16/FLOAT16/FLOAT,仅 Ascend 950PR/DT。门禁:pre-commit PASSED, JIT/ophost UT/opgraph UT/opkernel UT 全 PASSED。 ## 关联的Issue 关联Issue #5192 ## 测试 - UT: ophost/opgraph/opkernel 全 PASSED - CI: 编译构建全部 SUCCESS ## 类型标签 - [x] 新特性 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8646 | 12 天前 | |
fix inplace_apply_keras_momentum 注册图模式接口修复 Co-authored-by: Davon14272<liuwenda4@huawei.com> # message auto-generated for no-merge-commit merge: !8877 merge fix/inplace-apply-keras-momentum-infer-dtype into master fix inplace_apply_keras_momentum 注册图模式接口修复 Created-by: Davon14272 Commit-by: Davon14272 Merged-by: cann-robot Description: ## 描述 这是算子安装/注册问题一算子opinfo已注册(能找到算子),但 op_proto的infer_datatype函数缺失或 .so未加 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4893](https://gitcode.com/cann/ops-nn/issues/4893) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8877 | 21 天前 | |
fix: InplaceApplyMentarum FP32 path var_out accuracy exception Co-authored-by: niukang_hw<niukang1@huawei.com> # message auto-generated for no-merge-commit merge: !8566 merge dev_inplace_apply_momentum into master fix: InplaceApplyMentarum FP32 path var_out accuracy exception Created-by: niukang_hw Commit-by: niukang_hw Merged-by: cann-robot Description: ## 描述 ### 1. 问题描述 InplaceApplyMomentum 算子 FP32 dtype 下 var_out 输出精度异常。TTK 100 条白盒用例中 42 条失败(PassRate 58%),失败模式为 var_out=FAIL, accum_out=PASS。FP16/BF16 路径不受影响。多核场景(65536元素/43核)下两个输出均错误。 根因有两个: - FP32 路径将 Vector 计算结果直接从 VECIN TQue buffer 执行 DataCopyPad(MTE3),缺少 V→MTE3 同步,写出未更新的脏数据 - 标量 lr/momentum 通过黑名单 API GlobalTensor::GetValue() 直接从 GM 读取,多核并发读取导致标量值错误 ### 2. 环境信息 - NPU: Ascend950PR (DAV_3510, arch35) - CANN: 9.0.0 - 算子仓: ops-nn, optim/inplace_apply_momentum - TTK: ops-test-kit 3.0.0 ### 3. 重现步骤 bash # 1. 编译安装算子 cd <ops-nn repo> source /usr/local/Ascend/cann-9.0.0/set_env.sh bash build.sh --ops=inplace_apply_momentum --soc=ascend950 cd build_out && bash cann-ops-nn-custom_linux-x86_64.run --install-path=/usr/local/Ascend/cann-9.0.0/opp --quiet --install-for-all # 2. 运行 TTK 测试(float32, shape=(65536,), 43核) cd <ops-test-kit> python3 -m ttk kernel -i <test_csv> \ --plugin <golden_dir> \ -t iam_012 --single-log # 3. 观察结果 # DYN_GOLD: FAIL,PASS (var_out=FAIL, accum_out=PASS) # precision_metrics: mere=0.0008, mare=7.83, threshold=0.0001220703125 最小复现:var=[1.0], accum=[0.5], lr=[0.01], grad=[0.1], momentum=[0.9], dtype=float32,golden 期望 var_out=0.9945,实际 kernel 输出 var_out=0(脏数据)。 ### 4. 预期结果 100 条白盒用例全部 PASS(PassRate 100%),var_out 与 golden tf.raw_ops.ResourceApplyMomentum 在容差范围内一致(FP32 rtol=1e-4)。 ### 5. 日志 / 截图 === 修复前 === TTK Test Summary: Total=100, PASS=58, FAIL=42, PassRate=58% iam_012 (float32, shape=(65536,), 43核): out[0] (var_out): mere=0.0008, mare=7.83, th=0.000122, FAIL out[1] (accum_out): mere=0.006, mare=37.0, th=0.000122, FAIL === 修复后 === TTK Test Summary: Total=100, PASS=100, FAIL=0, PassRate=100% 修复涉及两个文件: - op_kernel/arch35/inplace_apply_momentum.h:FP32 路径新增 VECOUT TQue 输出;标量读取从 GetValue() 改为 DataCopyPad+LocalTensor.GetValue() - op_host/arch35/inplace_apply_momentum_tiling_arch35.cpp:FP32_UB_BYTES_PER_ELEM 从 16 调整为 24 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4737 ## 测试 修复后,TTK Test Summary: Total=100, PASS=100, FAIL=0, PassRate=100% ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8566 | 27 天前 | |
feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9685 merge tf-plugin-part2 into master feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 为 TensorFlow(TF)算子插件迁移的第二批(分支 tf-plugin-part2),新增 21 个 *_tf_plugin.cpp 插件注册文件,覆盖 common、conv、matmul、pooling、optim、norm、index、vfusion 模块。每个文件通过 REGISTER_CUSTOM_OP 将 TF 框架算子注册为自定义算子: - .FrameworkType(TENSORFLOW):声明算子来源于 TF 框架; - .OriginOpType(...):映射原始 TF 算子类型(含 Resource* 变体,如 ApplyAddSign / ResourceApplyAddSign); - 参数解析:多数算子通过 AutoMappingByOpFn 自动映射属性;Conv2D 额外将 filter format 固定为 HWCN,并根据 explicit_paddings 与输入 format(NCHW/NHWC)生成 pads 属性;Conv2DBackpropInput / Conv2DBackpropFilter / Conv3DBackpropFilter / Conv3DBackpropInput / AvgPool3D 等设置 NDHWC/NCDHW/DHWCN 等 format 与 pads 默认值;BatchMatMulV2 将 adj_x / adj_y 映射为 adj_x1 / adj_x2,并对 BatchMatMulV3 提供 ParseOpToGraphFn 将算子展开为 Data -> BatchMatMulV3 -> Cast 子图;InstanceNormGrad 提供 FusionParseParamsFn 融合参数解析接口; - .ImplyType(ImplyType::TVM):所有注册算子采用 TVM 实现。 ### 新增算子清单(21 个文件) | 文件 | 注册算子(OriginOpType) | |------|-------------------------| | common/src/framework/apply_add_sign_tf_plugin.cpp | ApplyAddSign(ApplyAddSign / ResourceApplyAddSign) | | common/src/framework/basic_lstm_cell_tf_plugin.cpp | BasicLSTMCell | | common/src/framework/basic_lstm_cell_grad_tf_plugin.cpp | BasicLSTMCellCStateGrad / BasicLSTMCellWeightGrad / BasicLSTMCellInputGrad | | common/src/framework/dynamic_lstm_tf_plugin.cpp | DynamicLSTM | | conv/conv2d_v2/framework/conv2d_tf_plugin.cpp | Conv2D | | conv/conv3d_v2/framework/conv3d_tf_plugin.cpp | Conv3D | | conv/conv3d_backprop_filter_v2/framework/conv2d_backprop_filter_tf_plugin.cpp | Conv2DBackpropFilter | | conv/conv3d_backprop_filter_v2/framework/conv3d_backprop_filter_tf_plugin.cpp | Conv3DBackpropFilter(Conv3DBackpropFilterV2) | | conv/conv3d_backprop_input_v2/framework/conv2d_backprop_input_tf_plugin.cpp | Conv2DBackpropInput | | conv/conv3d_backprop_input_v2/framework/conv3d_backprop_input_tf_plugin.cpp | Conv3DBackpropInput(Conv3DBackpropInputV2) | | index/non_zero_with_value_shape_v2/framework/non_zero_with_value_shape_v2_tf_plugin.cpp | NonZeroWithValueShapeV2 | | matmul/mat_mul_v3/framework/matmul_tf_plugin.cpp | MatMulV2(MatMul) | | matmul/batch_mat_mul_v3/framework/batch_matmul_tf_plugin.cpp | BatchMatMulV2(BatchMatMul / BatchMatMulV2 / BatchMatMulV3) | | norm/instance_norm_grad/framework/instance_norm_grad_tf_plugin.cpp | InstanceNormGrad | | optim/inplace_apply_adagrad_da/framework/apply_adagrad_da_tf_plugin.cpp | ApplyAdagradDA(ApplyAdagradDA / ResourceApplyAdagradDA) | | optim/inplace_apply_adagrad_v2/framework/apply_adagradv2_tf_plugin.cpp | ApplyAdagradV2(ApplyAdagradV2 / ResourceApplyAdagradV2) | | optim/inplace_apply_power_sign/framework/apply_power_sign_tf_plugin.cpp | ApplyPowerSign(ApplyPowerSign / ResourceApplyPowerSign) | | pooling/avg_pool3_d/framework/avg_pool3d_tf_plugin.cpp | AvgPool3D | | pooling/dilation2_d/framework/dilation2d_tf_plugin.cpp | Dilation2D | | pooling/max_pool_3d_grad_grad/framework/max_pool3d_grad_grad_tf_plugin.cpp | MaxPool3DGradGrad | | vfusion/normalize_bbox/framework/normalize_bbox_tf_plugin.cpp | NormalizeBBox | ### 改动原因 TF 算子插件迁移系列工作的第二批:将 TF 算子按模块拆分为独立的 */framework/*_tf_plugin.cpp 注册文件,统一注册方式与代码组织。 ## 关联的Issue - #5464 ## 测试 本次变更仅新增插件注册文件,未包含测试用例变更。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9685 | 5 天前 | |
feat(optim): add InplaceApplyProximalAdagrad operator Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !8332 merge inplace_apply_proximal_adagrad into master feat(optim): add InplaceApplyProximalAdagrad operator Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: ## PR: feat(optim): add InplaceApplyProximalAdagrad operator ### 概述 新增 InplaceApplyProximalAdagrad 算子,实现 Proximal Adagrad 优化器的参数更新(FOBOS 近端算法),结合 Adagrad 自适应学习率与 L1/L2 近端正则化,用于深度学习训练中反向传播后的参数更新阶段。算子基于 Ascend C 开发,支持 Ascend950 (arch35/DAV_3510) 平台,仅支持 GEIR 图模式调用。 基于 ApplyProximalAdagrad V1 演进,将单输出 algorithmic inplace 设计升级为**双显式 inplace 输出**(var / accum),完整反映 Proximal Adagrad 算法的 inplace 更新语义,对齐弃用版 ApplyProximalAdagradD 的双输出端口设计。 ### 算子功能 实现 Proximal Adagrad 单步参数更新(FOBOS 五步公式): $$ \begin{aligned} \text{accum}_t &= \text{accum}_{t-1} + \text{grad}_t^2 \\ \eta_t &= \frac{\text{lr}}{\sqrt{\text{accum}_t}} \\ \text{prox}_t &= \text{var}_{t-1} - \eta_t \cdot \text{grad}_t \\ \text{var}_t &= \frac{\text{sign}(\text{prox}_t)}{1 + \eta_t \cdot \text{l2}} \cdot \max\!\left(|\text{prox}_t| - \eta_t \cdot \text{l1},\ 0\right) \end{aligned} $$ 当 L1 = 0 时简化为: $$ \text{var}_t = \frac{\text{prox}_t}{1 + \eta_t \cdot \text{l2}} $$ 其中 $var$ 为模型参数,$accum$ 为梯度平方累积量,$lr$ 为学习率,$l1/l2$ 为正则化强度,$grad$ 为当前梯度。 **关键特性**: - **L1 软阈值产生稀疏性**:当 $|prox| \leq \eta \cdot l1$ 时权重直接置零,适用于需要稀疏模型的场景 - **Adagrad 自适应学习率**:对低频特征使用更大学习率,适合稀疏特征训练 - **Inplace 语义**:var/accum 均原地更新,V2 将两者显式暴露为输出端口 - **L1=0 双层快速路径**:编译期 HAS_L1 + 运行时 l1==0 双层优化,跳过 sign/软阈值计算 - **FP16/BF16 Cast up**:半精度输入内部 Cast 到 FP32 计算,结果 Cast 回原始精度 ### 对标竞品 | 竞品 | 接口 | 说明 | |------|------|------| | TensorFlow | tf.raw_ops.ApplyProximalAdagrad | 功能对标,CANN 显式暴露 var/accum 双输出 | | PyTorch | 无原生实现 | PyTorch 优化器在 Python 层实现,不在 ATen 注册 | ### 支持规格 | 项目 | 支持情况 | |------|---------| | **数据类型** | float16, float32, bfloat16 | | **数据格式** | ND | | **平台** | Ascend950 (arch35) | | **调用模式** | GEIR 图模式 | | **输出端口** | 2 个显式 inplace 输出 (var + accum) | | **TensorFlow 兼容** | 对标 ApplyProximalAdagrad / ResourceApplyProximalAdagrad | ### 交付件清单 optim/inplace_apply_proximal_adagrad/ ├── CMakeLists.txt # 构建配置 ├── README.md # 算子文档 ├── examples/ │ ├── test_geir_inplace_apply_proximal_adagrad.cpp # GEIR 示例 │ └── arch35/ │ └── test_geir_inplace_apply_proximal_adagrad.cpp # arch35 GEIR 示例 ├── op_graph/ │ ├── CMakeLists.txt │ ├── inplace_apply_proximal_adagrad_proto.h # GEIR 原型定义 │ └── inplace_apply_proximal_adagrad_graph_infer.cpp # 图模式 InferDataType ├── op_host/ │ ├── inplace_apply_proximal_adagrad_def.cpp # 算子定义(6输入2输出) │ ├── inplace_apply_proximal_adagrad_infershape.cpp # 形状推导(含accum输出) │ └── arch35/ │ ├── inplace_apply_proximal_adagrad_tiling_arch35.h # Tiling 类声明 │ └── inplace_apply_proximal_adagrad_tiling_arch35.cpp # Tiling 计算 ├── op_kernel/ │ ├── inplace_apply_proximal_adagrad.cpp # Kernel 入口(8参数含accum_out) │ └── arch35/ │ ├── inplace_apply_proximal_adagrad.h # Kernel 实现(计算逻辑零改动复用V1) │ ├── inplace_apply_proximal_adagrad_struct.h # 模板参数声明 │ └── inplace_apply_proximal_adagrad_tiling_data.h # Tiling 数据结构 └── tests/ └── ut/ └── op_host/ ├── test_inplace_apply_proximal_adagrad_infershape.cpp # InferShape UT └── arch35/ └── test_inplace_apply_proximal_adagrad_tiling_arch35.cpp # Tiling UT ### 测试验证 #### 单元测试 (UT) - **覆盖范围**:InferShape + Tiling - **通过率**:100% #### GEIR 端对端验证 - **状态**:✅ 通过 - **验证内容**:图编译 + 图执行 + 输出正确性 - **精度标准**:商用标准(双标杆 Ratio),L0 级(MARE Ratio≤10) - **Golden 标杆**:TensorFlow tf.raw_ops.ResourceApplyProximalAdagrad - **覆盖范围**: - 数据类型:FP32 / FP16 / BF16 - L1 强度:0(快速路径)/ 非0(稀疏路径) - 特殊场景:空 Tensor、大 shape、标量输入 ### 代码质量 - ✅ 文件头格式统一(Copyright + Generated By CANNBot) - ✅ Tiling 校验使用 OP_LOGE 统一日志格式 - ✅ 算子定义属性添加 AttrType(OPTIONAL) 与原型对齐 - ✅ dtype 校验改用 OP_CHECK_IF + OP_LOGE 格式 - ✅ 魔鬼数字常量化(kVecRegBytes, kAlignBytes, kPadVarGrad, kPadAccum 等) - ✅ Kernel 计算逻辑 100% 复用 ApplyProximalAdagrad V1,零改动 - ✅ Tiling 策略 100% 复用 ApplyProximalAdagrad V1,零改动 - ✅ clang-format 格式化 ### 编译验证 bash cd ops-nn bash build.sh --soc=ascend950 --pkg --ops=inplace_apply_proximal_adagrad -j16 # 输出 ✅ 编译成功 ✅ 生成算子包:cann-ops-nn-custom_linux-x86_64.run ### 关键实现细节 #### 1. 版本关系 | 版本 | 算子名 | 输出端口 | Kernel 实现 | 状态 | |------|--------|---------|------------|------| | 弃用版 | ApplyProximalAdagradD | 2 | TBE (Python) | DEPRECATED | | V1 | ApplyProximalAdagrad | 1 | Ascend C (C++) | 推荐使用 | | **V2(本次)** | **InplaceApplyProximalAdagrad** | **2** | **Ascend C(复用V1)** | **本次交付** | #### 2. Kernel 实现 - **架构**:TQue 双缓冲 + TBuf scratch,完全复用 ApplyProximalAdagrad V1 - **模板参数**:(D_T_VAR, PAD_TAIL, HAS_L1),3 dtype × 2 pad × 2 L1 = 12 变体 - **五步公式**: 1. accum' = accum + grad² 2. eta = lr * rsqrt(accum') 3. prox = var - eta * grad 4. (l1>0) 软阈值: sign(prox) * max(|prox|-eta*l1, 0); (l1=0) 跳过 5. var' = prox_hat / (1 + eta*l2) #### 3. 精度策略 - **FP32**:原生计算,无转换 - **FP16**:Cast→FP32 计算→Cast 回(CAST_RINT) - **BF16**:Cast→FP32 计算→Cast 回(CAST_ROUND),标量加载走 Vector Cast workaround #### 4. Tiling 实现 - **多核切分**:blockFactor = CeilAlign(CeilDiv(total, coreNum), ubBlockSize) - **UB 切分**:按 co-resident buffer 占用计算 ubFactor - **TilingKey**:(dType, padTail, hasL1),默认 hasL1=1(标量在 GM 不可 host 读取) #### 5. 尾部 Padding - **var / grad**:pad 0,grad=0 保持 accum 不变 - **accum**:pad 1,Rsqrt(1)=1 避免 +Inf→NaN ### 依赖与限制 - **依赖**:CANN 9.0.0 - **限制**: - 仅支持 GEIR 图模式(无 ACLNN 接口) - 仅支持 Ascend950 (arch35) - var、accum、grad 三者 shape/dtype 必须完全一致 - lr、l1、l2 为 0-D 或 1-element 标量 - 不支持空 Tensor(0 元素) - use_locking 属性为 TensorFlow 兼容保留 ### Checklist - [x] 代码符合 ops-nn 内置算子标准 - [x] 文件头格式统一 - [x] Tiling 校验规范化(OP_LOGE + OP_CHECK_IF) - [x] 单元测试通过 - [x] GEIR 端对端验证通过 - [x] 编译安装验证通过 - [x] 文档完整(README + 示例) - [x] clang-format 格式化 - [x] Kernel 计算逻辑复用 V1(零改动) - [x] Tiling 策略复用 V1(零改动) See merge request: cann/ops-nn!8332 | 26 天前 | |
feat(inplace_apply_proximal_gradient_descent): 新增Ascend950 GE图实现 Co-authored-by: babeiee<125106023003@njust.edu.cn> # message auto-generated for no-merge-commit merge: !9468 merge feat/inplace-apply-proximal-gradient-descent into master feat(inplace_apply_proximal_gradient_descent): 新增Ascend950 GE图实现 Created-by: babeiee Commit-by: babeiee Merged-by: cann-robot Description: ## 描述 新增 inplace_apply_proximal_gradient_descent 算子的 Ascend950 GE 图模式实现: - 新增 OpDef、GEIR 原型、shape/dtype 推导与图注册。 - 新增 Ascend950 Tiling、六个 dtype/buffer 分支及 RegBase Vector Kernel。 - 支持 BF16、FP16、FP32,rank 0-16,0-D/[1] 标量载体与空 Tensor。 - 补充各分支 Host Tiling UT、GEIR 示例、README 和算子列表。 ## 关联的Issue []https://gitcode.com/cann/ops-nn/issues/5327 ## 测试 - pre-commit run --from-ref origin/master --to-ref HEAD:全部通过,包括 clang-format、codespell、OAT。 - FAST pre-push:JIT build、ophost UT、opgraph UT、opkernel UT、Ascend950 package 全部通过。 - GEIR 两方精度:200/200 PASS。 - TensorFlow GPU 三方 L1 cross-check:200/200 PASS;CST/DYN 嵌套输出 400/400 PASS。 ## 文档更新 - 新增算子 README.md。 - 更新 docs/zh/op_list.md。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9468 | 5 天前 | |
BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !9453 merge master into master BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer,InplaceApplyRMSProp以及ApplyCamePart1算子检视意见闭环 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> BNInfer:泛化测试1000条均PASS InplaceApplyRMSProp:泛化测试1000条均PASS ApplyCamePart1:泛化测试1000条均PASS ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9453 | 10 天前 | |
foreach/lamb/scatter类部分算子补齐A5输入校验和资料说明 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !7419 merge master into master foreach/lamb/scatter类部分算子补齐A5输入校验和资料说明 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 foreach/lamb/scatter类部分算子资料描述不清晰,补齐A5输入校验和资料说明 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4075 ## 测试 不涉及 ## 文档更新 foreach/lamb/scatter类部分算子README文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7419 | 1 个月前 | |
fix(assets,index,loss): ScatterList 资料/校验、loss 检视整改、TTK spec 适配、tf 三方腿与三方精度修正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9870 merge fix/ttk-golden-tf-third-party into master fix(assets,index,loss): ScatterList 资料/校验、loss 检视整改、TTK spec 适配、tf 三方腿与三方精度修正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ## 描述 补齐foreach类、scatter类及lamb类算子的tf等通路三方 ## 关联的Issue NA ## 测试 st ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9870 | 1 天前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 18 小时前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 18 小时前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 18 小时前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 18 小时前 | |
fix(assets,index,loss): ScatterList 资料/校验、loss 检视整改、TTK spec 适配、tf 三方腿与三方精度修正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9870 merge fix/ttk-golden-tf-third-party into master fix(assets,index,loss): ScatterList 资料/校验、loss 检视整改、TTK spec 适配、tf 三方腿与三方精度修正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ## 描述 补齐foreach类、scatter类及lamb类算子的tf等通路三方 ## 关联的Issue NA ## 测试 st ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9870 | 1 天前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 18 小时前 | |
feat: modify readme product support Co-authored-by: Miao_Haifeng<miaohaifeng@huawei.com> # message auto-generated for no-merge-commit merge: !9457 merge mhf into master feat: modify readme product support Created-by: Almost_CANN Commit-by: Miao_Haifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> LarsV2Update算子补充产品支持情况 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> READEME.MD ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9457 | 11 天前 | |
docs(sgd): fix non-standard scalar shape description in README Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8512 merge fix/issue-4680-sgd-readme into master docs(sgd): fix non-standard scalar shape description in README Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修改 optim/sgd/README.md 中 learning_rate 和 momentum 参数的 shape 描述,将不符合文档标准的 "shape须为0维标量,或元素总数为1的tensor(如[1]、[1,1])" 改为标准的 "标量(元素个数为1)",与仓库其他算子的描述风格对齐。 ## 关联的Issue Fixes #4680 ## 测试 仅文档修改,无代码逻辑变更,无需测试。 ## 文档更新 更新了 optim/sgd/README.md 中 learning_rate 和 momentum 参数的 shape 约束描述。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8512 | 28 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 6 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 6 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 6 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 6 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 6 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 6 天前 | |
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: !365 merge license5 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!365 | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 天前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 3 天前 | ||
| 12 天前 | ||
| 8 天前 | ||
| 18 天前 | ||
| 8 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 22 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 19 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 12 天前 | ||
| 13 天前 | ||
| 4 天前 | ||
| 15 天前 | ||
| 12 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 10 天前 | ||
| 1 天前 | ||
| 12 天前 | ||
| 21 天前 | ||
| 27 天前 | ||
| 5 天前 | ||
| 26 天前 | ||
| 5 天前 | ||
| 10 天前 | ||
| 1 个月前 | ||
| 1 天前 | ||
| 18 小时前 | ||
| 18 小时前 | ||
| 18 小时前 | ||
| 18 小时前 | ||
| 1 天前 | ||
| 18 小时前 | ||
| 11 天前 | ||
| 28 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 8 个月前 |