已合并
【feature】: 修改升精度流程:Transpose节点不参与升精度 #2027
【feature】: 修改升精度流程:Transpose节点不参与升精度 #2027
已合并
liyuewei创建于 9月9日
liyuewei
liyuewei成员
9月9日

Pull Request

描述

1、修改升精度流程:Transpose节点不参与升精度。
2、进一步扩展Transpose融合使用Compact模式的场景。

变更类型

请选择本次引入的变更类型:

关联的Issue

如何测试

描述测试此变更的步骤和前提条件:
NA

核对清单

其他信息

在此添加任何其他关于本次 PR 的说明。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 liyuewei 的贡献)
liyueweiliyuewei成员
9月9日 添加了label:enhancement
liyueweiliyuewei成员
9月9日 创建了 pull request,commit 7c5c2e8e
atomgit-bot
atomgit-bot
9月9日 评论:

变更摘要

本 PR 修改升精度(improve_precision)流程,使 Transpose 节点不参与升精度:将 Transpose 视作与 Cast/Load/Gather/Store 同类的边界节点,不再对其做升精度处理,并将降精度 Cast 尽量移动到 Transpose 之前执行,从而避免 Transpose 在高精度下参与计算。改动集中在 autofuse/optimize/pre_process/improve_precision.cpp,并新增对应单测 autofuse/tests/ut/optimize/test_improve_precision.cpp。

主要改动

  • Transpose 不参与升精度:在 ProcessOtherComputeNodes 中直接 continue 跳过 Transpose 节点;同时将 af::ascir_op::Transpose::Type 加入 IsNeedInsertCastAfterLoad 与 IsNeedInsertCastBeforeOther 的边界节点判断,使 Transpose 输出低精度时触发降精度转换、且 Load 后不再重复插入 Cast。
  • 新增 SetNodeOutputDtype 辅助函数:统一同步设置节点的输出数据类型,同时更新 AscNode 的 outputs[0].attr.dtype 与 OpDesc 的 MutableOutputDesc(0)。
  • 新增 TryInsertCastBeforeTransposeForStore:当低精度 Store 直接消费 Transpose 时,若 Transpose 的所有消费者均为同目标精度的 Store 且其输入为高精度,则将降精度 Cast 插入到 Transpose 之前,并把 Transpose 的输出精度更新为目标低精度。
  • ProcessStoreNodes 增加优先分支:低精度 Store 且上游为 Transpose 时,先尝试调用 TryInsertCastBeforeTransposeForStore,插入成功则跳过原有的 InsertCastBeforeNode 默认逻辑。
  • 新增单测覆盖:在 test_improve_precision.cpp 增加 4 个用例(LoadTransposeKeepsTransposeInLowPrecision、TransposeStoreMovesDowncastBeforeTranspose、SharedTransposeKeepsStoreLocalDowncast、SharedTransposeMovesDowncastWhenAllStoresUseSameLowPrecision),覆盖 Load->Transpose、Transpose->Store 以及共享 Transpose 多消费者等场景。
likedislike
不准确?
atomgit-bot
atomgit-bot
9月9日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
9月9日 添加了label:cann-cla/yes
此处折叠了130条消息 查看更多
CANN-robotCANN-robot成员
29 天前 添加了label:lgtm
zhang_shengjie成员
29 天前 评论:

/lgtm

likedislike
yangyongqiang
yangyongqiang成员
29 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
29 天前 添加了label:approved
CANN-robotCANN-robot成员
29 天前 合入了pull request