文件最后提交记录最后更新时间
28 天前
6 个月前
7 个月前
6 个月前
2 个月前
2 个月前
3 个月前
6 个月前
2 个月前
README

AddRmsNorm

产品支持情况

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

功能说明

  • 算子功能:RmsNorm算子是大模型常用的归一化操作,相比LayerNorm算子,其去掉了减去均值的部分。AddRmsNorm算子将RmsNorm前的Add算子融合起来,减少搬入搬出操作。

  • 计算公式:

    xi=x1i+x2ix_i=x1_{i}+x2_{i}

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

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x1 输入 用于Add计算的第一个输入,对应公式中的`x1`。 FLOAT32、FLOAT16、BFLOAT16 ND
x2 输入 用于Add计算的第二个输入,对应公式中的`x2`。 FLOAT32、FLOAT16、BFLOAT16 ND
gamma 输入 表示RmsNorm的缩放因子(权重),对应公式中的`g`。shape需要与`x1`后几维保持一致,后几维为x1需要norm的维度。 FLOAT32、FLOAT16、BFLOAT16 ND
epsilon 可选属性
  • 添加到分母中的值,以确保数值稳定,用于防止除0错误,值需要大于等于零,对应公式中的eps。
  • 默认值为1e-6。
FLOAT -
y 输出 表示最后的输出,Device侧的aclTensor,对应公式中的`RmsNorm(x)`。 FLOAT32、FLOAT16、BFLOAT16 ND
rstd 输出 表示归一化后的标准差,对应公式中的`Rms(x)`。 FLOAT32 ND
x 输出 表示Add计算的结果,对应公式中的`x`。 FLOAT32、FLOAT16、BFLOAT16 ND
  • Atlas 推理系列产品:参数x1x2gammayx的数据类型不支持BFLOAT16。

  • Kirin X90/Kirin 9030处理器系列产品:x1、x2、gamma、y和x的数据类型不支持BFLOAT16。

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_add_rms_norm 通过aclnnAddRmsNorm接口方式调用AddRmsNorm算子。
图模式 - 通过算子IR构图方式调用AddRmsNorm算子。