LayerNorm是一种归一化方法,可以将网络层输入数据归一化到[0, 1]之间。当前支持三种:NORM、PRENORM、POSTNORM三种归一化。
标准的LayerNorm操作,公式为:
add和layernorm融合算子,先将x和residual相加再做layernorm归一化,公式为:
add和layernorm融合算子,先将x和residual相加再做layernorm归一化。公式与PostNorm相同。和postNorm区别在于会输出x和residual相加的结果。
struct LayerNormParam { enum LayerNormType : int { LAYER_NORM_UNDEFINED = 0, LAYER_NORM_NORM, LAYER_NORM_PRENORM, LAYER_NORM_POSTNORM, LAYER_NORM_MAX, }; struct NormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; int32_t beginNormAxis = 0; int32_t beginParamsAxis = 0; DynamicQuantType dynamicQuantType = DYNAMIC_QUANT_UNDEFINED; }; struct PreNormParam { QuantType quantType = QUANT_UNDEFINED; float epsilon = 1e-5; size_t opMode = 0; float zoomScaleValue = 1.0f; }; struct PostNormParam { QuantType quantType = QUANT_UNDEINFED; float epsilon = 1e-5; size_t opMode = 0; float zoomScaleValue = 1.0f; }; LayerNormType layerType = LAYER_NORM_UNDEFINED; NormParam normParam; PreNormParam preNormParam; PostNormParam postNormParam; };
成员名称 |
描述 |
---|---|
layerType |
归一化类型。
|
normParam |
NORM参数,具体请参见表1。 |
preNormParam |
PRETNORM参数,具体请参见表2。 |
postNormParam |
POSTNORM参数,具体请参见表3。 |
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
quantType |
QuantType |
QUANT_UNDEFINED |
量化类型。 当前支持以下类型。 QUANT_UNDEINFED; QUANT_INT8。 |
epsilon |
float |
1e-5 |
Epsilon,归一化时加在分母上防止除零。 |
beginNormAxis |
int32_t |
0 |
归一化的维度,默认值为0,从第几维开始norm,同时决定输入gamma和beta维度。 |
beginParamsAxis |
int32_t |
0 |
归一化的维度,默认值为0,决定从第几维开始把后面的维度按轴合并。 |
dynamicQuantType |
DynamicQuantType |
DYNAMIC_QUANT_UNDEFINED |
动态量化类型。默认为DYNAMIC_QUANT_UNDEFINED非动态量化。当前版本暂不支持非对称动态量化。 |
8.0.RC2及后续版本normParam不再支持quantInputScale、quantInputOffset、quantInputAlpha量化参数。
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
quantType |
QuantType |
QUANT_UNDEFINED |
量化类型。当前仅支持QUANT_UNDEINFED。 |
epsilon |
float |
1e-5 |
Epsilon,归一化时加在分母上防止除零。 |
opMode |
size_t |
0 |
|
zoomScaleValue |
float |
1.0f |
缩放因子。 |
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
quantType |
QuantType |
QUANT_UNDEFINED |
量化类型。当前支持以下类型。 QUANT_UNDEINFED; QUANT_INT8。 |
epsilon |
float |
1e-5 |
Epsilon,归一化时加在分母上防止除零。 |
opMode |
size_t |
0 |
|
zoomScaleValue |
float |
1.0f |
缩放因子。 |
8.0.RC2及后续版本postNormParam不再支持quantInputScale、quantInputOffset、quantInputAlpha量化参数。