文件最后提交记录最后更新时间
24 天前
15 天前
15 天前
15 天前
15 天前
15 天前
4 个月前
1 个月前
README

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算子。