---
title: 开启alibi场景下的多头压缩功能
description: "compressType=COMPRESS_TYPE_KVHEAD, kvCacheCfg=K_CACHE_V_CACHE"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0227.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0227.html
indexId: c89efa6ff6ca4784d56a4fb685fb94e0b4433f782a7b47c980ffecb097eb1c0564
---
# 开启alibi场景下的多头压缩功能

compressType=COMPRESS_TYPE_KVHEAD, kvCacheCfg=K_CACHE_V_CACHE

#### 输入

| 参数 | 维度 | 数据类型 | 格式 | 描述 |
| --- | --- | --- | --- | --- |
| key | [num\_tokens, num\_head, head\_size] | float16/bf16/int8 | ND | 当前step多个token的key。最后一维需要是32的倍数。 |
| value | [num\_tokens, num\_head, head\_size] | float16/bf16/int8 | ND | 当前step多个token的value。最后一维需要是32的倍数。 |
| keyCache | [num\_blocks, block\_size, 1, head\_size] | float16/bf16/int8 | ND | 所有的key cache。 |
| valueCache | [num\_blocks, block\_size, 1, head\_size] | float16/bf16/int8 | ND | 所有的value cache。 |
| slotMapping | [batch\*num\_head] | int32 | ND | 每个head每个batch的key或value在cache中的存储偏移，即（block\_id \* block\_size + offset\_in\_block）。 取值范围为[0, num\_blocks \* block\_size)，且不能存在重复值。 即意味着num\_tokens <= num\_blocks\*block\_size。 |
| wins | [batch\*num\_head] | int32 | ND | 压缩量。wins[i] < seqLens[floor(i/num\_head)]，且wins内的值需要大于等于0，值为0时不压缩。 |
| seqLens | [batch] | int32 | ND | 每个batch的实际seqLen，内部值都大于0。 |


#### 输出

| 参数 | 维度 | 数据类型 | 格式 | 描述 |
| --- | --- | --- | --- | --- |
| keyCacheOut | [num\_blocks, block\_size, 1, head\_size] | float16/bf16/int8 | ND | 所有的key cache。与输入keyCache为同一地址。 |
| valueCacheOut | [num\_blocks, block\_size, 1, head\_size] | float16/bf16/int8 | ND | 所有的value cache。与输入valueCache为同一地址。 |
