参数列表
在使用时应带有命名空间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。