---
title: qkv全量化
description: "支持量化好的q、k、v传入，降低显存占用。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0278.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0278.html
indexId: de29e99d37c3ac90abc99251989b2d41dfcf97bd346ef301d8dc4bbbaa4a872f64
---
# qkv全量化

#### 功能说明

支持量化好的q、k、v传入，降低显存占用。


#### 开启方式

参数“quantType”置为TYPE_QUANT_QKV_OFFLINE或TYPE_QUANT_QKV_ONLINE, 分别为离线量化与在线量化。

在线全量化需要添加四个输入tensor，分别是qkDescale、qkOffset、vpvDescale、vpvOffset，当采用离线量化时，需要在在线全量化新增的输入tensor的基础上额外传入pScale作为输入tensor。

若干输入tensor需要传入指定的维度，如下表所示：

| 参数 | 维度 | 数据类型 | 格式 | npu or cpu | 描述 |
| --- | --- | --- | --- | --- | --- |
| query | [nTokens, headNum, headSize] | int8 | ND | npu | query矩阵。 |
| key | [nTokens, headNum, headSize] | int8 | ND | npu | key矩阵。 |
| value | [nTokens, headNum, headSize] | int8 | ND | npu | value矩阵。 |
| mask | 同mask类型，开启mask压缩功能时与FA有所不同，见压缩mask | float16/bf16 | ND/NZ | npu | 四种shape分别对应： 1.所有batch相同，方阵。 2. batch不同时的方阵。 3. batch不同时的向量。 4. alibi场景。 当maskType为undefined时不传此tensor。 |
| seqLen | [batch] | int32 | ND | cpu | 等于1时，为增量或全量；大于1时，为全量。 |
| slopes | [headNum] | Atlas A2 训练系列产品 / Atlas A2 推理系列产品 和 Atlas A3 推理系列产品 / Atlas A3 训练系列产品 ： float16 | ND | npu | 当maskType为alibi压缩，且mask的shape为[256,256]时需传入此tensor，为alibi mask每个head的系数。 |
| qkDescale | [headNum] | float | ND | npu | 为Q\*K^T的反量化scale参数。 |
| qkOffset | [headNum] | int32 | ND | npu | 作为Q\*K^T的反量化offset参数。预留tensor，需传任意非空tensor，实际暂未使用。 |
| vpvDescale | [headNum] | float | ND | npu | quantType=2时，为P\*V的反量化scale参数；quantType=3时，为V的反量化scale参数。 |
| vpvOffset | [headNum] | int32 | ND | npu | 仅全量化场景传此tensor（即quantType=2或3）。 quantType=2时，为P\*V的反量化offset参数。 quantType=3时，为V的反量化offset参数。 预留tensor，需传任意非空tensor，实际暂未使用。 |
| pScale | [headNum] | float | ND | npu | P的离线量化scale参数。 当开启离线全量化时需要传此tensor（即quantType=2）。 当开启在线全量化时不传此tensor（即quantType=3）。 |
| output | [nTokens, headNum, headSize] | float16/bf16 | ND | npu | 输出。 |


其中pScale仅在离线量化场景传入，在线量化场景则不传此输入tensor。


#### 约束说明

使用全量化时需要指定输出tensor的数据类型，具体为使用参数outDataType，该参数只能是ACL_FLOAT16或ACL_BF16。

“calctype”须为PA_ENCODER。

不支持 Atlas 推理系列产品 。
