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