通过calibration_config_ascend_tf.proto生成简易配置文件
calibration_config_ascend_tf.proto文件参数说明如表1所示,该文件所在目录为:AMCT安装目录/amct_tensorflow/proto/calibration_config_ascend_tf.proto。
消息  | 
是否必填  | 
类型  | 
字段  | 
说明  | 
|---|---|---|---|---|
AMCTConfig  | 
-  | 
-  | 
-  | 
AMCT训练后量化的简易配置。  | 
optional  | 
bool  | 
activation_offset  | 
数据量化是否带offset。全局配置参数。 
  | 
|
repeated  | 
string  | 
skip_layers  | 
不需要量化层的层名。  | 
|
repeated  | 
string  | 
skip_layer_types  | 
不需要量化的层类型。  | 
|
optional  | 
CalibrationConfig  | 
common_config  | 
通用的量化配置,全局量化配置参数。若某层未被override_layer_types或者override_layer_configs重写,则使用该配置。 参数优先级:override_layer_configs>override_layer_types>common_config  | 
|
repeated  | 
OverrideLayerType  | 
override_layer_types  | 
重写某一类型层的量化配置,即对哪些层进行差异化量化。 例如全局量化配置参数配置的量化因子搜索步长为0.01,可以通过该参数对部分层进行差异化量化,可以配置搜索步长为0.02。 参数优先级:override_layer_configs>override_layer_types>common_config  | 
|
repeated  | 
OverrideLayer  | 
override_layer_configs  | 
重写某一层的量化配置,即对哪些层进行差异化量化。 例如全局量化配置参数配置的量化因子搜索步长为0.01,可以通过该参数对部分层进行差异化量化,可以配置搜索步长为0.02。 参数优先级:override_layer_configs>override_layer_types>common_config  | 
|
optional  | 
bool  | 
do_fusion  | 
是否开启BN融合功能,默认为true,表示开启该功能。  | 
|
repeated  | 
string  | 
skip_fusion_layers  | 
跳过BN融合的层,配置之后这些层不会进行BN融合。  | 
|
OverrideLayerType  | 
-  | 
-  | 
-  | 
重置某层类型的量化配置。  | 
required  | 
string  | 
layer_type  | 
支持量化的层类型的名字。  | 
|
required  | 
CalibrationConfig  | 
calibration_config  | 
重置的量化配置。  | 
|
OverrideLayer  | 
-  | 
-  | 
-  | 
重置某层量化配置。  | 
required  | 
string  | 
layer_name  | 
被重置层的层名。  | 
|
required  | 
CalibrationConfig  | 
calibration_config  | 
重置的量化配置。  | 
|
CalibrationConfig  | 
-  | 
-  | 
-  | 
Calibration量化的配置。  | 
-  | 
ARQuantize  | 
arq_quantize  | 
权重量化算法配置。 arq_quantize:ARQ量化算法配置。  | 
|
-  | 
FMRQuantize  | 
ifmr_quantize  | 
数据量化算法配置。 ifmr_quantize:IFMR量化算法配置,当前仅支持IFMR算法。  | 
|
ARQuantize  | 
-  | 
-  | 
-  | 
ARQ量化算法配置。算法介绍请参见ARQ权重量化算法。  | 
optional  | 
bool  | 
channel_wise  | 
是否对每个channel采用不同的量化因子。  | 
|
FMRQuantize  | 
-  | 
-  | 
-  | 
FMR量化算法配置。算法介绍请参见IFMR数据量化算法。  | 
optional  | 
float  | 
search_range_start  | 
量化因子搜索范围左边界。  | 
|
optional  | 
float  | 
search_range_end  | 
量化因子搜索范围右边界。  | 
|
optional  | 
float  | 
search_step  | 
量化因子搜索步长。  | 
|
optional  | 
float  | 
max_percentile  | 
最大值搜索位置。  | 
|
optional  | 
float  | 
min_percentile  | 
最小值搜索位置。  | 
|
optional  | 
bool  | 
asymmetric  | 
是否进行对称量化。用于控制逐层量化算法的选择。 
 如果override_layer_configs、override_layer_types、common_config配置项都配置该参数,或者配置了 activation_offset参数,则生效优先级为: override_layer_configs>override_layer_types>common_config>activation_offset  | 
基于该文件构造的简易配置文件quant.cfg样例如下所示:
# global quantize parameter
activation_offset : true
skip_layers : "Opname"
skip_layer_types:"Optype"
do_fusion: true
skip_fusion_layers : "Opname"
common_config : {
    arq_quantize : {
        channel_wise : true
    }
    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 : true
        }
    }
}
 
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 : true
        }
    }
}