---
title: MLA并行解码
description: "在MLA场景下的并行解码功能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0213.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0213.html
indexId: 928624a786c0cae0aa0ca2cf4beb238c1ea7ad1045975a4e8a778077d8655df364
---
# MLA并行解码

#### 功能说明

在MLA场景下的并行解码功能。


#### 开启方式

- “calcType”置为CALC_TYPE_SPEC
- mlaVHeadSize>0


#### 输入

| 参数 | 维度 | 数据类型 | 格式 | cpu or npu | 描述 | 使用场景 |
| --- | --- | --- | --- | --- | --- | --- |
| query | [num\_tokens, num\_head, head\_size] | float16/bf16 | ND | npu | 各batch的query在num\_tokens轴合并。 | 基础场景 |
| keyCache | [num\_blocks, block\_size, kv\_head\_num, head\_size\_k] | float16/bf16 | ND | npu | kcache。 | 基础场景 |
| blockTables | [num\_tokens, max\_num\_blocks\_per\_query] | int32 | ND | npu | 每个query的kvcache的block table，第一维是token索引，第二维表示block索引。 | 基础场景 |
| contextLens | [batch] | int32 | ND | cpu | 每个query对应的key/value的token数量。 | 基础场景 |
| mask | [num\_tokens(合轴) , max\_seqlen] | float16/bf16 | ND | npu | 当maskType不为UNDEFINED时输入。 | mask场景 |
| qSeqLens | [batch] | int32 | ND | cpu | 当开启并行解码功能时需要传此tensor，每个batch对应的seqLen。 | 并行解码场景 |


#### 输出

| 参数 | 维度 | 数据类型 | 格式 | cpu or npu | 描述 | 使用场景 |
| --- | --- | --- | --- | --- | --- | --- |
| attnOut | [num\_tokens, num\_head, head\_size\_v] | float16/bf16 | ND | npu | 经过计算输出的query。 | 基础场景 |


#### 约束说明

- 与MLA合并输入的约束相同（embed大小限制）。
- qSeqlen中的值大于等于1，MTP需要不全为1。
- maskType支持UNDEFINED或者MASK_TYPE_SPEC。
- MLA下仅支持MQA场景。
- head_num范围为(0,256]，head_size、head_size_k范围为(0,576]，blocksize范围为(0,128]。
