文件最后提交记录最后更新时间
23 天前
2 个月前
19 天前
6 天前
18 天前
1 个月前
9 个月前
14 天前
README

DeepNorm

产品支持情况

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

功能说明

  • 算子功能:对输入张量x的元素进行深度归一化,通过计算其均值和标准差,将每个元素标准化为具有零均值和单位方差的输出张量。

  • 计算公式:

    DeepNorm(xi′)=(xi′−x′ˉ)∗rstd∗gamma+beta,DeepNorm(x_i^{\prime}) = (x_i^{\prime} - \bar{x^{\prime}}) * rstd * gamma + beta,

     where rstd=11n∑i=1n(xi′−x′ˉ)2+eps,xi′=alpha∗xi+gxi\text { where } rstd = \frac{1}{\sqrt{\frac{1}{n} \sum_{i=1}^n (x^{\prime}_i - \bar{x^{\prime}})^2 + eps}} , \quad x^{\prime}_i = alpha * x_i + gx_i

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 不支持空Tensor。输入数据,通常为神经网络的中间层输出,公式中的输入`x`。shape支持2-8维度。 FLOAT32、FLOAT16、BFLOAT16 ND
gx 输入 不支持空Tensor。输入数据的梯度,用于反向传播,公式中的输入`gx`。数据类型与输入`x`一致,shape与输入`x`一致。 FLOAT32、FLOAT16、BFLOAT16 ND
beta 输入 不支持空Tensor。偏置参数,用于调整归一化后的输出,公式中的输入`beta`。数据类型与输入`x`一致,维度数与输入`gamma`一致,shape与输入`x`的后几维(需要norm的维度)一致。 FLOAT32、FLOAT16、BFLOAT16 ND
gamma 输入 不支持空Tensor。缩放参数,用于调整归一化后的输出,公式中的输入`gamma`。数据类型与输入`x`一致,维度数取值范围为[1, 7]且必须小于输入`x`的维度数,shape与输入`x`的后几维(需要norm的维度)一致。 FLOAT32、FLOAT16、BFLOAT16 ND
alpha 可选属性 权重参数,用于调整输入x的权重,公式中的输入`alpha`。默认值为0.3f。 FLOAT32 -
epsilon 可选属性 添加到分母中的值,以确保数值稳定,用于防止除0错误,对应公式中的eps。默认值为1e-06f。 FLOAT32 -
mean 输出 不支持空Tensor。计算输出的均值,用于归一化操作,公式中的输出`mean`。shape与输入`x`满足broadcast关系(前几维(不需要norm的维度)与输入`x`一致,其余维度为1)。 FLOAT32 ND
rstd 输出 不支持空Tensor。计算输出的标准差倒数,用于归一化操作,公式中的输出`rstd`。shape与输入`x`满足broadcast关系(前几维(不需要norm的维度)与输入`x`一致,其余维度为1)。 FLOAT32 ND
y 输出 不支持空Tensor。归一化后的输出数据,公式中的输出`y`。数据类型与输入`x`一致,shape与输入`x`一致。 FLOAT32、FLOAT16、BFLOAT16 ND
  • Atlas 推理系列产品:所有输入参数和输出参数y的数据类型不支持BFLOAT16。

  • Kirin X90/Kirin 9030处理器系列产品:所有输入参数和输出参数y的数据类型不支持BFLOAT16。

约束说明

  • x 维度数支持 2-8,gamma 维度数支持 1-7,且必须小于 x 的维度数。
  • xgxbetagammay 的 dtype 必须一致,只支持 FLOAT32FLOAT16BFLOAT16meanrstd 固定为 FLOAT32
  • gxy 的 shape 必须与 x 一致;betagamma 的 shape 必须与 x 的尾部维一致。
  • meanrstd 的 shape 必须与 x 的前导维一致,归一化对应的尾部维必须全部为 1,且 meanrstd 的 shape 必须一致。
  • x 的各维度必须大于 0,tiling 侧会对 numRow/numColAlign 以及 shape 乘积做范围检查,超出 uint32 的输入会被拒绝。
  • arch35 tiling 会根据 reduce 维长度和 UB 空间在 full-load / partial-load 两条路径间切换;partial-load 场景需要额外 workspace。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_deep_norm 通过aclnnDeepNorm接口方式调用DeepNorm算子。
图模式 - 通过算子IR构图方式调用DeepNorm算子。