| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(optim): LarsV2Update整改修复与转测准入补全 Co-authored-by: zhaixiao<zhaixiao1@huawei.com> # message auto-generated for no-merge-commit merge: !10615 merge feat/lars-v2-update-remediation into master fix(optim): LarsV2Update整改修复与转测准入补全 Created-by: Onthetreeoh Commit-by: zhaixiao Merged-by: cann-robot Description: ## 描述 LarsV2Update 算子代码检视整改与转测准入补全,共 16 文件。 ### 1. 检视整改(132 条例扫描:6 FAIL / 9 SUSPICIOUS) **P0 缺陷修复:** - op_kernel/arch35/lars_v2_update_kernel.h:GM 元素偏移 int64 直接下发,修复 uint32 截断(FP32 张量超 4G 元素时高位丢失写错 GM 地址) - op_host/lars_v2_update_tiling.cpp:ComputePerBufBytes 预留 SCALAR_BUF_BYTES 后再均分,修复 UB 容量恒超订 512B - op_host/arch35/lars_v2_update_tiling_arch35.cpp:GetTilingData/GetPlatformInfo 改用 OP_CHECK_NULL_WITH_CONTEXT,修复空指针吞错 **P1/P2 加固:** 负数维校验、hasRef 独立哨兵、explicit、常量收敛共享(全大写命名)、22 处 static_cast、UT 安全编译选项。 ### 2. 原型唯一性(转测第 1/2 项) - 删除 op_nn_proto_extend.h 中 LarsV2Update 重复原型(对齐 AdvanceStep 惯例:算子本地 proto.h 唯一交付),消除双定义与字段风格不一致 - 移除 proto.h 双重去重守卫宏,恢复标准单一定义 ### 3. 运行时约束补全(转测第 10/11/13/15.4 项) - Tiling 新增 6 输入 storage format 强校验(FORMAT_ND,与 def.cpp 声明一致) - Tiling 新增 w/g 严格同形校验(实测 w=(4,8), g=(4,1) 被拒) - Tiling 新增标量输入 dtype 与元素数校验(README 约束的代码实现) - README 补空 Tensor 支持与标量广播语义声明(资料-代码对齐) ### 4. 其他 静态 example 补输出校验打印;infershape 清理无用 include;README 约束说明补充 Tiling 校验位置与 NaN 语义披露。 ## 测试 | 验证项 | 结果 | |---|---| | UT(同源编译真实 Tiling 代码) | 80/80 通过 | | GEIR 静态 + 动态(-1/-2) | Ascend950 实卡通过 | | 约束实测 | ND control/空 Tensor PASS;w/g 广播 shape 被拒;格式校验分支入码 | | TTK 两方精度(300 用例,CST+DYN) | 300/300,精度均 100% | | TTK 异常用例 | 有效拦截 10 / 应拦截未拦截 0 / 不可判定 0 | 🤖 Generated with CANNBot See merge request: cann/ops-nn!10615 | 3 天前 | |
解决公共知识库模块静态编译报错问题 Co-authored-by: Jiaxin_001<jiaxin12@huawei.com> # message auto-generated for no-merge-commit merge: !10735 merge zsk_0918 into master 解决公共知识库模块静态编译报错问题 Created-by: Jiaxin_001 Commit-by: Jiaxin_001 Merged-by: cann-robot Description: ## 描述 静态编译失败,原因是common/src/op_host/bank_mgr/中有依赖的文件放在外部目录,迁移文件可以解决问题。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6050 ## 测试 代码提交后出包,静态编译可以pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10735 | 3 天前 | |
迁移重构 LayerNormFusionPass 与 LayerNormInferenceFusionPass 两条融合规则 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9533 merge layer_norm_pass into master 迁移重构 LayerNormFusionPass 与 LayerNormInferenceFusionPass 两条融合规则 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 新增 LayerNormFusionPass 和 LayerNormInferenceFusionPass 两条 GE 自定义融合规则,将 LayerNorm 的计算图展开形式融合为 LayerNorm 算子,减少图执行时的算子下发数量和中间结果访存。同步补充设计文档和融合模式图示。 ### 改动原因 LayerNorm 在 GE 图中以展开形式存在(多个 ReduceMean、Sub、Mul、Add 等基础算子),执行效率低。新增融合规则将展开图模式匹配后替换为 LayerNorm 算子节点,提升执行性能。 ### 改动方法 1. **LayerNormFusionPass**(训练场景): - 匹配训练版 LayerNorm 展开图:mean → SquaredDifference → Add(eps) → Mul → ReduceMean → Sub → Mul → Mul(rstd) → Mul(gamma) → Add(beta) - 支持交换律枚举(4 位),覆盖等价图拓扑变体 - 校验:keep_dims、axes 匹配、eps 位置、中间节点无外部消费者等 - 平台限制:NpuArch = 3510(Ascend 950PR/950DT) 2. **LayerNormInferenceFusionPass**(推理场景): - 匹配推理版 LayerNorm 展开图:mean1 → mean2 → Rsqrt → mul1 → mul2 → mul3 → Sub → Add - 支持交换律枚举(6 位),覆盖等价图拓扑变体 - 校验:推理流判别(不含 mean 的 SquaredDifference)、keep_dims、axes 匹配等 - 平台限制:NpuArch = 3510(Ascend 950PR/950DT) 3. **设计文档**:新增 LayerNormFusionPass.md 和 LayerNormInferenceFusionPass.md,描述融合模式(含图示)、使用约束(不支持动态 shape、输入参数限制、ReduceMean/Sub 限制、数据类型仅支持 FLOAT32/FLOAT16)、支持的型号。 4. **融合模式图示**:新增 6 张 PNG 图片,展示融合前后的图结构。 5. **math_proto_stub.cpp**(+101):新增 ReduceMean、SquaredDifference、Sub、Mul、Rsqrt 算子原型 stub,供融合规则 UT 构图使用。 涉及文件(15 个): - norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.cpp(+462) - norm/layer_norm/op_graph/fusion_pass/layer_norm_fusion_pass.h(+33) - norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.cpp(+377) - norm/layer_norm/op_graph/fusion_pass/layernorm_inference_fusion_pass.h(+33) - norm/layer_norm/docs/LayerNormFusionPass.md(+46) - norm/layer_norm/docs/LayerNormInferenceFusionPass.md(+39) - docs/zh/figures/LayerNormFusionPass_1~4.png(+12) - docs/zh/figures/LayerNormInferenceFusionPass_1~2.png(+6) - norm/layer_norm/tests/ut/op_graph/test_layer_norm_fusion_pass.cpp(+317) - norm/layer_norm/tests/ut/op_graph/test_layernorm_inference_fusion_pass.cpp(+279) - common/stub/op_graph/math_proto_stub.cpp(+101) ## 关联的Issue - #5852 ## 测试 - LayerNormFusionPassTest:9 个 UT 用例,覆盖融合成功(form A/B、交换律操作数、共享 axes const)、不融合场景(keep_dims=false、axes 不匹配、eps 位置错误、中间节点有外部消费者)。 - LayerNormInferenceFusionPassTest:6 个 UT 用例,覆盖融合成功(含交换律操作数、共享 axes const)、不融合场景(keep_dims=false、axes 不匹配、训练流不融合)。 - 测试环境:Ascend950(NpuArch=3510)。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormFusionPass.md:训练场景融合规则设计文档 - 新增 norm/layer_norm/docs/LayerNormInferenceFusionPass.md:推理场景融合规则设计文档 - 新增 6 张融合模式图示 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9533 | 7 天前 | |
fix: onnx插件解析属性时零值字段被GE省略导致回退默认值 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !10783 merge elu-onnx-fix into master fix: onnx插件解析属性时零值字段被GE省略导致回退默认值 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 GE 序列化 ONNX 算子属性为 JSON 时,会省略值为 0 的标量字段(float 的 "f"、int 的 "i")。部分插件用 attr.contains("f"/"i") 判断属性是否存在,或直接访问 attr["f"/"i"],导致属性传 0 时被错误回退到算子默认值,或直接抛异常使转换失败。 修复方式:先按 name 判断属性是否存在,值字段缺失时按该类型的 protobuf 默认值 0 处理,而不是回退默认值或抛异常。 涉及算子: - Elu(alpha) - LeakyRelu(alpha) - HardMax(axis) - AdaCast(pixel) - GroupNormRelu(eps / num_groups) - BoundingBoxDecode(wh_ratio_clip) - AscendAntiQuantV2(dst_dtype) ## 关联的Issue Issue #6004 ## 测试 - 编译:bash build.sh --onnxplugin -j16 通过(7 个修复源文件全部编译通过)。 - 单测:bash build.sh -u --ophost --ops=elu,leaky_relu,hardmax,ada_cast,14 个用例全部 PASSED(含各算子新增的「零值字段缺失」用例)。 - 端到端 NPU(Ascend 910B3 / CANN 9.0.0):ELU alpha=0 负半轴输出 [0,0,0,0],alpha=3.0 回归无影响。 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10783 | 4 天前 | |
调整cube_utils的源码和ut的位置 Co-authored-by: jiang-mingming01<jiangmingming16@h-partners.com> # message auto-generated for no-merge-commit merge: !9060 merge br_mingmingj_mv_cube_utils_0824 into master 调整cube_utils的源码和ut的位置 Created-by: jiang-mingming01 Commit-by: jiang-mingming01 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> t调整cube_utils的源码和ut的位置 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT在在--opgraph -u或者ut_test_all的时候触发 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9060 | 1 个月前 |