在使用时应带有命名空间atb::infer::PagedAttentionParam的参数,成员描述如下:
成员名称
|
类型
|
默认值
|
描述
|
headNum
|
int32_t
|
0
|
query 头大小。
|
qkScale
|
float
|
1.0
|
算子tor值。
|
kvHeadNum
|
int32_t
|
0
|
kv头数量。
|
maskType
|
MaskType
|
UNDEFINED
|
mask类型。
|
batchRunStatusEnable
|
bool
|
false
|
是否开启控制可计算batch。
|
quantType
|
QuantType
|
TYPE_QUANT_UNDEFINED
|
量化类型。
|
outDataType
|
aclDataType
|
ACL_DT_UNDEFINED
|
output数据类型。
|
hasQuantOffset
|
bool
|
false
|
开启量化功能后是否使用offset。
|
compressType
|
CompressType
|
COMPRESS_TYPE_UNDEFINED
|
压缩方式。
|
calcType
|
CalcType
|
CALC_TYPE_UNDEFINED
|
计算类型。
|
scaleType
|
ScaleType
|
SCALE_TYPE_TOR
|
scale类型:为SCALE_TYPE_LOGN时,不支持quanttype为2和3。
|
inputLayout
|
InputLayout
|
TYPE_BSND
|
数据排布格式默认为BSND。
|
上表中类型为自定义类型的,其描述如下:
- MaskType:表示mask类型的枚举量,其具体取值如下。maskType取不同MaskType值或在不同硬件上运行时维度不同,详见mask类型。
- UNDEFINED(枚举值:0):默认值,全0的mask。
- MASK_TYPE_NORM(枚举值:1):倒三角mask。
- MASK_TYPE_ALIBI(枚举值:2):alibi mask。
- MASK_TYPE_SPEC(枚举值:3):并行解码mask。
- QuantType:表示量化类型的枚举量,其具体取值如下:
- TYPE_QUANT_UNDEFINED(枚举值:0):默认值,不与量化融合。
- TYPE_DEQUANT_FUSION(枚举值:1):与反量化融合,只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- TYPE_QUANT_QKV_OFFLINE(枚举值:2):离线INT8量化,只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- TYPE_QUANT_QKV_ONLINE(枚举值:3):在线INT8量化,只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- 量化类型有以下约束条件:
- 为TYPE_QUANT_UNDEFINED时,q、keyCache、valueCache为bf16/float16。
- 为TYPE_DEQUANT_FUSION时,q为bf16/float16,keyCache、valueCache为int8。
- 为TYPE_QUANT_QKV_OFFLINE或TYPE_QUANT_QKV_ONLINE时,q、keyCache、valueCache为int8。
- keyCache,valueCache的headsize等长,范围为(0, 256],且block_size * head_size ≤ 128 * 128。
- 为TYPE_QUANT_QKV_OFFLINE或TYPE_QUANT_QKV_ONLINE时,outdatatype需要配置,只能是ACL_FLOAT16或ACL_BF16。inputLayout只支持TYPE_BSND。
- CompressType:表示压缩类型的枚举量,其具体取值如下:
- COMPRESS_TYPE_UNDEFINED(枚举值:0):默认值,不压缩。
- COMPRESS_TYPE_KVHEAD(枚举值:1):压缩key_cache, value_cache的kvHead维度, 只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- COMPRESS_TYPE_KVHEAD_ROPE(枚举值:2):rope场景压缩key_cache, value_cache的kvHead维度, 只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- COMPRESS_TYPE_MAX(枚举值:3):压缩类型边界值,仅用于判断是否出界,所有情况不能取该值。
- 压缩类型有以下约束条件:
- 压缩方式为COMPRESS_TYPE_KVHEAD时,不支持quanttype为2和3。
- 压缩方式为COMPRESS_TYPE_KVHEAD_ROPE时, maskType需传0。此时不支持quanttype为2和3。
- CalcType:表示计算类型的枚举量,其具体取值如下:
- CALC_TYPE_UNDEFINED(枚举值:0):默认值,不开启并行解码。
- CALC_TYPE_SPEC(枚举值:1):并行解码功能,此时只支持quantType = 0。
- ScaleType:表示是否开启LogN特性的枚举量,其具体取值如下:
- InputLayout:表示数据排布格式的枚举量,其具体取值如下:
- TYPE_BSND(枚举值:0):默认值,表示数据排布为BSND。
- TYPE_BNSD(枚举值:1):表示数据排布为BNSD。