| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 24 天前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 4 个月前 | ||
| 1 个月前 |
AdaLayerNormGrad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:AdaLayerNormV2的反向传播。用于计算输入张量的梯度,以便在反向传播过程中更新模型参数。
-
计算公式:
正向:
out=LayerNorm(x)×(1+scale)+shiftout = LayerNorm(x)\times(1+scale)+shift
反向:
z=(x−mean)×rstdz = (x - mean) \times rstd
dy_g=dy×gamma×(1+scale)dy\_g = dy \times gamma \times (1 + scale)
temp1=1/N×∑reduce_axis_2(dy×gamma×(1+scale))temp_1 = 1/N \times \sum_{reduce\_axis\_2} (dy \times gamma \times (1 + scale))
temp2=1/N×(x−mean)×rstd×∑reduce_axis_2(dy×gamma×(1+scale)×(x−mean)×rstd)temp_2 = 1/N \times (x - mean) \times rstd \times \sum_{reduce\_axis\_2}(dy \times gamma \times (1 + scale) \times (x - mean) \times rstd)
pd_x=(dy×gamma×(1+scale)−(temp1+temp2))×rstdpd\_x = (dy \times gamma \times (1 + scale) - (temp_1 + temp_2)) \times rstd
pd_scale=∑reduce_axis_1(dy×((x−mean)×rstd×gamma+beta))pd\_scale = \sum_{reduce\_axis\_1}(dy \times ((x - mean) \times rstd \times gamma + beta))
pd_shift=∑reduce_axis_1dypd\_shift = \sum_{reduce\_axis\_1}dy
pd_gamma=∑reduce_axis_0,1dy×(1+scale)×(x−mean)×rstdpd\_gamma = \sum_{reduce\_axis\_0,1}dy \times (1 + scale) \times (x - mean) \times rstd
pd_beta=∑reduce_axis_0,1dy×(1+scale)pd\_beta = \sum_{reduce\_axis\_0,1}dy \times (1 + scale)
其中,N为进行归一化计算的轴的维度,即归一化轴维度的大小;'reduce_axis_0,1'表示第0维和第1维度进行归约求和。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| dy | 输入 | 反向计算的梯度张量,对应计算公式中的`dy`。与输入`x`的数据类型相同。shape与`x`的shape相等,为[B, S, H],其中B支持0-6维。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| x | 输入 | 正向计算的首个输入,对应计算公式中的`x`。与输入`dy`的数据类型相同。shape与`dy`的shape相等,为[B, S, H],其中B支持0-6维。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| rstd | 输入 | 表示`x`的标准差的倒数,对应计算公式中的`rstd`。与输入`dy`的数据类型相同。shape与`mean`的shape相等,为[B, H, 1],最后一维固定为1,其他维度与`x`一致。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| mean | 输入 | 表示`x`的均值,对应计算公式中的`mean`。与输入`dy`的数据类型相同。shape与`rstd`的shape相等,为[B, H, 1]。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| scale | 输入 | 表示自适应缩放张量,对应公式中的`scale`。数据类型与`dy`的数据类型一致。shape为[B, H]或[B, 1, H],其中B支持0-6维,维度数量和大小与`dy`中的B保持一致,H与`dy`中H维一致。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| gamma | 输入 | 表示权重张量,对应公式中的`gamma`。数据类型支持FLOAT32、FLOAT16、BFLOAT16,当数据类型不为FLOAT32时,参数数据类型与`dy`相同。shape为[H],H与`dy`中H维一致。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| beta | 输入 | 表示偏置张量,对应公式中的`beta`。数据类型与`gamma`的数据类型一致。shape为[H],H与`dy`中H维一致。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| pd_x | 输出 | 表示反向传播的输出梯度,对应计算公式中的`pd_x`。与输入`x`的数据类型相同,shape与`x`的shape相等。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| pd_scale | 输出 | 表示反向传播自适应缩放系数的梯度,对应计算公式中的`pd_scale`。与输入`scale`的数据类型相同,shape与`scale`的shape相等。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| pd_shift | 输出 | 表示反向传播自适应偏移系数的梯度,对应计算公式中的`pd_shift`。与输入`scale`的数据类型相同,shape与为[B, H]或[B, 1, H],其中B支持0-6维,维度数量和大小与`dy`中的B保持一致,H与`dy`中H维一致。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| pd_gamma | 输出 | 表示反向传播权重的梯度,对应计算公式中的`pd_gamma`。与输入`gamma`的数据类型相同,shape与`gamma`的shape相等。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
| pd_beta | 输出 | 表示反向传播偏置的梯度,对应计算公式中的`pd_beta`。与输入`gamma`的数据类型相同。shape与`pd_gamma`的shape相等。 | FLOAT32、FLOAT16、BFLOAT16 | ND |
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_ada_layer_norm_grad | 通过aclnnAdaLayerNormBackward接口方式调用AdaLayerNormGrad算子。 |
| 图模式 | - | 通过算子IR构图方式调用AdaLayerNormGrad算子。 |