RMS归一化处理。
所有输入输出Tensor的最后一维大小相等并且小于或等于8192。
struct RmsNormParam { enum RmsNormType : int { RMS_NORM_UNDEFINED = 0, RMS_NORM_NORM, RMS_NORM_PRENORM, RMS_NORM_POSTNORM, }; struct NormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; double layerNormEps = 1e-5; bool rstd = false; }; struct PreNormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; bool hasBias = false; }; struct PostNormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; bool hasBias = false; }; RmsNormType layerType = RMS_NORM_UNDEFINED; NormParam normParam; PreNormParam preNormParam; PostNormParam postNormParam; };
成员名称 |
描述 |
---|---|
layerType |
归一化类型,参数如下:
|
normParam |
NORM参数。 |
preNormParam |
PRENORM参数。 |
postNormParam |
POSTNORM参数 |
参数 |
描述 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
layerNormEps |
Epsilon,默认为1e-5,暂时不使用。 |
rstd |
默认为False,设置为true时会使用训练的rmsnormforward算子。 |
参数 |
描述 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
hasBias |
是否叠加偏置。默认为False,当需要输入beta时设置为True。 |
参数 |
描述 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16/float/bf16 |
ND |
当quantType不为QUANT_UNDEINFED时,仅支持数据类型float16。 仅当rstd为true时,支持数据类型float。 |
gamma |
[1,...,1,n] / [1,n] |
float16/float/bf16 |
ND |
最后一维的大小需进行32字节对齐。 quantType = INT8时, 维度为[1,n] |
beta |
[1,n] |
float16/float/bf16 |
ND |
quantType = INT8时输入。 最后一维的大小要32字节对齐。 |
scale |
[1] |
float16 |
ND |
当quantType为QUANT_INT8时才输入 |
offset |
[1] |
int8 |
ND |
当quantType为QUANT_INT8时才输入 |
注1:所有Tensor最后一维的n大小需保持一致。 注2:-1表示当前维度的大小没有约束。 注3:仅Atlas 800I A2推理产品支持输入为bf16数据类型。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
beta |
[1,n] |
float16 |
ND |
当hasBias为True时输入 最后一维的大小要32字节对齐。 |
residual |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
gamma |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
注1:所有Tensor最后一维的n大小需保持一致。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
residual |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
gamma |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
beta |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
注1:所有Tensor最后一维的n大小需保持一致,n ≤ 8192。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
当前支持quantType = QUANT_UNDEINFED。 最后一维的大小要32字节对齐。 |
beta |
[1,n] |
float16 |
ND |
当hasBias为True时输入。 最后一维的大小要32字节对齐。 |
residual |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
最后一维的大小要32字节对齐。 |
gamma |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
注1:所有Tensor最后一维的n大小需保持一致。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
result |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16/float/int8/bf16 |
ND |
quantType=INT8时输出int8。 |
rstd |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16/float/bf16 |
ND |
- |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |
resOut |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16/int8 |
ND |
quantType=INT8时输出int8。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |