RmsNormOperation
功能
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; float quantInputScale = 1.0f; int quantInputOffset = 0; double layerNormEps = 1e-5; }; struct PreNormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; float quantInputScale = 1.0f; int quantInputOffset = 0; }; RmsNormType layerType = RMS_NORM_UNDEFINED; NormParam normParam; PreNormParam preNormParam; };
成员
成员名称 |
描述 |
---|---|
layerType |
归一化类型,参数如下:
|
normParam |
NORM参数。 |
preNormParam |
PRENORM参数。 |
参数 |
维度 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
quantInputScale |
量化参数,非对称量化尺度变化(调整fp的输出),推荐值由量化工具(如ModelSlim)计算得出。 |
quantInputOffset |
量化参数,非对称量化偏移(输出后加上偏移),推荐值由量化工具(如ModelSlim)计算得出。 |
参数 |
维度 |
---|---|
quantType |
量化类型。 |
epsilon |
Epsilon,归一化时加在分母上防止除零。 |
quantInputScale |
量化参数,非对称量化尺度变化(调整fp的输出),推荐值由量化工具(如ModelSlim)计算得出。 |
quantInputOffset |
量化参数,非对称量化偏移(输出后加上偏移),推荐值由量化工具(如ModelSlim)计算得出。 |
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |
gamma |
[1,...,1,n] / [1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 quantType = INT8时, 维度为[1,n] |
beta |
[1,n] |
float16 |
ND |
quantType = INT8时输入。 最后一维的大小要32字节对齐。 |
注1:所有Tensor最后一维的n大小需保持一致,n≤8192。 注2:-1表示当前维度的大小没有约束。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
当前只支持quantType = INT8。 |
residual |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |
gamma |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
beta |
[1,n] |
float16 |
ND |
最后一维的大小要32字节对齐。 |
注1:所有Tensor最后一维的n大小需保持一致,n ≤ 8192。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16/int8 |
ND |
quantType=INT8时输出int8。 |
注1:所有Tensor最后一维的n大小需保持一致,n ≤ 8192。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
float16 |
ND |
- |
outputQuant |
[-1,…,-1,n] -1表示当前维度的大小没有约束。 |
int8 |
ND |
quantType=INT8时输出int8。 |
注1:所有Tensor最后一维的n大小需保持一致,n ≤ 8192。 |