文件最后提交记录最后更新时间
11 天前
11 天前
7 个月前
8 天前
29 天前
29 天前
7 个月前
13 天前
README

RmsNormQuant

产品支持情况

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

功能说明

  • 算子功能:RmsNorm算子是大模型常用的标准化操作,相比LayerNorm算子,其去掉了减去均值的部分。RmsNormQuant算子将RmsNorm算子以及RmsNorm后的Quantize算子融合起来,减少搬入搬出操作。

  • 计算公式:

    quant_ini=xiRms⁡(x)gi+bi, where Rms⁡(x)=1n∑i=1nxi2+epsquant\_in_i=\frac{x_i}{\operatorname{Rms}(\mathbf{x})} g_i + b_i, \quad \text { where } \operatorname{Rms}(\mathbf{x})=\sqrt{\frac{1}{n} \sum_{i=1}^n x_i^2+eps}

    y=round((quant_in∗scale)+offset)y=round((quant\_in*scale)+offset)

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 表示标准化过程中的源数据张量,公式中的`x`。 FLOAT16、BFLOAT16 ND
gamma 输入 表示标准化过程中的缩放张量,公式中的`g`。shape支持1-2维。数据类型需要与`x`保持一致。 FLOAT16、BFLOAT16 ND
beta 输入 表示标准化过程中的偏移张量,公式中的`b`。shape和数据类型需要与`gamma`保持一致。 FLOAT16、BFLOAT16 ND
scale 输入 表示量化过程中得到y进行的scale张量,公式中的`scale`。shape为1,维度为1。 FLOAT16、BFLOAT16 ND
offset 输入 表示量化过程中得到y进行的offset张量,公式中的`offset`。shape需要与`scale`保持一致。 INT8 ND
epsilon 可选属性
  • 添加到分母中的值,以确保数值稳定,对应公式中的`eps`。
  • 默认值为0.1f。
FLOAT32 -
high_precision_mode 可选属性
  • 是否使用高精度模式。预留参数,暂未使用。
  • 默认值为false。
BOOL -
gemma_mode 可选属性
  • 是否使用gemma模式。预留参数,暂未使用。
  • 默认值为false。
BOOL -
y 输出 表示最终量化输出Tensor,对应公式中的`y`。shape需要与输入`x`一致。 INT8 ND
  • Atlas 推理系列产品、Atlas 200I/500 A2 推理产品、Kirin X90/Kirin 9030 处理器系列产品:输入参数xgammabetascale的数据类型不支持BFLOAT16。

约束说明

  • Atlas 推理系列产品:x、y的尾轴长度,以及gamma的尾轴长度必须大于等于32 Bytes。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_rms_norm_quant 通过aclnnRmsNormQuant接口方式调用RmsNormQuant算子。