QuantizeAddLayerNorm

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT ×
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×
Kirin X90 处理器系列产品
Kirin 9030 处理器系列产品

功能说明

  • 算子功能:是一种结合了量化、加法和层归一化的操作。依次完成以下操作:

    • 加法:将两个输入张量进行加法操作。
    • 层归一化:对加法后的张量进行层归一化操作。
    • 量化:将输入张量从浮点数量化为低精度整数或浮点数。
  • 计算公式:

    x=x1+x2+biasx = x1 + x2 + bias

    rstd=1Var(x)+epsrstd = {{1}\over\sqrt {Var(x)+eps}}

    normout=(x−xˉ)∗rstd∗gamma+betanorm_out = (x-\bar{x}) * rstd * gamma + beta

    out=round((normout/scales)+zeropoints)out = round((norm_out/scales)+zero_points)

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x1 输入 表示加法计算的第一个输入,对应公式中的`x1`。 FLOAT16、FLOAT32、BFLOAT16 ND
x2 输入 表示加法计算的第二个输入,对应公式中的`x2`。shape与`x1`的shape保持一致。 FLOAT16、FLOAT32、BFLOAT16 ND
gamma 输入 用于缩放归一化后的输出,对应公式中的`gamma`。shape与`x1`的shape最后一维保持一致。 FLOAT16、FLOAT32、BFLOAT16 ND
beta 输入 用于偏移归一化后的输出,对应公式中的`beta`。shape与`gamma`的shape保持一致。 FLOAT16、FLOAT32、BFLOAT16 ND
bias 输入 表示用于加法计算的偏移量,对应公式中的`bias`。shape与`gamma`的shape保持一致。 FLOAT16、FLOAT32、BFLOAT16 ND
scales 输入 表示量化的缩放因子,对应公式中的`scales`。shape与`gamma`的shape保持一致。 FLOAT16、FLOAT32、BFLOAT16 ND
zero_points1 可选输入 表示量化过程中得到y的offset张量,对应公式中的`zero_points1`。shape与`gamma`的shape保持一致。 FLOAT32、BFLOAT16 ND
dtype 必选属性
  • 指定量化后的输出张量y的数据类型。
  • 没有默认值。
INT -
axis 可选属性
  • 表示需要进行量化的element-wise轴,其他的轴做broadcast,指定的轴不能超过输入x的维度数。当前仅支持-1,传其他值均不生效。
  • 默认值为-1。
INT -
epsilon 可选属性
  • 添加到分母中的值,以确保数值稳定,对应公式中的`eps`。
  • 默认值为1e-5。
FLOAT32 -
additional_output 可选属性
  • 表示是否开启x的输出。
  • 默认值为false。
BOOL -
y 输出 表示QuantizeAddLayerNorm的最终输出结果,对应公式中的`out`。 INT8 ND
x 输出 表示加法运算的输出结果,对应公式中的`x`。shape与`x1`的shape保持一致。 FLOAT16、FLOAT32、BFLOAT16 ND
  • Kirin X90 处理器系列产品、Kirin 9030 处理器系列产品:所有输入、输出的数据类型不支持BFLOAT16。

约束说明

调用说明

调用方式 样例代码 说明
图模式 test_geir_quantize_add_layer_norm 通过算子IR构图方式调用QuantizeAddLayerNorm算子。