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

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

该文件可以配置出量化感知训练简易配置文件、稀疏简易配置文件，组合压缩简易配置文件，用户根据场景进行配置。


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

| 消息 | 是否必填 | 类型 | 字段 | 说明 |
| --- | --- | --- | --- | --- |
| AMCTRetrainConfig | \- | \- | \- | AMCT量化感知训练的简易配置。 |
| AMCTRetrainConfig | repeated | string | skip\_layers | 按层名跳过哪些层不进行压缩。全局参数，方便后续拓展其他特性场景下可同时跳过的层，比如下述拓展的quant\_skip\_layers参数、regular\_prune\_skip\_layers参数，则通过skip\_layers参数可以同时配置两个特性场景下需要跳过的层。而无需在quant\_skip\_layers和regular\_prune\_skip\_layers参数中分别配置。 若同时配置了skip\_layers和quant\_skip\_layers参数，或skip\_layers和regular\_prune\_skip\_layers参数，则取两者并集。 |
| AMCTRetrainConfig | repeated | string | skip\_layer\_types | 按层类型跳过哪些层不进行压缩。全局参数，方便后续拓展其他特性场景下可同时跳过的层，比如下述拓展的quant\_skip\_types参数、regular\_prune\_skip\_types参数，则通过skip\_layer\_types参数可以同时配置两个特性场景下需要跳过的层。而无需在quant\_skip\_types和regular\_prune\_skip\_types参数中分别配置。 若同时配置了skip\_layer\_types和quant\_skip\_types参数，或skip\_layer\_types和regular\_prune\_skip\_types参数，则取两者并集。 |
| AMCTRetrainConfig | repeated | RetrainOverrideLayer | override\_layer\_configs | 按层名重写哪些层，即对哪些层进行差异化压缩。 例如全局量化配置参数配置的量化数据类型为INT8，可以通过该参数对部分层进行差异化量化，可以配置为INT4量化。当前版本仅支持INT8量化。 参数优先级为： 量化场景：override\_layer\_configs>override\_layer\_types>retrain\_data\_quant\_config/retrain\_weight\_quant\_config 稀疏场景：override\_layer\_configs>override\_layer\_types>prune\_config |
| AMCTRetrainConfig | repeated | RetrainOverrideLayerType | override\_layer\_types | 按层类型重写哪些层，即对哪些层进行差异化压缩。 例如全局量化配置参数配置的量化数据类型为INT8，可以通过该参数对部分层进行差异化量化，可以配置为INT4量化。 当前版本仅支持INT8量化。 参数优先级为： 量化场景：override\_layer\_configs>override\_layer\_types>retrain\_data\_quant\_config/retrain\_weight\_quant\_config 稀疏场景：override\_layer\_configs>override\_layer\_types>prune\_config |
| AMCTRetrainConfig | optional | FakequantPrecisionMode | fakequant\_precision\_mode | fakequant模型中quant自定义算子的scale\_d数值精度模式。 FORCE\_FP16\_QUANT：scale\_d参数的数值转换为float16精度，数值类型是float32。 空，即不配置，默认为空。scale\_d参数的数值保持float32精度。 |
| AMCTRetrainConfig | optional | uint32 | batch\_num | 量化使用的batch数量。 |
| AMCTRetrainConfig | required | RetrainDataQuantConfig | retrain\_data\_quant\_config | 量化感知训练数据量化配置参数。全局量化配置参数。 参数优先级为：override\_layer\_configs>override\_layer\_types>retrain\_data\_quant\_config/retrain\_weight\_quant\_config |
| AMCTRetrainConfig | required | RetrainWeightQuantConfig | retrain\_weight\_quant\_config | 量化感知训练权重量化配置参数。全局量化配置参数。 参数优先级为：override\_layer\_configs>override\_layer\_types>retrain\_data\_quant\_config/retrain\_weight\_quant\_config |
| AMCTRetrainConfig | repeated | string | quant\_skip\_layers | 按层名跳过不需要量化的层。量化场景下使用的参数。 若同时配置了skip\_layers和quant\_skip\_layers参数，则取两者并集。 |
| AMCTRetrainConfig | repeated | string | quant\_skip\_types | 按层类型跳过不需要量化的层。量化场景下使用的参数。 若同时配置了skip\_layer\_types和quant\_skip\_types参数，则取两者并集。 |
| AMCTRetrainConfig | optional | PruneConfig | prune\_config | 稀疏配置。全局稀疏配置参数。 参数优先级为：override\_layer\_configs>override\_layer\_types>prune\_config |
| AMCTRetrainConfig | repeated | string | regular\_prune\_skip\_layers | 按层名跳过不需要稀疏的层。稀疏场景下使用的参数。 若同时配置了skip\_layer和regular\_prune\_skip\_layers参数，则取两者并集。 |
| AMCTRetrainConfig | repeated | string | regular\_prune\_skip\_types | 按层类型跳过不需要稀疏的层。稀疏场景下使用的参数。 若同时配置了skip\_layer\_types和regular\_prune\_skip\_types参数，则取两者并集。 |
| RetrainDataQuantConfig | \- | \- | \- | 量化感知训练数据量化配置。 |
| RetrainDataQuantConfig | \- | ActULQquantize | ulq\_quantize | 数据量化的算法，目前仅支持ULQ。 |
| ActULQquantize | \- | \- | \- | ULQ数据量化算法参数。算法介绍请参见ULQ数据量化算法。 |
| ActULQquantize | optional | DataType | dst\_type | 数据量化类型，支持如下配置： INT4 INT8，默认为INT8。当前版本仅支持INT8量化。 INT16 |
| ActULQquantize | optional | ClipMaxMin | clip\_max\_min | 初始化的上下限值，如果不配置，默认用ifmr进行初始化。 |
| ActULQquantize | optional | bool | fixed\_min | 是否下限不学习且固定为0。默认ReLu后为true，其他为false。 |
| ClipMaxMin | \- | \- | \- | 初始上下限。 |
| ClipMaxMin | required | float | clip\_max | 初始上限值。 |
| ClipMaxMin | required | float | clip\_min | 初始下限值。 |
| RetrainWeightQuantConfig | \- | \- | \- | 量化感知训练权重量化配置。 |
| RetrainWeightQuantConfig | \- | ARQRetrain | arq\_retrain | ARQ权重量化算法。 |
| RetrainWeightQuantConfig | \- | WtsULQRetrain | ulq\_retrain | ULQ权重量化算法。 |
| ARQRetrain | \- | \- | \- | ARQ权重量化算法参数。算法介绍请参见ARQ。 |
| ARQRetrain | optional | DataType | dst\_type | 量化数据类型，用以选择INT8量化还是INT4量化，默认为INT8量化。当前版本仅支持INT8量化。 |
| ARQRetrain | optional | bool | channel\_wise | 是否做channel wise的arq。 |
| WtsULQRetrain | \- | \- | \- | ULQ权重量化算法参数。算法介绍请参见ULQ数据量化算法。 |
| WtsULQRetrain | optional | DataType | dst\_type | 量化数据类型，用以选择INT8量化还是INT4量化，默认为INT8量化。当前版本仅支持INT8量化。 |
| WtsULQRetrain | optional | bool | channel\_wise | 是否做channel wise的ulq。 |
| RetrainOverrideLayer | \- | \- | \- | 重写的层配置。 |
| RetrainOverrideLayer | required | string | layer\_name | 层名。 |
| RetrainOverrideLayer | required | RetrainDataQuantConfig | retrain\_data\_quant\_config | 重写的数据层量化参数。 |
| RetrainOverrideLayer | required | RetrainWeightQuantConfig | retrain\_weight\_quant\_config | 重写的权重层量化参数。 |
| RetrainOverrideLayer | optional | PruneConfig | prune\_config | 重写的稀疏配置参数。 |
| RetrainOverrideLayerType | \- | \- | \- | 重写的层类型配置。 |
| RetrainOverrideLayerType | required | string | layer\_type | 层类型。 |
| RetrainOverrideLayerType | required | RetrainDataQuantConfig | retrain\_data\_quant\_config | 重写的数据层量化参数。 |
| RetrainOverrideLayerType | required | RetrainWeightQuantConfig | retrain\_weight\_quant\_config | 重写的权重层量化参数。 |
| RetrainOverrideLayerType | optional | PruneConfig | prune\_config | 重写的稀疏配置参数。 |
| PruneConfig | \- | \- | \- | 稀疏的配置。 |
| PruneConfig | \- | FilterPruner | filter\_pruner | filter（输出维度通道）稀疏的配置。 |
| PruneConfig | \- | NOutOfMPruner | n\_out\_of\_m\_pruner | 4选2稀疏的配置。 由于硬件约束， Atlas 推理系列产品 、 Atlas 训练系列产品 、Atlas 350 加速卡不支持4选2结构化稀疏特性。 |
| FilterPruner | \- | \- | \- | filter稀疏的配置。 |
| FilterPruner | \- | BalancedL2NormFilterPruner | balanced\_l2\_norm\_filter\_prune | BalancedL2Norm算法，算法介绍请参见手工通道稀疏算法。 |
| BalancedL2NormFilterPruner | \- | \- | \- | BalancedL2Norm算法的配置。 |
| BalancedL2NormFilterPruner | required | float | prune\_ratio | 稀疏率，被稀疏的filter数量与filter总数量的比值。推荐配置为0.2，即20%的输出通道将被裁剪。 |
| BalancedL2NormFilterPruner | optional | bool | ascend\_optimized | 是否做昇腾亲和优化，如果稀疏后的模型要部署在AI处理器上，建议此项配置为true。 |
| NOutOfMPruner | \- | \- | \- | 4选2稀疏的配置。 |
| NOutOfMPruner | \- | L1SelectivePruner | l1\_selective\_prune | L1SelectivePrune算法，算法介绍请参见4选2结构化稀疏算法。 |
| L1SelectivePruner | \- | \- | \- | L1SelectivePrune算法的配置。 |
| L1SelectivePruner | optional | NOutOfMType | n\_out\_of\_m\_type | 目前仅支持M4N2，即每4个连续权重中保留2个权重。 |
| L1SelectivePruner | optional | uint32 | update\_freq | 更新4选2稀疏的间隔。update\_freq=0时仅在第一个batch更新4选2稀疏的选择，update\_freq=2时每2个batch更新一次，以此类推。默认为0。 |


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

```
# global quantize parameter
retrain_data_quant_config: {
ulq_quantize: {
clip_max_min: {
clip_max: 6.0
clip_min: -6.0
}
dst_type: INT8
}
}
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: true
dst_type: INT8
}
}
skip_layers: "
conv_1
"
override_layer_types : {
layer_type: "
Optype
"
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: false
dst_type: INT8
}
}
}
override_layer_configs : {
layer_name: "
Opname
"
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: false
dst_type: INT8
}
}
}
```


- 基于该文件构造的通道稀疏简易配置文件prune.cfg样例如下所示：

```
# global prune parameter
prune_config{
filter_pruner {
balanced_l2_norm_filter_prune {
prune_ratio: 0.3
ascend_optimized: True
}
}
}
# skip layers
regular_prune_skip_layers: "
Opname
"
regular_prune_skip_layers: "
Opname
"
# overide specific layers
override_layer_configs: {
layer_name: "
Opname
"
prune_config : {
filter_pruner: {
balanced_l2_norm_filter_prune: {
prune_ratio: 0.5
ascend_optimized: True
}
}
}
}
```


- 基于该文件构造的4选2结构化稀疏简易配置文件selective_prune.cfg样例如下所示：

```
# global prune parameter
prune_config{
n_out_of_m_pruner {
l1_selective_prune {
n_out_of_m_type: M4N2
update_freq: 0
}
}
}
# skip layers
regular_prune_skip_layers: "
Opname
"
regular_prune_skip_layers: "
Opname
"
# overide specific layers
override_layer_configs: {
layer_name: "
Opname
"
prune_config : {
n_out_of_m_pruner: {
l1_selective_prune: {
n_out_of_m_type: M4N2
update_freq: 1
}
}
}
}
```


- 基于该文件构造的组合压缩（通道稀疏+INT8量化）简易配置文件compressed1.cfg样例如下所示：

```
prune_config : {
filter_pruner : {
balanced_l2_norm_filter_prune : {
prune_ratio : 0.3
ascend_optimized: True
}
}
}
# skip_layers: "skip_layers_name_0"
skip_layer_types: "
Optype
"
quant_skip_layers: "
Opname
"
quant_skip_types: "
Optype
"
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: true
dst_type: INT8
}
}
override_layer_types : {
layer_type: "
Optype
"
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: false
dst_type: INT8
}
}
retrain_data_quant_config : {
ulq_quantize : {
clip_max_min : {
clip_max : 6.0
clip_min : -6.0
}
}
}
prune_config : {
filter_pruner : {
balanced_l2_norm_filter_prune : {
prune_ratio : 0.5
ascend_optimized: True
}
}
}
}
```


- 基于该文件构造的组合压缩（4选2结构化稀疏+INT8量化）简易配置文件compressed2.cfg样例如下所示：

```
prune_config{
n_out_of_m_pruner {
l1_selective_prune {
n_out_of_m_type: M4N2
update_freq: 0
}
}
}
# skip_layers: "skip_layers_name_0"
skip_layer_types: "
Optype
"
quant_skip_layers: "
Opname
"
quant_skip_types: "
Optype
"
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: true
dst_type: INT8
}
}
override_layer_types : {
layer_type: "
Optype
"
retrain_weight_quant_config: {
arq_retrain: {
channel_wise: false
dst_type: INT8
}
}
retrain_data_quant_config : {
ulq_quantize : {
clip_max_min : {
clip_max : 6.0
clip_min : -6.0
}
}
}
prune_config{
n_out_of_m_pruner {
l1_selective_prune {
n_out_of_m_type: M4N2
update_freq: 1
}
}
}
}
```
