开发者
下载
[object Object][object Object]
  • [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]:不支持
[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][object Object][object Object]

该接口无返回值。计算结果直接原地写回输入张量[object Object][object Object]在计算后shape和dtype保持不变;未被[object Object]命中的行保留原值。

[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]

默认支持确定性计算。

[object Object]
  • 单算子模式调用

    [object Object]
  • 图模式(torchair)调用

    复用上面单算子示例构造的 cache/x/slot_mapping,用torchair后端编译后调用即可:

    [object Object]