---
title: 参数列表
description: "在使用时应带有命名空间atb::infer::SelfAttentionParam的参数，成员描述如下："
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0262.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0262.html
indexId: 399a044b7d886a267dfa580efb89f6704e131ad5a7b610bf33bcf02a89ba5d8364
---
# 参数列表

在使用时应带有命名空间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 | 内核精度类型。 KERNELTYPE\_DEFAULT：输入/输出tensor和softmax均使用float16/bf16。 KERNELTYPE\_HIGH\_PRECISION：输入/输出tensor使用float16/bf16，softmax使用float类型。 | 否 |
| 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 A2 训练系列产品 / Atlas A2 推理系列产品和Atlas A3 推理系列产品 / Atlas A3 训练系列产品。
  - TYPE_QUANT_QKV_ONLINE：在线INT8量化，只支持Atlas 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 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。
