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

#### 产品支持情况

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


#### 功能说明

压缩优化功能配置文件路径以及文件名，通过该参数使能配置文件中指定的压缩优化特性，从而提升网络性能。


#### 关联参数

若通过该参数配置了calibration量化特性，则不能再使用高精度特性，比如不能再通过--precision_mode参数配置force_fp32或must_keep_origin_dtype（原图fp32输入）；不能再通过--precision_mode_v2参数配置origin；不能通过--op_precision_mode配置high_precision参数等。在高精度模式下设置量化参数，既拿不到量化的性能收益，也拿不到高精度模式的精度收益。


#### 参数取值

参数值：配置文件路径以及文件名。

参数值格式：路径和文件名：支持大小写字母（a-z，A-Z）、数字（0-9）、下划线（_）、短横线（-）、句点（.）、中文汉字。

参数值约束：

当前仅支持配置如下两种压缩方式，用户根据实际情况决定配置哪种压缩方式：

```
enable_first_layer_quantization
: true
calibration
:
{
input_data_dir:
./data.bin,d2.bin
input_shape:
in:16,16;in1:16,16
config_file:
simple_config.cfg
infer_soc:
xxxxxx
infer_aicore_num:
10
infer_device_id: 0
infer_ip:
x.x.x.x
infer_port: 8000
log: info
}
```

其中：

- enable_first_layer_quantization：用于控制AIPP首层卷积是否进行优化（AIPP会与量化后模型首层卷积Conv2D前的Quant算子进行融合），配置文件中冒号前面表示压缩优化特性名称，冒号后面表示是否使能该特性，true表示使能，false表示不使能，默认不使能。只有Atlas 推理系列产品和Atlas 200I/500 A2 推理产品支持该特性。
  使能enable_first_layer_quantization特性时，只有网络结构中存在AIPP+Conv2D结构，并且在atc命令中将--enable_small_channel参数设置为1时，才有可能获得性能收益。由于量化后的模型存在一定程度上的精度损失，用户根据实际情况决定是否使能该特性。

- calibration：训练后量化，是指在模型训练结束之后进行的量化，对训练后模型中的权重由浮点数（当前支持float32/float16）量化到低比特整数（比如int8），并通过少量校准数据基于推理过程对数据（activation）进行校准量化，进而加速模型推理速度。训练后量化简单易用，只需少量校准数据，适用于追求高易用性和缺乏训练资源的场景。训练后量化的样例请单击  Link(https://gitee.com/ascend/samples/tree/master/python/level1_single_api/9_amct/atc)
获取。
  各参数说明如下，
  - input_data_dir：必选配置，模型输入校准数据的bin文件路径。若模型有多个输入，则多个输入的bin数据文件以英文逗号分隔。校准数据集用来计算量化参数，获取校准集时应该具有代表性，推荐使用测试集的子集作为校准数据集。校准数据的bin文件的生成方式可以参考    链接(https://gitee.com/ascend/samples/blob/master/python/level1_single_api/9_amct/amct_caffe/cmd/src/process_data.py)
。
  - input_shape：必选配置，模型输入校准数据的shape信息，例如：input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2，节点中间使用英文分号分隔。
  - config_file：可选配置，训练后量化简易配置文件，该文件配置示例以及参数解释请参见    简易配置文件
。
  - infer_soc：必选配置，进行训练后量化校准推理时，所使用的芯片名称，查询方法请参见    参数取值
。
  - infer_aicore_num：可选配置，进行训练后量化校准推理时，使用的AI Core数目，查询方法请参见    --aicore_num
。
  - infer_device_id：可选配置，进行训练后量化校准推理时所使用AI处理器设备的ID，默认为0。
  - infer_ip：Atlas 200I/500 A2 推理产品Ascend RC场景必选，NCS软件包所在服务器IP地址。
  - infer_port：Atlas 200I/500 A2 推理产品Ascend RC场景必选，NCS软件包所在服务器端口。
  - log：可选配置，设置训练后量化时的日志等级，该参数只控制训练后量化过程中显示的日志级别，默认显示info级别：

    - debug：输出debug/info/warning/error/event级别的日志信息。
    - info：输出info/warning/error/event级别的日志信息。
    - warning：输出warning/error/event级别的日志信息。
    - error：输出error/event级别的日志信息。
此外，训练后量化过程中的日志打屏以及日志落盘信息由AMCT_LOG_DUMP环境变量进行控制：- export AMCT_LOG_DUMP=1：日志打印到屏幕，并落盘到当前路径的amct_log_时间戳/amct_acl.log文件中，不保存量化因子record文件和graph文件。
- export AMCT_LOG_DUMP=2：将日志落盘到当前路径的amct_log_时间戳/amct_acl.log文件中，并保存量化因子record文件。
- export AMCT_LOG_DUMP=3：将日志落盘到当前路径的amct_log_时间戳/amct_acl.log文件中，并保存量化因子record文件和graph文件。


为防止日志文件、record文件、graph文件持续落盘导致磁盘被写满，请及时清理这些文件。
如果用户配置了ASCEND_WORK_PATH环境变量，则上述日志、量化因子record文件和graph文件存储到该环境变量指定的路径下，例如ASCEND_WORK_PATH=/home/test，则存储路径为：/home/test/amct_acl/amct_log_{pid}_时间戳。其中，amct_acl模型转换过程中会自动创建，{pid}为进程号。
上述日志文件、record文件、graph文件重新执行量化时会被覆盖，请用户自行进行保存。此外，由于生成的日志文件大小和所要量化模型层数有关，请用户确保ATC工具所在服务器有足够空间：

以量化resnet101模型为例，日志级别设置为INFO，日志文件大小为12KB左右，中间临时文件大小为260MB左右；日志级别设置为DEBUG，日志文件大小为390KB左右，中间临时文件大小为430MB左右。


参数默认值：无。


#### 推荐配置及收益

无


#### 示例

假设压缩优化功能配置文件名称为compression_optimize.cfg，文件内容配置示例如下：

```
enable_first_layer_quantization
: true
calibration
:
{
input_data_dir:
./data.bin,d2.bin
input_shape:
in:16,16;in1:16,16
config_file:
simple_config.cfg
infer_soc:
xxxxxx
infer_aicore_num:
10
infer_device_id: 0
infer_ip:
x.x.x.x
infer_port: 8000
log: info
}
```

将该文件上传到ATC工具所在服务器，例如上传到$HOME/module，使用示例如下：

```
--compression_optimize_conf=
$HOME/module
/compression_optimize.cfg
```


开启量化功能后，模型转换时提示“build_main build graph[infer_graph_info] failed”，请参见开启量化功能，模型转换时提示“build_main build graph[infer_graph_info] failed”。

#### 依赖约束

- 使用该参数的压缩特性时，需要单独安装AMCT（acl）软件包，该包的获取以及安装方法请参见《AMCT模型压缩工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/amct/atlasamct_16_0001.html)》中的“准备环境>获取软件包、上传软件包、安装工具”章节。
- 使用该参数中的enable_first_layer_quantization特性时，请确保使用的模型是由AMCT进行量化操作后输出的部署模型。
- 使用配置文件中的calibration训练后量化功能时，只支持带NPU设备的安装场景，详细介绍请参见《CANN 软件安装(https://www.hiascend.com/document/detail/zh/canncommercial/900/softwareinst/instg/instg_0000.html)》手册搭建对应产品环境。
- Atlas 200I/500 A2 推理产品Ascend RC场景，还需要在运行环境上安装NCS软件，并配置密钥证书，请参见《AOE调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/aoe/auxiliarydevtool_aoe_0001.html)》>AOE工具（Ascend RC）>环境准备。
- 使用配置文件中的calibration进行训练后量化功能时，ATC工具会调用AMCT量化接口执行相关操作，原理图如下：
  图1 训练后量化原理简图
