Exp近似计算
功能说明
exp使用m8v2近似计算提升性能。
在进行attention计算时exp占据单算子耗时比较大,故可以使用fast exp进行快速计算。

基于此理论,提出exp m8v2方案,提升精度的同时保持性能:

其中多项式可以采用秦九韶算法减少操作次数:

其中系数经过数值寻优后得到确定。
开启方式
参数“kernelType”置为KERNELTYPE_EXP_M8V2。
- 算子输入列表
参数
维度
数据类型
格式
cpu/npu
说明
Q
[ntokens, heads, headSize]
float16
ND
npu
nTokens: sum(qSeqlen),且求和后向上16对齐。
K
[ntokens, kvHead, headSize]
float16
ND
npu
-
V
[ntokens, kvHead, headSize]
float16
ND
npu
v shape 与k 相同。
Attention_mask
压缩mask:maxSeqlen = 128[1, 128/16, 128, 16]
float16
NZ
npu
maskType为MASK_TYPE_UNDEFINED(0)时不传入。
seqlen
[batch]
int32/uint32
ND
npu
-
- 算子输出列表
参数
维度
数据类型
格式
cpu/npu
说明
output
[nTokens, head_num, head_size]
float16
ND
npu
输出。
约束说明
- headSize必须等于headSizeV,不支持MLA。
- headSize需要16对齐。
- m8v2仅在
Atlas 推理系列产品 上支持。 - 仅支持masktype为MASK_TYPE_UNDEFINED,MASK_TYPE_NORM。
- 仅支持calcType为PA_ENCODER。
- 支持headNum != kvHeadNum。
- 支持qkScale归一化。
- 不支持qScale缩放。
- quantType、outDataType、batchRunStatusEnable、isTriuMask、clampType、clampMin、clampMax、kvcacheCfg、scaleType、mlaVHeadSize、cacheType、windowSize仅支持默认值。
父主题: 高精度/近似计算