量化感知训练简易配置文件
retrain_config_caffe.proto文件参数说明如表1所示,该文件所在目录为:AMCT安装目录/amct_caffe/proto/retrain_config_caffe.proto。
消息  | 
是否必填  | 
类型  | 
字段  | 
说明  | 
|---|---|---|---|---|
AMCTRetrainConfig  | 
-  | 
-  | 
-  | 
AMCT量化感知训练的简易配置。  | 
repeated  | 
string  | 
skip_layers  | 
按层名跳过哪些层。全局参数,方便后续拓展其他特性场景下可同时跳过的层,比如下述拓展的quant_skip_layers参数,若后续又拓展了xxx_skip_layers参数,则通过skip_layers参数可以同时配置两个特性场景下需要跳过的层。而无需在quant_skip_layers和xxx_skip_layers参数中分别配置。 若同时配置了skip_layers和quant_skip_layers参数,则取两者并集。  | 
|
repeated  | 
string  | 
skip_layer_types  | 
按层类型跳过哪些层(当前版本不支持)。全局参数,方便后续拓展其他特性场景下可同时跳过的层,比如下述拓展的quant_skip_types参数,若后续又拓展了xxx_skip_types参数,则通过skip_layer_types参数可以同时配置两个特性场景下需要跳过的层。而无需在quant_skip_types和xxx_skip_types参数中分别配置。 若同时配置了skip_layer_types和quant_skip_types参数,则取两者并集。  | 
|
repeated  | 
RetrainOverrideLayer  | 
override_layer_configs  | 
按层名重写哪些层,即对哪些层进行差异化压缩。 例如全局量化配置参数配置的初始上下限值为[-0.6,0.6],可以通过该参数对部分层进行差异化量化,可以配置为[-0.3,0.3]。 参数优先级为: 
  | 
|
repeated  | 
RetrainOverrideLayerType  | 
override_layer_types  | 
按层类型重写哪些层,即对哪些层进行差异化压缩。 例如全局量化配置参数配置的初始上下限值为[-0.6,0.6],可以通过该参数对部分层进行差异化量化,可以配置为[-0.3,0.3]。 参数优先级为: 
  | 
|
optional  | 
uint32  | 
batch_num  | 
量化使用的batch数量。  | 
|
required  | 
RetrainDataQuantConfig  | 
retrain_data_quant_config  | 
量化感知训练数据量化配置参数。全局量化配置参数。 参数优先级为:override_layer_configs>override_layer_types>retrain_data_quant_config/retrain_weight_quant_config  | 
|
required  | 
RetrainWeightQuantConfig  | 
retrain_weight_quant_config  | 
量化感知训练权重量化配置参数。全局量化配置参数。 参数优先级为:override_layer_configs>override_layer_types>retrain_data_quant_config/retrain_weight_quant_config  | 
|
repeated  | 
string  | 
quant_skip_layers  | 
按层名跳过不需要量化的层。量化场景下使用的参数。 若同时配置了skip_layers和quant_skip_layers参数,则取两者并集。  | 
|
repeated  | 
string  | 
quant_skip_types  | 
按层类型跳过不需要量化的层(当前版本不支持)。量化场景下使用的参数。 若同时配置了skip_layer_types和quant_skip_types参数,则取两者并集。  | 
|
RetrainDataQuantConfig  | 
-  | 
-  | 
-  | 
量化感知训练数据量化参数配置。  | 
-  | 
ULQuantize  | 
ulq_quantize  | 
数据量化算法,目前仅支持ulq。  | 
|
ULQuantize  | 
-  | 
-  | 
-  | 
ULQ量化算法配置。算法介绍请参见ULQ数据量化算法。  | 
optional  | 
ClipMaxMin  | 
clip_max_min  | 
初始化的上下限值,如果不配置,默认用ifmr进行初始化。  | 
|
optional  | 
bool  | 
fixed_min  | 
是否下限不学习且固定为0。默认ReLu后为true,其他为false。  | 
|
ClipMaxMin  | 
-  | 
-  | 
-  | 
初始上下限。  | 
required  | 
float  | 
clip_max  | 
初始上限值。  | 
|
required  | 
float  | 
clip_min  | 
初始下限值。  | 
|
RetrainWeightQuantConfig  | 
-  | 
-  | 
-  | 
量化感知训练权重量化参数配置。  | 
-  | 
ARQRetrain  | 
arq_retrain  | 
权重量化算法,目前仅支持arq。  | 
|
ARQRetrain  | 
-  | 
-  | 
-  | 
ARQ量化算法配置。算法介绍请参见ARQ权重量化算法。  | 
required  | 
bool  | 
channel_wise  | 
是否做channel wise的arq。  | 
|
RetrainOverrideLayer  | 
-  | 
-  | 
-  | 
重写的层配置。  | 
required  | 
string  | 
layer_name  | 
层名。  | 
|
required  | 
RetrainDataQuantConfig  | 
retrain_data_quant_config  | 
重写的数据层量化参数。  | 
|
required  | 
RetrainWeightQuantConfig  | 
retrain_weight_quant_config  | 
重写的权重层量化参数。  | 
|
RetrainOverrideLayerType  | 
-  | 
-  | 
-  | 
重写的层类型配置。  | 
required  | 
string  | 
layer_type  | 
层类型。  | 
|
required  | 
RetrainDataQuantConfig  | 
retrain_data_quant_config  | 
重写的数据层量化参数。  | 
|
required  | 
RetrainWeightQuantConfig  | 
retrain_weight_quant_config  | 
重写的权重层量化参数。  | 
基于该文件构造的量化感知训练简易配置文件quant.cfg样例如下所示:
# global quantize parameter
 retrain_data_quant_config: {
     ulq_quantize: {
         clip_max_min: {
             clip_max: 6.0
             clip_min: -6.0
         }
     }
 }
 retrain_weight_quant_config: {
     arq_retrain: {
         channel_wise: true
     }
 }
 skip_layers: "conv_1"
 override_layer_types : {
     layer_type: "InnerProduct"
     retrain_weight_quant_config: {
         arq_retrain: {
            channel_wise: false
         }
     }
 }
 override_layer_configs : {   
     layer_name: "fc_5"   
     retrain_weight_quant_config: {        
         arq_retrain: {   
            channel_wise: false
         }    
      }
}