已关闭
[Requirement|需求建议]: MultiAddRmsNormDynamicQuant / DynamicQuantUpdateScatterV2 融合规则迁移至 PatternFusionPass 新框架 #3131
liu-zihao35创建于  6月5日关闭于  6月5日
liu-zihao35
6月5日 创建

Backgroud(背景信息)

MultiAddRmsNormDynamicQuant 和 DynamicQuantUpdateScatterV2 两个融合规则原基于旧框架实现,需要迁移到 PatternFusionPass 新框架(基于 es::CompliantNodeBuilder + pattern matching)以适配新版图融合编译流程。迁移过程中需要解决新框架下 IrDef 声明规范、pattern 拓扑匹配、dtype 传播、Dynamic Input 等多个适配问题。

Origin(信息来源)

ops-nn 仓算子整改需求,适配 PatternFusionPass 新框架。

Benefit / Necessity (价值/作用)

  • 适配新版 CANN 图编译框架,确保融合规则在新环境下正常生效
  • 支持 Ascend910B 和 Ascend910_93 两种平台
  • 解决残差多 add 场景下搬运瓶颈问题
  • 解决KV量化DynamicQuant非对称量化,产生的K、scale、offset缓存操作过多头开销问题

Design(设计方案)

  • multi_add_rms_norm_dynamic_quant fusion pass
*                                    ...
*                     x1_0  x1_1 or Add_1
*                       \   /                                  (x1: 1-5 list of tensor)
*        gamma    x2    Add_0  (dynamic, 0-4 Add op)             x1     x2     gamma     s1     s2
*            \    |    /                                           \     |      /      /       /
*            AddRmsNorm                              ==>            MultiAddRmsNormDynamicQuant
*           /     |                                               /     /     |     |     \     \
*          x  (Reshape)                                  (Reshape) (Reshape)  |  (Reshape) \     \
*                 |                                           /      /        |     |       \     \
*              y--+      (s1)   (s2)                        y1      y2        x     y      scale1  scale2
*                 |     *        *
*               /   \*          *                        Note: Either all or none Reshape(s) are present.
*              /  *  \         *
*       DynamicQuant  (DynamicQuant) (1-2 dynamic DQ)
*       /         \      /        \
*     y1       scale1  y2       scale2
  • dynamic_quant_update_scatter_v2 fusion pass
*                         x                            x  indices  In0  In1  In2
*                         |                            |     |      |    |    |
*          Const0    DynamicQuantV2                    |     |      |    |    |
*                \       /|\                           |     |      |    |    |
*                 Reshape0| \                --->     DynamicQuantUpdateScatterV2
*                      /  | Neg indices                  |         |        |
*        Const1   Bitcast0|   \ * /|                     |         |        |
*              \     /    | *  \ / |                    var   var_scale var_offset
*           In0 Reshape1 *| In1 X  | In2
*             \    /  *   |  | / \ |  |
*       Const2 Scatter0 Scatter1 Scatter2
*           \    |        |        |
*            Reshape2     |        |
*                |        |        |
*     Const3 Bitcast1 Unsqueeze0 Unsqueeze1
*           \    |        |        |
*            Reshape3     |        |
*                |        |        |
*               var   var_scale var_offset
likedislike
Lliu-zihao35
6月5日 关联了pull request:add fusion pass: multi_add_rms_norm_dynamic_quant | dynamic_quant_update_scatter_v2
Lliu-zihao35
6月5日 修改了issue 的描述
Lliu-zihao35
6月5日 修改了issue 的描述
CANN-robotCANN-robot成员
6月5日 关闭了 issue
CANN-robotCANN-robot成员
6月5日 添加了label:resolved