规格约束
- 输入数据排布格式为TYPE_BSND时:
- 在非PA_ENCODER下,Atlas 800I A2 推理产品/Atlas A2 训练系列产品和Atlas A3 推理系列产品/Atlas A3 训练系列产品上的query,key,value可传二维[nTokens, hiddenSize]或四维[batch, seqLen, headNum, headSize]。
- 在PA_ENCODER下,Atlas 800I A2 推理产品/Atlas A2 训练系列产品和Atlas A3 推理系列产品/Atlas A3 训练系列产品上的query,key,value可传二维[nTokens, hiddenSize]或三维[nTokens, headNum, headSize]。
- Atlas 推理系列产品上 :
- 0<batch<=2000。
- mask大小必须使用真实的maxSeqLen。
- qSeqLen必须等于kvSeqLen。
- 当在以下场景时,headSize = vHeadSize,范围为(0,256],其他情况headSize可以不等于vHeadSize,二者的范围为(0,576]。
- 开启量化。
- 注意力使用logN缩放特性。
- “inputLayout”为TYPE_BNSD。
- 在Atlas 推理系列产品上运行,此时headSize必须为16的倍数。
- 在Atlas 训练系列产品上运行,此时headSize必须为16的倍数。
- 关于tensor维度中的nTokens:
- Atlas 800I A2 推理产品/Atlas A2 训练系列产品和Atlas A3 推理系列产品/Atlas A3 训练系列产品上为各batch上seqLen之和。
- Atlas 推理系列产品上:PA_ENCODER下为所有batch的seqLen之和向上对齐到16的整数倍。
- 其余情况下为所有batch上的seqLen先向上对齐到16的整数倍,再求和。
- 关于选取何种mask:
- 在全量阶段,依据原生模型的配置,选择“maskType”是MASK_TYPE_NORM或MASK_TYPE_ALIBI。
- 在增量阶段,如果原模型非alibi,且mask没有做padding,可选择“maskType”为UNDEFINED,即不传mask;其他情况则依据原生模型的配置,选择“maskType”是MASK_TYPE_NORM或MASK_TYPE_ALIBI。
- 在长序列场景下,可以考虑压缩mask,压缩mask的构造方法详见压缩mask。
- 在PA_ENCODER下:
- qScale不生效。
- query、key、value的维度数要相同。
- 若想使用GQA模式,需满足headNum > kvHeadNum且headNum%kvHeadNum == 0。
- Atlas 训练系列产品只支持PA_ENCODER,仅支持基础功能,不支持功能列表中的所有功能。
- 在CalcType为ENCODER,DECODER且非bypass场景下hiddensize必须为16的倍数。
- query、key、value的headSize为非64的倍数时,会导致算子性能下降,为了确保最佳性能,建议将query、key、value的headSize设置为64的倍数。
- cpu侧的tensor需要利用hostData设置数据的地址,无需设置deviceData;npu侧的tensor需要利用deviceData设置数据的地址,无需设置hostData。特殊情况:ENCODER/DECODER在非kv-bypass场景下tokenOffset和Seqlen这两个tensor如果都同时传了deviceData和hostData,则会采用deviceData中的数据进行kvcache部分的计算。