---
title: --dynamic_batch_size
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/atctool/atlasatcparam_16_0018.html
sourcePath: /source/zh/canncommercial/900/devaids/atctool/atlasatcparam_16_0018.html
indexId: 341f8533731896f92b43b357e2d53db8b499ef984076fbe108fe8bac1447befb72
---
# --dynamic_batch_size


#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明


设置动态batch_size参数，适用于执行推理时，每次处理图片或者句子数量不固定的场景。

在某些推理场景，如检测出目标后再执行目标识别网络，由于目标个数不固定导致目标识别网络输入batch_size不固定。如果每次推理都按照最大的batch_size或最大分辨率进行计算，会造成计算资源浪费。因此，推理需要支持动态batch_size和动态分辨率的场景，使用ATC工具时，通过该参数设置支持的batch_size，通过--dynamic_image_size参数设置支持的分辨率档位。

模型转换完成后，在生成的om离线模型中，会新增一个输入，在模型推理时通过该新增的输入提供具体的batch_size值。例如，a输入的batch_size是动态的，在om离线模型中，会有与a对应的b输入来描述a的具体batch_size。


#### 关联参数

该参数需要与--input_shape配合使用，不能与--dynamic_image_size、--dynamic_dims、--input_shape_range同时使用。且只支持N在shape首位的场景，即shape的第一位设置为"-1"。如果N在非首位场景下，请使用--dynamic_dims参数进行设置。


#### 参数取值

参数值：档位数，例如"1,2,4,8"。

参数值格式：指定的参数必须放在双引号中，档位之间使用英文逗号分隔。

参数值约束：

- 针对如下产品，档位数约束为：档位数取值范围为(1,100]，即必须设置至少2个档位，最多支持100档配置；每个档位数值建议限制为：[1~2048]。
  Atlas A3 训练系列产品 / Atlas A3 推理系列产品

  Atlas A2 训练系列产品 / Atlas A2 推理系列产品

  Atlas 200I/500 A2 推理产品

  Atlas 推理系列产品

  Atlas 训练系列产品

- 针对Atlas 350 加速卡，档位数约束为：档位数取值范围为(1, 256]，即必须设置至少2个档位，最多支持256档配置；每个档位数值建议限制为：[1~2048]。
- 如果用户设置的档位数值过大或档位过多，在运行环境执行推理时，建议执行swapoff -a命令关闭swap交换区间作为内存的功能，防止出现由于内存不足，将swap交换空间作为内存继续调用，导致运行环境异常缓慢的情况。


#### 推荐配置及收益

- 如果用户设置的档位数值过大或档位过多，可能会导致模型转换失败，此时建议用户减少档位或调低档位数值。
- CV（计算机视觉）类的网络，  --dynamic_batch_size
建议取值为8、16档位，该场景下的网络性能比单个batch_size更优（8、16档位只是建议取值，实际使用时还请以实际测试结果为准）。
- OCR/NLP（文字识别/自然语言处理）类网络，  --dynamic_batch_size
档位取值建议为16的整数倍（该档位值只是建议取值，实际使用时还请以实际测试结果为准）。


#### 示例

```
--input_shape="data:-1,3,416,416;img_info:-1,4"  --dynamic_batch_size="1,2,4,8"
```

其中，“--input_shape”中的“-1”表示设置动态batch_size。则ATC在模型编译时，支持的输入组合档数分别为：

第0档：data(1,3,416,416)+img_info(1,4)

第1档：data(2,3,416,416)+img_info(2,4)

第2档：data(4,3,416,416)+img_info(4,4)

第3档：data(8,3,416,416)+img_info(8,4)


#### 依赖约束

- 使用约束：

  - 不支持含有过程动态shape算子（网络中间层shape不固定）的网络。
  - 如果用户设置了动态batch_size，同时又通过    --insert_op_conf
参数设置了动态AIPP功能：
    实际推理时，调用aclmdlSetInputAIPP接口设置动态AIPP相关参数值时，需确保batch_size要设置为最大Batch数。接口详细说明请参见“aclmdlSetInputAIPP(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0308.html)”。

  - 通过该参数设置动态batch_size特性后，生成的离线模型网络结构会与固定batch_size场景下的不同，推理性能可能存在差异。
- 接口约束：
如果模型转换时通过该参数设置了动态batch_size，则使用应用工程进行推理时，在模型执行接口之前：

  - 使用aclmdlSetDynamicBatchSize接口，用于设置真实的batch_size档位。
  - 不使用aclmdlSetDynamicBatchSize接口，则模型执行时，默认按照batch_size设置范围的最大值进行赋值。
接口详细说明请参见“aclmdlSetDynamicBatchSize(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0306.html)”。
