- 接口功能 :LayerNorm算子是大模型常用的归一化操作。AddLayerNormQuant算子将LayerNorm前的Add算子和LayerNorm归一化输出给1个或2个下游的量化算子融合起来,减少搬入搬出操作。LayerNorm下游的量化算子可以是Quantize、AscendQuantV2或DynamicQuant算子,具体的量化算子类型由attr入参divMode和quantMode决定。当下游有2个量化算子时,2个量化算子的算子类型、输入输出dtype组合和可选输入的组合需要完全一致。
- 计算公式:
当quantMode输入为"static"时,输出outScales1Out和outScales2Out无实际意义。取决于divMode的输入,融合的量化算子可能是Quantize或AscendQuantV2:
当divMode输入为true时,融合的量化算子为Quantize,计算公式如下所示:
当divMode输入为false时,融合的量化算子为AscendQuantV2,计算公式如下所示:
当quantMode输入为"dynamic"时,输入zeroPoints1Optional和zeroPoints2Optional无实际意义。融合的量化算子是DynamicQuant,此时divMode无效:
若scales1Optional和scales2Optional均无输入,则y2Out和scale2Out输出无实际意义,可忽略。计算公式如下所示:
若仅输入scales1Optional,则y2Out和scale2Out输出无实际意义,可忽略。计算公式如下所示:
若scales1Optional和scales2Optional均存在,则y2Out和scale2Out输出有效。计算公式如下所示:
其中row_max代表对每行求最大值
每个算子分为,必须先调用[object Object]接口获取入参并根据计算流程所需workspace大小,再调用[object Object]接口执行计算。
[object Object]
[object Object]
功能维度:
- 可选输入(scales1Optional、scales2Optional、zeroPoints1Optional、zeroPoints2Optional)支持的可选输入组合如下所示:
[object Object]undefined
其中:[object Object]代表可选输入存在,[object Object]合法。[object Object]代表可选输入不存在,[object Object]不合法。[object Object]代表任意情况均可。
- 可选输入(scales1Optional、scales2Optional、zeroPoints1Optional、zeroPoints2Optional)支持的可选输入组合如下所示:
数据类型支持说明:
当
[object Object]为"static"时:[object Object]undefined
当
[object Object]为"dynamic"时:[object Object]undefined
确定性计算:
- aclnnAddLayerNormQuant默认确定性实现。
[object Object]