在使用时应带有命名空间atb::infer::SelfAttentionParam的参数,成员描述如下:
成员名称
|
类型
|
默认值
|
描述
|
quantType
|
QuantType
|
TYPE_QUANT_UNDEFINED
|
quant类型。
|
outDataType
|
aclDataType
|
ACL_DT_UNDEFINED
|
output数据类型。
|
headNum
|
int32_t
|
0
|
query头大小, 需大于0
|
kvHeadNum
|
int32_t
|
0
|
kv头数量,该值需要用户根据使用的模型实际情况传入。
|
qScale
|
float
|
1
|
query缩放系数。
|
qkScale
|
float
|
1
|
算子tor值, 在Q*K^T后乘。
|
batchRunStatusEnable
|
bool
|
false
|
是否开启动态batch。
|
isTriuMask
|
uint32_t
|
0
|
是否开启倒三角优化, 只有mask为倒三角的时候才能开启优化。
|
calcType
|
CalcType
|
UNDEFINED
|
计算类型。
|
kernelType
|
KernelTpye
|
KERNELTYPE_DEFAULT
|
内核精度类型。
|
clampType
|
ClampTpye
|
CLAMP_TYPE_UNDEFINED
|
clamp类型。
|
clampMin
|
float
|
0
|
clamp功能最小值。
|
clampMax
|
float
|
0
|
clamp功能最大值。
|
maskType
|
MaskType
|
MASK_TYPE_UNDEFINED
|
mask类型。
|
kvcacheCfg
|
KvCacheCfg
|
K_CACHE_V_CACHE
|
kvcache配置。
|
scaleType
|
ScaleType
|
SCALE_TYPE_TOR
|
scale类型。
|
inputLayout
|
InputLayout
|
TYPE_BSND
|
数据排布格式默认为BSND。
|
上表中类型为自定义类型的,其描述如下:
- QuantType:表示quant类型的枚举量,其具体取值如下。
- TYPE_QUANT_UNDEFINED:默认值,不与量化融合,此时q,k,v为bf16/float16。
- TYPE_DEQUANT_FUSION:与反量化融合, 预留类型,当前不能够取此值。
- TYPE_QUANT_QKV_OFFLINE:离线INT8量化,只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- TYPE_QUANT_QKV_ONLINE:在线INT8量化,只支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- outDataType:output数据类型,其具体取值如下。
- 只支持PA_ENCODER,且“QuantType”不为TYPE_QUANT_UNDEFINED(格式为aclDataType)。
- kvHeadNum:表示kv头数量, 该值需要用户根据使用的模型实际情况传入,其具体取值如下。
- kvHeadNum = 0时,keyCache的k_head_num,valueCache的v_head_num与query的num_heads一致,均为num_heads的数值。
- kvHeadNum != 0时,keyCache的k_head_num,valueCache的v_head_num与kvHeadNum值相同。
- CalcType:表示计算类型,其具体取值如下。
- UNDEFINED:同时使用flashAttention的decoder和encoder。
- ENCODER:使用FlashAttention的encoder。、
- DECODER:使用FlashAttention的decoder。
- PA_ENCODER:使用PagedAttention的encoder。
- KernelType:表示内核精度类型,其具体取值如下。
- KERNELTYPE_DEFAULT :输入float16,batchmatmul使用float16,输出float16。
- KERNELTYPE_HIGH_PRECISION :输入float16,batch matmul使用float,输出float16。
- ClampTpye:表示clamp类型,其具体取值如下。
- CLAMP_TYPE_UNDEFINED:不进行缩放。
- CLAMP_TYPE_MIN_MAX:进行缩放,同时指定最大最小值。
- MaskType:表示mask类型,其具体取值如下。
- MASK_TYPE_UNDEFINED:默认值,全0mask。
- MASK_TYPE_NORM:倒三角mask。
- MASK_TYPE_ALIBI:Alibi Mask。
- MASK_TYPE_NORM_COMPRESS:倒三角压缩mask。
- MASK_TYPE_ALIBI_COMPRESS:alibi压缩mask。
- MASK_TYPE_ALIBI_COMPRESS_SQRT:alibi压缩开平方mask。
- MASK_TYPE_ALIBI_COMPRESS_LEFT_ALIGN:alibi压缩mask左对齐。当前仅支持Atlas 800I A2 推理产品/Atlas A2 训练系列产品。
- KvCacheCfg:表示kvcache配置,不支持“calcType”为PA_ENCODER,其具体取值如下。
- K_CACHE_V_CACHE :默认值,进行kvcache处理。
- K_BYPASS_V_BYPASS:直接传入kvcache。
- ScaleType:表示scale类型,其具体取值如下。
- SCALE_TYPE_TOR:默认值,不开启LogN缩放。
- SCALE_TYPE_LOGN:注意力使用LogN缩放,quantType只能是0。
- SCALE_TYPE_MAX:边界值,仅用于判断是否出界。
- InputLayout:输入数据排布格式,InputLayout类型枚举值,其具体取值如下。
- 默认为TYPE_BSND,此时枚举值为0。
- 输入数据排布格式为TYPE_BNSD时,枚举值为1。