在使用时应带有命名空间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。 |
否 |
mlaVHeadSize |
uint32_t |
0 |
大于0时开启MLA合并kvcache功能,表示kv合并传入时v的head_size取值范围为[0,576]。 |
否 |
windowSize |
0 |
uint32_t |
SWA 窗口大小。需合理设置窗口大小,若其大于q/k 的maxSeqlen会导致SWA退化成普通SelfAttention操作。 |
否 |
cacheType |
CACHE_TYPE_NORM |
CacheType |
cache内部排布类型, 为CACHE_TYPE_SWA开启SWA KVCache优化,只储存后windowSize个token的KVCache, 控制KVCache的长度不超过windowSize, 以此减少显存占用。 |
否 |
rsv[64] |
uint8_t |
{0} |
预留参数。 |
否 |
上表中类型为自定义类型的,其描述如下: