---
title: 量化简易配置文件
description: "如果要自动控制量化过程，例如控制哪些层是否量化、控制使用什么量化算法，则可以通过本章节构造的cfg配置文件实现。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/atctool/atlasatc_16_0118.html
sourcePath: /source/zh/canncommercial/900/devaids/atctool/atlasatc_16_0118.html
indexId: 59401b3b0573bda4d31d7fd3e492e005b26938189a75356eda06e5792e673e2e67
---
# 量化简易配置文件

如果要自动控制量化过程，例如控制哪些层是否量化、控制使用什么量化算法，则可以通过本章节构造的cfg配置文件实现。


**表1 calibration_config.proto参数说明**

| 消息 | 是否必填 | 类型 | 字段 | 说明 |
| --- | --- | --- | --- | --- |
| AMCTConfig | \- | \- | \- | AMCT训练后量化的简易配置。 |
| AMCTConfig | optional | bool | activation\_offset | 数据量化是否带offset。全局配置参数。 带offset：（默认值）数据量化使用非对称量化。 不带offset：数据量化使用对称量化。 |
| AMCTConfig | optional | bool | joint\_quant | 是否进行Eltwise联合量化，默认为false，表示关闭联合量化功能。 开启后对部分网络可能会存在性能提升但是精度下降的问题。 |
| AMCTConfig | repeated | string | skip\_layers | 不需要量化层的层名。 |
| AMCTConfig | repeated | string | skip\_layer\_types | 不需要量化的层类型。 |
| AMCTConfig | optional | int32 | version | 简易配置文件的版本。 |
| AMCTConfig | optional | CalibrationConfig | common\_config | 通用的量化配置，全局量化配置参数。若某层未被override\_layer\_types或者override\_layer\_configs重写，则使用该配置。 参数优先级：override\_layer\_configs>override\_layer\_types>common\_config |
| AMCTConfig | repeated | OverrideLayerType | override\_layer\_types | 重写某一类型层的量化配置，即对哪些层进行差异化量化。 例如全局量化配置参数配置的量化因子搜索步长为0.01，可以通过该参数对部分层进行差异化量化，可以配置搜索步长为0.02。 参数优先级：override\_layer\_configs>override\_layer\_types>common\_config |
| AMCTConfig | repeated | OverrideLayer | override\_layer\_configs | 重写某一层的量化配置，即对哪些层进行差异化量化。 例如全局量化配置参数配置的量化因子搜索步长为0.01，可以通过该参数对部分层进行差异化量化，可以配置搜索步长为0.02。 参数优先级：override\_layer\_configs>override\_layer\_types>common\_config |
| AMCTConfig | optional | bool | do\_fusion | 是否开启BN融合功能，默认为true，表示开启该功能。 |
| AMCTConfig | repeated | string | skip\_fusion\_layers | 跳过BN融合的层，配置之后这些层不会进行BN融合。 |
| AMCTConfig | repeated | TensorQuantize | tensor\_quantize | 对网络模型中指定节点的输入Tensor进行训练后量化，来提高数据搬运时的推理性能。 当前仅支持对MaxPool/Add/Eltwise算子做tensor量化。 |
| OverrideLayerType | required | string | layer\_type | 支持量化的层类型的名称。 |
| OverrideLayerType | required | CalibrationConfig | calibration\_config | 重置的量化配置。 |
| OverrideLayer | \- | \- | \- | 重置某层量化配置。 |
| OverrideLayer | required | string | layer\_name | 被重置层的层名。 |
| OverrideLayer | required | CalibrationConfig | calibration\_config | 重置的量化配置。 |
| CalibrationConfig | \- | \- | \- | Calibration量化的配置。 |
| CalibrationConfig | \- | ARQuantize | arq\_quantize | 权重量化算法配置。 arq\_quantize：ARQ量化算法配置。 |
| CalibrationConfig | \- | FMRQuantize | ifmr\_quantize | 数据量化算法配置。 ifmr\_quantize：IFMR量化算法配置。 |
| CalibrationConfig | optional | bool | weight\_compress\_only | 是否只进行权重量化。仅权重量化场景，支持的数据类型必须为Float32，Float16。 true：只进行权重量化。 false：权重和数据都量化。默认为false。 |
| ARQuantize | \- | \- | \- | ARQ权重量化算法配置。 |
| ARQuantize | optional | bool | channel\_wise | 是否对每个channel采用不同的量化因子。 true：每个channel独立量化，量化因子不同。 false：所有channel同时量化，共享量化因子。 |
| ARQuantize | optional | bool | asymmetric | 是否对权重进行非对称量化。用于控制逐层量化算法的选择。 只在weight\_compress\_only为true时生效，若weight\_compress\_only设置为false，则asymmetric只能设置为false。 true：权重量化使用非对称量化（offset不为0）。 false：权重量化使用对称量化（offset为0），默认为false。 如果override\_layer\_configs、override\_layer\_types、common\_config配置项都配置该参数，则生效优先级为： override\_layer\_configs>override\_layer\_types>common\_config |
| ARQuantize | optional | uint32 | quant\_bits | 权重量化位宽。支持配置为INT6、INT7、INT8，默认为INT8量化。 该字段配置为INT6、INT7仅支持Conv2d类型算子。 如果在common\_config中配置quant\_bits为INT6、INT7，则只对Conv2d算子生效，其他算子改为默认INT8。 针对ONNX网络模型，如果在override\_layer\_types中指定Conv类算子quant\_bits为INT6、INT7，则只对weight dim为4场景生效 |
| FMRQuantize | \- | \- | \- | FMR数据量化算法配置。 |
| FMRQuantize | optional | float | search\_range\_start | 量化因子搜索范围左边界。 |
| FMRQuantize | optional | float | search\_range\_end | 量化因子搜索范围右边界。 |
| FMRQuantize | optional | float | search\_step | 量化因子搜索步长。 |
| FMRQuantize | optional | float | max\_percentile | 最大值搜索位置。 |
| FMRQuantize | optional | float | min\_percentile | 最小值搜索位置。 |
| FMRQuantize | optional | bool | asymmetric | 是否对数据进行非对称量化。用于控制逐层量化算法的选择。 true：非对称量化 false：对称量化 如果override\_layer\_configs、override\_layer\_types、common\_config配置项都配置该参数，或者配置了 activation\_offset参数，则生效优先级为： override\_layer\_configs>override\_layer\_types>common\_config>activation\_offset |
| FMRQuantize | optional | CalibrationDataType | dst\_type | 量化位宽，数据量化是采用INT8量化还是INT16量化，默认为INT8量化。当前版本仅支持INT8量化。 |
| TensorQuantize | \- | \- | \- | 需要进行训练后量化的输入Tensor配置。 |
| TensorQuantize | required | string | layer\_name | 需要对节点输入Tensor进行训练后量化的节点名称，当前仅支持对MaxPool算子的输入Tensor进行量化。 |
| TensorQuantize | required | uint32 | input\_index | 需要对节点输入Tensor进行训练后量化的节点的输入索引。 |
| TensorQuantize | \- | FMRQuantize | ifmr\_quantize | 数据量化算法配置。 ifmr\_quantize：IFMR量化算法配置。默认为IFMR量化算法。 |


- 基于该文件构造的均匀量化简易配置文件quant.cfg样例如下所示：Optype需要配置为基于Ascend IR定义的算子类型，详细对应关系请参见  支持量化的层及约束
。

```
# global quantize parameter
activation_offset : true
joint_quant : false
enable_auto_nuq : false
version : 1
skip_layers : "
Optype
"
skip_layer_types: "
Optype
"
do_fusion: true
skip_fusion_layers : "
Optype
"
common_config : {
arq_quantize : {
channel_wise : true
quant_bits : 7
}
ifmr_quantize : {
search_range_start : 0.7
search_range_end : 1.3
search_step : 0.01
max_percentile : 0.999999
min_percentile : 0.999999
asymmetric : true
}
}
override_layer_types : {
layer_type : "
Optype
"
calibration_config : {
arq_quantize : {
channel_wise : false
}
ifmr_quantize : {
search_range_start : 0.8
search_range_end : 1.2
search_step : 0.02
max_percentile : 0.999999
min_percentile : 0.999999
asymmetric : false
}
}
}
override_layer_configs : {
layer_name : "
Opname
"
calibration_config : {
arq_quantize : {
channel_wise : true
}
ifmr_quantize : {
search_range_start : 0.8
search_range_end : 1.2
search_step : 0.02
max_percentile : 0.999999
min_percentile : 0.999999
asymmetric : false
}
}
}
tensor_quantize {
layer_name: "
Opname
"
input_index: 0
ifmr_quantize: {
search_range_start : 0.7
search_range_end : 1.3
search_step : 0.01
min_percentile : 0.999999
asymmetric : false
}
}
tensor_quantize {
layer_name: "
Opname
"
input_index: 0
}
```


- 基于该文件构造的仅权重量化简易配置文件quant.cfg配置示例：

```
activation_offset : true
joint_quant : false
version : 1
do_fusion: true
common_config : {
weight_compress_only : true
arq_quantize : {
channel_wise : true
asymmetric : false
}
}
override_layer_types : {
layer_type : "
Optype
"
calibration_config : {
weight_compress_only : true
arq_quantize : {
channel_wise : true
asymmetric : true
quant_bits : 6
}
}
}
override_layer_configs : {
layer_name : "
Opname
"
calibration_config : {
weight_compress_only : true
arq_quantize : {
channel_wise : true
asymmetric : true
}
}
}
```
