---
title: 约束说明
description: "- 因硬件限制，block_size %16 == 0，推荐 block_size = 128。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0198.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0198.html
indexId: 1ad6ff9920412c4e2e1fd8285aabfaa1bc1be960a474e00daf15c757aaf33baa64
---
# 约束说明

- 因硬件限制，block_size %16 == 0，推荐 block_size = 128。
- 开启并行解码功能时，block_size <= 128。
- blockTables中元素的值须在[0, num_blocks)之间。
- head_size范围为(0, 256]，keyCache和valueCache的格式为NZ时，head_size必须是16倍数。
- 在Atlas 推理系列产品上 ：

  - query、keyCache、valueCache、maskTensor 四个入参只支持float16。
  - 0<batch<=2048。
  - 当maskType为4的时候，有如下约束：

    - block_size取值为128，qseqlen <= kvsqlen，(kvsqlen - qseqlen) % 128 =0 (block_size = 128)。
    - calcType = CALC_TYPE_SPEC。
- 多头自适应压缩、并行解码场景、量化场景、以及Atlas 推理系列产品上，keyCache，valueCache的head_size等长，范围为(0, 256]，且block_size * head_size ≤ 128 * 128，否则keyCache，valueCache的head_size可以不相同，范围为（0, 576]，当keyCache或valueCache的head_size > 256时，block_size小于等于128。
- 针对mask类型，如果原模型非alibi，且mask没有做padding，可选择“maskType”为UNDEFINED，即不传mask；其他情况则依据原生模型的配置，选择“maskType”是MASK_TYPE_NORM或MASK_TYPE_ALIBI。
- Atlas 训练系列产品与Atlas 推理系列产品的输入输出约束相同，Atlas 训练系列产品只支持“maskType”为UNDEFINED、MASK_TYPE_NORM或MASK_TYPE_ALIBI的基础功能场景，其余特性参数需为默认值。
- 若想使用GQA模式，需满足headNum > kvHeadNum且headNum%kvHeadNum == 0。
- 当block_size = head_size = 256时，在Atlas A2 训练系列产品 / Atlas A2 推理系列产品上，输入格式需满足BSND、非量化、decoder场景。
- max_num_blocks_per_seq >= (max(contextLens) + block_size - 1) // block_size。
