压缩mask
功能说明
又名mask-free。
在长序列场景下,由于seqLen较大,需要的mask的大小也会变大。此时可开启此功能,传入压缩后的mask,以减小显存占用。
开启方式
参数“isTriuMask”置为1。
- 在rope场景下:将变量“maskType”置为MASK_TYPE_NORM_COMPRESS。
- 在alibi场景下:依据具体需要,将变量“maskType”置为MASK_TYPE_ALIBI_COMPRESS或MASK_TYPE_ALIBI_COMPRESS_SQRT或MASK_TYPE_ALIBI_COMPRESS_LEFT_ALIGN。
alibi压缩mask场景需传入slopes。
约束说明
- alibi压缩mask只有“calcType”置为PA_ENCODER和PREFIX_ENCODER时生效。
- “maskType”为MASK_TYPE_ALIBI_COMPRESS或MASK_TYPE_ALIBI_COMPRESS_SQRT时,mask的维度:
- 在
Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 上为[headNum, seqLen, 128]或[256, 256]。 - 在
Atlas 推理系列产品 上为[headNum,128//16,maxSeqLen,16]或[1,256//16,256,16]。
- 在
- “maskType”为MASK_TYPE_NORM_COMPRESS时,mask的维度:
- 在
Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 上为[128,128]。 - 在
Atlas 推理系列产品 上为[1,128//16,128,16]。
- 在
- 使用alibi压缩mask时,q、k、v的headSize要小于等于128。
- MASK_TYPE_ALIBI_COMPRESS_LEFT_ALIGN仅支持
Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 。此时mask的维度为[256, 256]。 Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 上,当数据类型为float16时,alibi压缩mask只有开启高精度才有效。- 不同压缩mask的构造方法:
- 对于norm场景:
对应maskType为MASK_TYPE_NORM_COMPRESS。
mask为128 * 128的倒三角,其中:
- 当为float16场景时,mask如下图所示。
图1 float16场景下的压缩norm mask
- 当为bf16/float16高精度场景时,mask如下图所示。
图2 bf16/float16场景下的压缩norm mask
- 当为float16场景时,mask如下图所示。
- 对于alibi场景:
alibi mask可以拆解为
其中,alibi coefficient为每个head各不相同的系数,triangularMask代表倒三角mask。压缩mask的场景下,输入tensor中的mask即为压缩后的alibi bias,slopes即为alibi coefficient。针对alibi bias的压缩有如下三种情况:
- 右对齐alibi bias
对应“maskType”为MASK_TYPE_ALIBI_COMPRESS。
如下图所示,为512 * 512的压缩前的alibi bias。
图3 512 * 512压缩前的alibi bias对应的压缩后的256 * 256的压缩后的alibi bias如下图所示。
图4 256 * 256压缩后的alibi bias - 开平方的右对齐alibi bias
对应“maskType”为MASK_TYPE_ALIBI_COMPRESS_SQRT。
- 左对齐的alibi bias
对应“maskType”为MASK_TYPE_ALIBI_COMPRESS_LEFT_ALIGN。
压缩前的alibi bias如下图所示。
图5 压缩前的alibi bias压缩后的alibi bias如下图所示。
图6 压缩后的alibi bias注意:左对齐的压缩mask只支持
Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 。
- 右对齐alibi bias
- 对于norm场景: