---
title: 训练后量化简易配置文件
description: "calibration_config_tf.proto文件参数说明如表1所示，该文件所在目录为：AMCT安装目录/amct_tensorflow/proto/calibration_config_tf.proto。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/amct/atlasamct_16_0244.html
sourcePath: /source/zh/canncommercial/900/devaids/amct/atlasamct_16_0244.html
indexId: 628b0f4cfb6711d77f85ec7a78cdd5b0562d3a4988b8a3dfa7367ac5788662fb65
---
# 训练后量化简易配置文件

calibration_config_tf.proto文件参数说明如表1所示，该文件所在目录为：AMCT安装目录/amct_tensorflow/proto/calibration_config_tf.proto。


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

| 消息 | 是否必填 | 类型 | 字段 | 说明 |
| --- | --- | --- | --- | --- |
| AMCTConfig | \- | \- | \- | AMCT训练后量化的简易配置。 |
| AMCTConfig | optional | uint32 | batch\_num | 量化使用的batch数量。 |
| AMCTConfig | optional | bool | activation\_offset | 数据量化是否带offset。全局配置参数。 true：带offset，数据量化时为非对称量化。 false：不带offset，数据量化时为对称量化。 |
| AMCTConfig | optional | bool | joint\_quant | 是否进行Eltwise联合量化，默认为false，表示关闭联合量化功能。 开启后对部分网络可能会存在性能提升但是精度下降的问题。 |
| AMCTConfig | repeated | string | skip\_layers | 不需要量化层的层名。 |
| AMCTConfig | repeated | string | skip\_layer\_types | 不需要量化的层类型。 |
| AMCTConfig | repeated | string | skip\_approximation\_layers | 不需要近似校准的层名。 该特性只适用于 Atlas 推理系列产品 。 |
| AMCTConfig | optional | FakequantPrecisionMode | fakequant\_precision\_mode | fakequant模型中quant自定义算子的scale\_d数值精度模式。 FORCE\_FP16\_QUANT：scale\_d参数的数值转换为float16精度，数值类型是float32。 空，即不配置，默认为空。scale\_d参数的数值保持float32精度。 |
| 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算子做tensor量化。 |
| OverrideLayerType | \- | \- | \- | 重置某层类型的量化配置。 |
| OverrideLayerType | required | string | layer\_type | 支持量化的层类型的名字。 |
| OverrideLayerType | required | CalibrationConfig | calibration\_config | 重置的量化配置。 |
| OverrideLayer | \- | \- | \- | 重置某层量化配置。 |
| OverrideLayer | required | string | layer\_name | 被重置层的层名。 |
| OverrideLayer | required | CalibrationConfig | calibration\_config | 重置的量化配置。 |
| TensorQuantize | \- | \- | \- | 需要进行训练后量化的输入Tensor配置。 |
| TensorQuantize | required | string | layer\_name | 需要对节点输入Tensor进行训练后量化的节点名称，当前仅支持对MaxPool/Add算子的输入Tensor进行量化。 |
| TensorQuantize | required | uint32 | input\_index | 需要对节点输入Tensor进行训练后量化的节点的输入索引。 |
| TensorQuantize | \- | FMRQuantize | ifmr\_quantize | 数据量化算法配置。 ifmr\_quantize：IFMR量化算法配置。默认为IFMR量化算法。 |
| TensorQuantize | \- | HFMGQuantize | hfmg\_quantize | 数据量化算法配置。 hfmg\_quantize：HFMG量化算法配置。 |
| CalibrationConfig | \- | \- | \- | Calibration量化的配置。 |
| CalibrationConfig | \- | ARQuantize | arq\_quantize | 权重量化算法配置。 arq\_quantize：ARQ量化算法配置。 |
| CalibrationConfig | \- | FMRQuantize | ifmr\_quantize | 数据量化算法配置。 ifmr\_quantize：IFMR量化算法配置。 |
| CalibrationConfig | \- | HFMGQuantize | hfmg\_quantize | 数据量化算法配置。 hfmg\_quantize：HFMG量化算法配置。 |
| CalibrationConfig | \- | DMQBalancer | dmq\_balancer | 均衡算法配置。 dmq\_balancer：DMQBalancer均衡算法配置。 |
| ARQuantize | \- | \- | \- | ARQ权重量化算法配置。算法介绍请参见ARQ。 该算法与NUQuantize算法不能同时配置，若同时配置，则以配置文件中最后配置的量化算法为准。 |
| ARQuantize | optional | bool | channel\_wise | 是否对每个channel采用不同的量化因子。 true：每个channel独立量化，量化因子不同。 false：所有channel同时量化，共享量化因子。 |
| ARQuantize | optional | uint32 | quant\_bits | 权重量化位宽。支持配置为INT6、INT7、INT8。 默认为INT8量化。 该字段配置为INT6、INT7仅支持Conv2d类型算子。 如果在common\_config中配置quant\_bits为INT6、INT7，则只对Conv2d算子生效，其他算子改为默认INT8。 |
| FMRQuantize | \- | \- | \- | FMR数据量化算法配置。算法介绍请参见IFMR数据量化算法。 该算法与HFMGQuantize算法不能同时配置，若同时配置，则以配置文件中最后配置的量化算法为准。 |
| 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量化。 |
| HFMGQuantize | \- | \- | \- | HFMG数据量化算法配置。算法介绍请参见HFMG数据量化算法。 该算法与FMRQuantize算法不能同时配置，若同时配置，则以配置文件中最后配置的量化算法为准。 |
| HFMGQuantize | optional | uint32 | num\_of\_bins | 直方图的bin（直方图中的一个最小单位直方图形）数目，支持的范围为{1024, 2048, 4096, 8192}。 默认值为4096。 |
| HFMGQuantize | 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 |
| HFMGQuantize | optional | CalibrationDataType | dst\_type | 量化数据类型，数据量化是采用INT8量化还是INT16量化，默认为INT8量化。当前版本仅支持INT8量化。 |
| DMQBalancer | \- | \- | \- | DMQ均衡算法配置。算法介绍请参见DMQ均衡算法。 |
| DMQBalancer | optional | float | migration\_strength | 迁移强度，代表将activation数据上的量化难度迁移至weight权重的程度。支持的范围为[0.2, 0.8]，默认值0.5，数据分布的离群值越大迁移强度应设置较小。 |


- 基于该文件构造的训练后量化简易配置文件quant.cfg样例如下所示：

```
# global quantize parameter
batch_num : 2
activation_offset : true
joint_quant : false
skip_layers : "
Opname
"
skip_layer_types:"
Optype
"
do_fusion: true
skip_fusion_layers : "
Opname
"
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 : "Conv2D"
calibration_config : {
arq_quantize : {
channel_wise : false
quant_bits : 6
}
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
}
```


  如果数据量化算法使用HFMG，则上述配置文件中加粗部分可以替换成如下参考参数信息，举例如下（如下配置信息只是样例，请根据实际情况进行修改）：

```
# global quantize parameter
activation_offset : true
batch_num : 1
common_config : {
hfmg_quantize : {
num_of_bins : 4096
asymmetric : false
}
}
```


- 基于该文件构造的量化数据均衡预处理简易配置文件dmq_balancer.cfg配置文件样例如下：

```
# global quantize parameter
activation_offset : true
batch_num : 1
common_config : {
dmq_balancer : {
migration_strength : 0.5
}
}
```


- 基于该文件构造的近似校准配置文件approximate.cfg样例如下：

```
batch_num: 1
skip_approximate_layers: "Softmax_1"
```
