已合并
迁移 LayerNormONNXFusionPass 与 LayerNormONNXMULFusionPass 两条融合规则 #9915
rk创建于 9月5日
迁移 LayerNormONNXFusionPass 与 LayerNormONNXMULFusionPass 两条融合规则 #9915
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 rk 的贡献)9月5日 添加了label:cann-cla/yes
CANN-robot
9月5日 评论:
9月5日 评论:
Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| common | ✅ 陈琦, 刘波 (2/2) | ✅ 陈琦, 刘波 (2/1) |
| docs | ✅ 杨露, 陈琦, 刘波 (3/2) | ✅ 杨露 (1/1) |
| norm | ✅ 钱泽洪, 陈琦, 刘波 (3/2) | ✅ 钱泽洪 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
wangpengbo26, thanks for your pull request. All authors of the commits have signed the CLA. 👍


9月5日 将zengjuan,sxb154714,chaotang233,kevin_huang1234,crystalhu,yangyang016,fanqirui,wangrui_,renruhai,su-yueming,zhajianqing123,chenqi317,LinPX,wang-xing001,liubo75,tangweiwei2,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为评审人
9月5日 将zengjuan,sxb154714,chaotang233,kevin_huang1234,crystalhu,yangyang016,fanqirui,wangrui_,renruhai,su-yueming,zhajianqing123,chenqi317,LinPX,wang-xing001,liubo75,tangweiwei2,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为评审人
9月5日 将sxb154714,kevin_huang1234,crystalhu,yangyang016,fanqirui,wangrui_,renruhai,su-yueming,zhajianqing123,chenqi317,LinPX,wang-xing001,liubo75,tangweiwei2,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为审查人
9月5日 将sxb154714,kevin_huang1234,crystalhu,yangyang016,fanqirui,wangrui_,renruhai,su-yueming,zhajianqing123,chenqi317,LinPX,wang-xing001,liubo75,tangweiwei2,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为审查人
此处折叠了146条消息 查看更多
CANN-robot
28 天前 评论:
28 天前 评论:
The following users do not have permission to comment /lgtm or /approve on any module in this PR:
/lgtm: lwx1255555


28 天前 添加了label:lgtm
28 天前 关闭了关联的issue
28 天前 合入了pull request
CANN-robot
28 天前 评论:
28 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


描述
迁移
LayerNormONNXFusionPass与LayerNormONNXMULFusionPass两条 GE 自定义融合规则至本仓库,将 ONNX 导入的 LayerNorm 展开图融合为LayerNorm/LayerNormV3算子,减少图执行时的算子下发数量和中间结果访存。同步补充设计文档、配图和 UT。改动原因
ONNX 导入的 LayerNorm 在 GE 图中以展开形式存在(ReduceMean、Sub、Pow、Add、Sqrt、Div 等基础算子组合),算子下发数量多、中间结果访存开销大。两条 ONNX 融合规则迁移至本仓库统一维护,匹配后替换为
LayerNorm/LayerNormV3算子节点,提升执行性能。改动方法
LayerNormONNXFusionPass:识别 ONNX 导入的ReduceMean、Sub、Pow(或 Square)、Add、Sqrt、Div等小算子组合,融合为LayerNorm算子。支持 6 种场景:带/不带 gamma 和 beta、平方计算前带 Cast、开方前经 Max+Min / Min+Max 数值裁剪;带 gamma 和 beta 时同时融合末尾的 Mul 和 Add。不带 gamma/beta 时创建全 1 gamma 和全 0 beta 常量。LayerNormONNXMULFusionPass:识别ReduceMean、两个独立 Sub、Mul(或 Pow)、Add、Sqrt(或 Pow)、Div等组合,融合为LayerNormV3算子。支持 4 种场景:Mul/Pow 计算平方、带/不带 gamma 和 beta;另支持 Rsqrt 替代 Pow(0.5)。LayerNormONNXFusionPass.md和LayerNormONNXMULFusionPass.md,描述融合模式(14 张配图)、使用约束(axes/keep_dims、Sub 位置、Cast/Div 限制、epsilon/Pow 指数常量约束、内部节点不复用等)、支持的型号(Ascend 950PR/950DT)。LayerNormONNXFusionPassTest12 个用例、LayerNormONNXMULFusionPassTest12+ 个用例,覆盖融合成功(Pow/Square、Div/RealDiv、Cast、Max/Min 裁剪、共享 axes const、gamma 输入位置交换)与不融合场景(不支持平台、keep_dims=false、Pow 指数非 2、epsilon 过大、中间节点有外部消费者等)。math_proto_stub.cpp(+165):新增Pow、Square、Sqrt、Maximum、Minimum、RealDiv、Div算子原型 stub,供 UT 构图使用。涉及文件(23 个,+3287):
norm/layer_norm/op_graph/fusion_pass/layer_norm_onnx_fusion_pass.cpp(新增,+815)norm/layer_norm/op_graph/fusion_pass/layer_norm_onnx_fusion_pass.h(新增,+33)norm/layer_norm/op_graph/fusion_pass/layer_norm_onnx_mul_fusion_pass.cpp(新增,+693)norm/layer_norm/op_graph/fusion_pass/layer_norm_onnx_mul_fusion_pass.h(新增,+33)norm/layer_norm/docs/LayerNormONNXFusionPass.md(新增,+75)norm/layer_norm/docs/LayerNormONNXMULFusionPass.md(新增,+58)docs/zh/figures/layer_norm_onnx_fusion_pass_1~8.png(新增)docs/zh/figures/layer_norm_onnx_mul_fusion_pass_1~6.png(新增)norm/layer_norm/tests/ut/op_graph/test_layer_norm_onnx_fusion_pass.cpp(新增,+709)norm/layer_norm/tests/ut/op_graph/test_layer_norm_onnx_mul_fusion_pass.cpp(新增,+664)common/stub/op_graph/math_proto_stub.cpp(+165)关联的Issue
测试
LayerNormONNXFusionPassTest:12 个 UT 用例。LayerNormONNXMULFusionPassTest:12+ 个 UT 用例。文档更新
LayerNormONNXFusionPass.md、LayerNormONNXMULFusionPass.md设计文档及 14 张配图类型标签
AI/Agent生成声明