- [object Object]Ascend 950PR/Ascend 950DT[object Object]:支持
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:不支持
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:不支持
- [object Object]Atlas 200I/500 A2 推理产品[object Object]:不支持
- [object Object]Atlas 推理系列产品[object Object]:不支持
- [object Object]Atlas 训练系列产品[object Object]:不支持
接口功能:
在KV Cache的Epilog阶段对cache进行原地量化压缩更新,封装aclnnKvCompressEpilog。将bfloat16激活值x量化压缩后,按slot_mapping散写到cache,slot_mapping中值为-1的token跳过不处理。x尾轴d的后64列为rope段、前d-64列为nope段。支持三种量化模式:
[object Object]/[object Object](内部0/1):逐组动态量化压缩为FP8(uint8打包),rope段保留bfloat16;两者区别仅为每组 scale 的表示(bf16 / e8m0);[object Object](内部2):rope段hifloat8静态量化(乘x_scale后取hifloat8),nope段per-group FLOAT4_E2M1 动态量化(scale=组内amax/6以bfloat16写出)。
语义说明:
底层aclnn接口对cacheRef为原地实现;本Python接口同为原地语义:直接在输入cache上更新,未被slot_mapping命中的行保留原值。schema中cache标注为
[object Object],本接口无返回值,调用后直接使用入参cache。
[object Object]
该接口无返回值。计算结果直接原地写回输入张量[object Object],[object Object]在计算后shape和dtype保持不变;未被[object Object]命中的行保留原值。
- 该接口支持推理场景下使用。
- 该接口支持单算子模式调用。
- 仅支持[object Object]Ascend 950PR/Ascend 950DT[object Object]。
- cache仅支持四维shape
[object Object],倒数第二维固定为1(每token一个压缩向量),不支持其他维数。 - cache仅在blockNum维支持非连续:各block可不紧密排布,但block内(blockSize、headDim维)须连续。
- headDim约束:cache末维headDim必须 ≥ 每行写出字节数kvCacheCol = 对齐(concatCol),concatCol按量化模式计算:
- quant_mode=0/1:concatCol = (d−64) + 128 + ⌈(d−64)/64⌉ × scaleBytes,scaleBytes为mode0=2、mode1=1;
- quant_mode=2:concatCol = 64 + (d−64)/2 + (d−64)/quant_group_size × 2;
- 对齐规则:quant_mode=1不补齐,kvCacheCol = concatCol;quant_mode=0/2按32B对齐,kvCacheCol = ⌈concatCol / 32⌉ × 32。
- 示例:d=512、quant_mode=1 → kvCacheCol=583 → headDim ≥ 583(示例中取640)。
- slot_mapping的维度应等于x的维度减1,即slot_mapping为x除最后一维外的所有维度展平。
- x的最后一维(d轴)需满足d % 64 == 0且64 < d ≤ 8192,按每64个元素一组进行逐组量化。
- quant_mode=2时,quant_group_size仅支持16/32/64,且nope段长度(d-64)需能被quant_group_size整除。
- slot_mapping中值为-1的token会被跳过不处理;其余有效元素取值范围为[0, num_slots - 1],且元素值应保证不重复,重复时不保证结果正确性。
- 支持图模式(torchair)调用:经graph_convert注册的GE converter下沉为KvCompressEpilog算子,eager与图模式结果一致。
默认支持确定性计算。
单算子模式调用
[object Object]图模式(torchair)调用
复用上面单算子示例构造的 cache/x/slot_mapping,用torchair后端编译后调用即可:
[object Object]