昇腾社区首页
中文
注册

RmsNormOperation

功能

RMS归一化处理。

图1 NORM

约束

所有输入输出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

归一化类型,参数如下:

  • RMS_NORM_NORM
  • RMS_NORM_PRENORM
  • RMS_NORM_POSTNORM(当前不支持)。

normParam

NORM参数。

preNormParam

PRENORM参数。

表1 normParam成员

参数

维度

quantType

量化类型。

epsilon

Epsilon,归一化时加在分母上防止除零。

quantInputScale

量化参数,非对称量化尺度变化(调整fp的输出),推荐值由量化工具(如ModelSlim)计算得出。

quantInputOffset

量化参数,非对称量化偏移(输出后加上偏移),推荐值由量化工具(如ModelSlim)计算得出。

表2 preNormParam成员

参数

维度

quantType

量化类型。

epsilon

Epsilon,归一化时加在分母上防止除零。

quantInputScale

量化参数,非对称量化尺度变化(调整fp的输出),推荐值由量化工具(如ModelSlim)计算得出。

quantInputOffset

量化参数,非对称量化偏移(输出后加上偏移),推荐值由量化工具(如ModelSlim)计算得出。

输入

表3 RMS_NORM_NORM输入

参数

维度

数据类型

格式

描述

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表示当前维度的大小没有约束。

表4 RMS_NORM_PRENORM输入

参数

维度

数据类型

格式

描述

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。

输出

表5 RMS_NORM_NORM输出

参数

维度

数据类型

格式

描述

output

[-1,…,-1,n]

-1表示当前维度的大小没有约束。

float16/int8

ND

quantType=INT8时输出int8。

注1:所有Tensor最后一维的n大小需保持一致,n ≤ 8192。

表6 RMS_NORM_PRENORM输出

参数

维度

数据类型

格式

描述

output

[-1,…,-1,n]

-1表示当前维度的大小没有约束。

float16

ND

-

outputQuant

[-1,…,-1,n]

-1表示当前维度的大小没有约束。

int8

ND

quantType=INT8时输出int8。

注1:所有Tensor最后一维的n大小需保持一致,n ≤ 8192。