下载
中文
注册

参数列表

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