约束说明
- 因硬件限制,block_size %16 == 0,推荐 block_size = 128。
- 开启并行解码功能时,block_size <= 128。
- blockTables中元素的值须在[0, num_blocks)之间。
- head_size范围为(0, 256],keyCache和valueCache的格式为NZ时,head_size必须是16倍数。
- 在
Atlas 推理系列产品 上 :- query、keyCache、valueCache、maskTensor 四个入参只支持float16。
- 0<batch<=2048。
- 当maskType为4的时候,有如下约束:
- block_size取值为128,qseqlen <= kvsqlen,(kvsqlen - qseqlen) % 128 =0 (block_size = 128)。
- calcType = CALC_TYPE_SPEC。
- 当maskType为5(MASK_TYPE_NORM_COMPRESS)的时候,有如下约束:
- mask数据类型仅支持float16。
- 不支持量化,quantType必须为TYPE_QUANT_UNQUANT。
- calcType = CALC_TYPE_SPEC(并行解码/splitfuse场景)。
- scaleType = SCALE_TYPE_TOR(不支持SCALE_TYPE_LOGN,op-plugin中硬编码为TOR)。
- mask维度:ND为[2048,2048]。
- mask为2048×2048共享倒三角压缩mask,所有batch/head共用同一块mask,只需准备一份。mask内容为标准因果mask:上三角不含对角线填充负大值(不可见,推荐-60000或-10000, op-plugin测试使用-10000),下三角及对角线为0(可见)。
- kvSeqLen(即contextLens)须满足 kvSeqLen >= qSeqLen,且kvSeqLen表示历史KV长度与当前query长度之和(非仅历史长度)。算子根据kvSeqLen与qSeqLen自动计算前缀长度 prefix = max(0, kvSeqLen - qSeqLen) 用于mask对齐,用户无需传入额外参数。
- 序列长度可超过2048,算子内部自动适配,无需用户额外操作。
- 多头自适应压缩、并行解码场景、量化场景、以及
Atlas 推理系列产品 上,keyCache,valueCache的head_size等长,范围为(0, 256],且block_size * head_size ≤ 128 * 128,否则keyCache,valueCache的head_size可以不相同,范围为(0, 576],当keyCache或valueCache的head_size > 256时,block_size小于等于128。 - 针对mask类型,如果原模型非alibi,且mask没有做padding,可选择“maskType”为UNDEFINED,即不传mask;其他情况则依据原生模型的配置,选择“maskType”是MASK_TYPE_NORM或MASK_TYPE_ALIBI。
Atlas 训练系列产品 与Atlas 推理系列产品 的输入输出约束相同,Atlas 训练系列产品 只支持“maskType”为UNDEFINED、MASK_TYPE_NORM或MASK_TYPE_ALIBI的基础功能场景,其余特性参数需为默认值。- 若想使用GQA模式,需满足headNum > kvHeadNum且headNum%kvHeadNum == 0。
- 当block_size = head_size = 256时,在
Atlas A2 训练系列产品 /Atlas A2 推理系列产品 上,输入格式需满足BSND、非量化、decoder场景。 - max_num_blocks_per_seq >= (max(contextLens) + block_size - 1) // block_size。
- Atlas 350 加速卡仅支持基础场景。