昇腾社区首页
中文
注册

参数列表

成员名称

类型

默认值

取值范围

是否必选

描述

headNum

int32_t

0

{8,16,32,64,128}

query头数量。

qkScale

float

1.0

(0,1]

Q*K^T后乘以的缩放系数。

kvHeadNum

int32_t

0

  • [1]
  • prefill全量场景下:headNum==kvHeadNum

kv头数量。

maskType

MaskType

UNDEFINED

[0,2]

mask类型。

calcType

CalcType

CALC_TYPE_UNDEFINED

[0,4]

计算类型。

cacheMode

CacheMode

KVCACHE

[0,3]

输入query和kcache的类型。

rsv[43]

uint8_t

0

[0]

预留字段。

上表中类型为自定义类型的,其描述如下:

  • maskType:表示mask类型,其具体取值如下。
    • UNDEFINED:无mask。
    • MASK_TYPE_SPEC:并行解码mask,与calcType=CALC_TYPE_SPEC或CALC_TYPE_SPEC_AND_RING一起使用。
    • MASK_TYPE_MASK_FREE:传入固定shape的mask,与calcType = CALC_TYPE_SPEC、calcType = CALC_TYPE_PREFILL或CALC_TYPE_SPEC_AND_RING一起使用。计算时根据尾部长度从传入mask中获取真实的mask。mask为倒三角形式,第一行全部为-inf,最后一行全部为0。具体形状如下:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      def generate_mask_free(q_len):
              :param q_len: q_len
              :return: constructed mask, e.g. when q_len=2, returned as
              [[-inf   -inf   -inf   ...   -inf],
               [0       -inf   -inf   ...   -inf],
               [0       0       -inf   ...   -inf],
               ...
               [0       0       0       ...   -inf],
               [0       0       0       ...   0]]
              """
              mask_free = np.full((125 + 2 * q_len, 128), -10000.0)
              mask_free = np.triu(mask_free, 2 - q_len)
              return mask_free
      
    • MASK_TYPE_CAUSAL_MASK:mask内部生成。
  • calcType:表示计算类型,其具体取值如下。
    • CALC_TYPE_UNDEFINED:默认的decoder场景。
    • CALC_TYPE_SPEC:支持qseqlen大于1,并行解码功能,MTP使用该场景。
    • CALC_TYPE_RING:ringAttention,额外输出Ise。
    • CALC_TYPE_SPEC_AND_RING:支持传入大于1的qseqlen ringAttention。
    • CALC_TYPE_PREFILL:prefill 全量。
  • cacheMode:表示输入query和kcache的类型,其具体取值如下。

    与MLAPO大融合预处理算子对应使用。

    • KVCACHE:输入只有一个q和一个合并kvCache,为原PagedAttention下的MLA场景,目前暂未接入。
    • KROPE_CTKV:输入的q拆分为qNope和qRope,输入的kcache拆分为ctKV和kRope,对应之前的默认场景。
    • INT8_NZCACHE:高性能cache,在KROPE_CTKV的基础上:krope和ctkv转为NZ格式输出,ctkv和qnope经过per_head静态对称量化为int8类型。
    • NZCACHE:在KROPE_CTKV的基础上krope和ctkv转为NZ格式输出。