参数列表
在使用时应带有命名空间atb::infer::SelfAttentionParam的参数,成员描述如下:
成员名称  | 
类型  | 
默认值  | 
描述  | 
是否必选  | 
|---|---|---|---|---|
quantType  | 
QuantType  | 
TYPE_QUANT_UNQUANT  | 
quant类型。  | 
否  | 
outDataType  | 
aclDataType  | 
ACL_DT_UNDEFINED  | 
output数据类型。默认值表示根据输入tensors自动推导输出tensors数据类型。  | 
否  | 
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  | 
KernelType  | 
KERNELTYPE_DEFAULT  | 
内核精度类型。 
  | 
否  | 
clampType  | 
ClampType  | 
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。  | 
否  | 
mlaVHeadSize  | 
uint32_t  | 
0  | 
大于0时开启MLA合并kvcache功能,表示kv合并传入时v的head_size取值范围为[0,576]。  | 
否  | 
windowSize  | 
uint32_t  | 
0  | 
SWA窗口大小。需合理设置窗口大小,若其大于q/k 的maxSeqlen会导致SWA退化成普通SelfAttention操作。  | 
否  | 
cacheType  | 
CacheType  | 
CACHE_TYPE_NORM  | 
cache内部排布类型,为CACHE_TYPE_SWA开启SWA KVCache优化,只储存后windowSize个token的KVCache,控制KVCache的长度不超过windowSize,以此减少显存占用。  | 
否  | 
rsv[64]  | 
uint8_t  | 
{0}  | 
预留参数。  | 
否  | 
上表中类型为自定义类型的,其描述如下:
- QuantType:表示quant类型的枚举量,其具体取值如下。
- TYPE_QUANT_UNDEFINED:默认值,不与量化融合,此时q、k、v为bf16/float16。
 - TYPE_QUANT_UNQUANT:默认值,不与量化融合,此时q、k、v为bf16/float16。
 - TYPE_DEQUANT_FUSION:与反量化融合, 预留类型,当前不能够取此值。
 - TYPE_QUANT_QKV_OFFLINE:离线INT8量化,只支持
Atlas 800I A2 推理产品 /Atlas A2 训练系列产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 。 - TYPE_QUANT_QKV_ONLINE:在线INT8量化,只支持
Atlas 800I A2 推理产品 /Atlas A2 训练系列产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 。 
 - outDataType:output数据类型,其具体取值如下。
- 只支持PA_ENCODER,且“QuantType”不为TYPE_QUANT_UNQUANT(格式为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。
 - PREFIX_ENCODER:用于FA支持prefix cache场景。
 
 - KernelType:表示内核精度类型,其具体取值如下。
- KERNELTYPE_DEFAULT :输入float16,batchmatmul使用float16,输出float16。
 - KERNELTYPE_HIGH_PRECISION :输入float16,batch matmul使用float,输出float16。
 
 - ClampType:表示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 训练系列产品 和Atlas A3 推理系列产品 /Atlas A3 训练系列产品 。 - MASK_TYPE_SLIDING_WINDOW_NORM: sliding window attention mask。
 - MASK_TYPE_SLIDING_WINDOW_COMPRESS:sliding window attention压缩mask。
 - MASK_TYPE_CAUSAL_MASK:mask内部生成。
 
 - 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。
 
 - CacheType:cache内部排布类型,其具体取值如下。
- CACHE_TYPE_NORM:正常cache。
 - CACHE_TYPE_SWA:固定长度cache。