InplaceAddLayerNorm
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:是一种结合了原位加法和层归一化的算法。输出参数
x1(对应公式中的y)、x2(对应公式中的x)复用了输入参数x1、x2输入地址,实现InplaceAddLayerNorm功能。 -
计算公式:
x=x1+x2+biasOptionalx = x1 + x2 + biasOptional
rstd=1Var(x)+epsrstd = {{1}\over\sqrt {Var(x)+eps}}
y=(x−xˉ)∗rstd∗γ+βy = (x-\bar{x}) * rstd * \gamma + \beta
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 表示AddLayerNorm中加法计算的输入,对应公式中的`x1`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| x2 | 输入 | 表示AddLayerNorm中加法计算的输入,对应公式中的`x2`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| gamma | 输入 | 表示层归一化中的`gamma`参数,对应公式中的`γ`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| beta | 输入 | 表示层归一化中的`beta`参数,对应公式中的`β`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| bias | 可选输入 | 表示AddLayerNorm中加法计算的输入,对应公式中的`biasOptional`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| epsilon | 可选属性 |
|
FLOAT32 | - |
| additional_output | 可选属性 |
|
BOOL | - |
| x1 | 输出 | 表示LayerNorm的结果输出,对应公式中的`y`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| mean | 输出 | 输出LayerNorm计算过程中(x1 + x2 + biasOptional)的结果的均值,对应公式中的x的平均值。 | FLOAT32 | ND |
| rstd | 输出 | 输出LayerNorm计算过程中`rstd`的结果,对应公式中的`rstd`。 | FLOAT32 | ND |
| x2 | 输出 | 表示LayerNorm的结果输出,对应公式中的`x`。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
- Atlas 推理系列产品、Atlas 训练系列产品 :
- 所有的输入参数和输出参数
x1、x2的数据类型不支持BFLOAT16。 - x1、x2、beta、gamma、bias五个输入的尾轴长度必须大于等于32Bytes。
- 所有的输入参数和输出参数
约束说明
- 是否支持空tensor:不支持空进空出。
- 是否支持非连续tensor:输入输出不支持非连续。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| 图模式 | test_geir_inplace_add_layer_norm | 通过算子IR构图方式调用InplaceAddLayerNorm算子。 |