RmsNormOperation
功能
RMS归一化处理。

约束
所有输入输出Tensor的最后一维大小相等。
定义
struct RmsNormParam { enum RmsNormType : int { RMS_NORM_UNDEFINED = 0, RMS_NORM_NORM, RMS_NORM_PRENORM, RMS_NORM_POSTNORM, }; enum PrecisionMode : int { HIGH_PRECISION_MODE = 0, HIGH_PERFORMANCE_MODE, } enum ModelType : int { LLAMA_MODEL = 0, GEMMA_MODEL, }; struct NormParam { QuantType quantType = QUANT_UNDEFINED; float epsilon = 1e-5; double layerNormEps = 1e-5; bool rstd = false; PrecisionMode precisionMode = HIGH_PRECISION_MODE; ModelType modelType = LLAMA_MODEL; DynamicQuantType dynamicQuantType = DYNAMIC_QUANT_UNDEFINED; }; struct PreNormParam { QuantType quantType = QUANT_UNDEFINED; float epsilon = 1e-5; bool hasBias = false; }; struct PostNormParam { QuantType quantType = QUANT_UNDEFINED; float epsilon = 1e-5; bool hasBias = false; }; RmsNormType layerType = RMS_NORM_UNDEFINED; NormParam normParam; PreNormParam preNormParam; PostNormParam postNormParam; };
成员
成员名称 |
描述 |
---|---|
rmsNormParam |
RMSNORM参数。
|
layerType |
归一化类型,参数如下:
|
normParam |
NORM参数。 |
preNormParam |
PRENORM参数。 |
postNormParam |
POSTNORM参数。 |
参数 |
描述 |
---|---|
quantType |
量化类型。 当前支持以下类型。
|
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
layerNormEps |
Epsilon,默认为1e-5,暂时不使用。 |
rstd |
默认为False,设置为true时会使用训练的rmsnormforward算子。 仅Atlas 800I A2推理产品支持该算子。 不支持和“precisionMode”,“modelType”同时设置。 量化场景下不支持使用“rstd”。 |
precisionMode |
默认为HIGH_PRECISION_MODE。 支持参数如下:
不支持和“rstd”,“modelType”同时设置。 量化场景下不支持使用“precisionMode”,该场景下配置该参数将返回报错ERROR_INVALID_PARAM。 |
modelType |
默认为LLAMA_MODEL,设置为GEMMA_MODEL时使用gemma模型的rmsnorm计算公式。 支持参数如下:
不支持和“rstd”,“precisionMode”同时启用。 量化场景下不支持使用“modelType”,该场景下配置该参数将返回报错ERROR_INVALID_PARAM。 |
dynamicQuantType |
动态量化类型。默认为DYNAMIC_QUANT_UNDEFINED非动态量化。当前版本暂不支持非对称动态量化。 |

8.0.RC2及后续版本normParam不再支持quantInputScale、quantInputOffset量化参数。
参数 |
描述 |
---|---|
quantType |
量化类型。 当前支持以下类型。
|
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
hasBias |
是否叠加偏置。默认为False,当需要输入beta时设置为True。 量化场景下不支持使用“hasBias”,该场景下配置该参数将返回报错ERROR_INVALID_PARAM。 |

8.0.RC2及后续版本PreNormParam不再支持quantInputScale、quantInputOffset量化参数。
参数 |
描述 |
---|---|
quantType |
量化类型。 当前仅支持QUANT_UNDEFINED。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
hasBias |
是否叠加偏置。默认为False,当需要输入beta时设置为True。 |
RMS_NORM_NORM DYNAMIC_QUANT
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[d_0, ..., d_k, n] |
float16 |
ND |
最后一维n的大小要32字节对齐,且小于等于12288。 |
gamma |
[1, ..., 1, n] |
float16 |
ND |
最后一维n的大小要32字节对齐,且小于等于12288。 |
beta |
[1, ..., 1, n] |
float16 |
ND |
最后一维n的大小要32字节对齐,且小于等于12288。 |
output |
[d_0, ..., d_k, n] |
int8 |
ND |
最后一维n的大小要32字节对齐,且小于等于12288。 |
scale |
[d_0, ..., d_k] |
float |
ND |
当quantType == QUANT_INT8且dynamicQuantType != DYNAMIC_QUANT_UNDEFINED时输出。 |
offset |
[d_0, ..., d_k] |
float |
ND |
当quantType == QUANT_INT8且dynamicQuantType == DYNAMIC_QUANT_ASYMMETRIC时输出。 当前版本暂不支持。 |