Simplified PTQ Configuration File
Table 1 describes the fields in the calibration_config_caffe.proto file. Find the file in /amct_caffe/proto/calibration_config_caffe.proto under the AMCT installation directory.
Parameter |
Required/Optional |
Type |
Field |
Description |
|---|---|---|---|---|
AMCTConfig |
- |
- |
- |
Simplified PTQ configuration of AMCT. |
Optional |
UInt32 |
batch_num |
Batch number for quantization. |
|
Optional |
Boolean |
activation_offset |
Whether to quantize activations with offset. It is a global configuration parameter.
|
|
Optional |
Boolean |
joint_quant |
Eltwise joint quantization switch. Defaults to false, indicating that joint quantization is disabled. If true, the network performance may improve but the precision may be compromised. |
|
Repeated |
String |
skip_layers |
Layers to skip quantization. |
|
Repeated |
String |
skip_layer_types |
Types of layers to skip quantization. |
|
Optional |
CalibrationConfig |
common_config |
Common quantization configuration, which is a global parameter. Use this configuration if a layer is not overridden by override_layer_types or override_layer_configs. Parameter priority: override_layer_configs > override_layer_types > common_config |
|
Repeated |
OverrideLayerType |
override_layer_types |
Certain types of layers to override the quantization configurations. It is used to determine which layers are to be differentiatedly quantized. By using this parameter, you can perform differentiated quantization on some layers to change the quantization factor search step from 0.01 to 0.02. Parameter priority: override_layer_configs > override_layer_types > common_config |
|
Repeated |
OverrideLayer |
override_layer_configs |
Layer to override the quantization configurations. It is used to determine which layers are to be differentiatedly quantized. By using this parameter, you can perform differentiated quantization on some layers to change the quantization factor search step from 0.01 to 0.02. Parameter priority: override_layer_configs > override_layer_types > common_config |
|
Optional |
Boolean |
do_fusion |
BN fusion switch. Defaults to true, indicating BN fusion enabled. |
|
Repeated |
String |
skip_fusion_layers |
Layers to skip BN fusion. |
|
Optional |
CalibrationConfig |
conv_calibration_config |
Quantization configuration of the Convolution and Deconvolution layers that are not overridden. Deprecated, which is not recommended. |
|
Optional |
CalibrationConfig |
fc_calibration_config |
Quantization configuration of InnerProduct and AVE Pooling layers that are not overridden. Deprecated, which is not recommended. |
|
OverrideLayerType |
- |
- |
- |
Quantization configuration to override by layer type. |
Required |
String |
layer_type |
Quantizable layer type. |
|
Required |
CalibrationConfig |
calibration_config |
Quantization configuration to override. |
|
OverrideLayer |
- |
- |
- |
Quantization configuration to override by layer. |
Required |
String |
layer_name |
Layers to override. |
|
Required |
CalibrationConfig |
calibration_config |
Quantization configuration to override. |
|
CalibrationConfig |
- |
- |
- |
Calibration-based quantization configuration. |
- |
ARQuantize |
arq_quantize |
Weight quantization algorithm configuration. arq_quantize: ARQ algorithm configuration. |
|
- |
FMRQuantize |
ifmr_quantize |
Activation quantization algorithm configuration. ifmr_quantize: IFMR algorithm configuration. |
|
- |
HFMGQuantize |
hfmg_quantize |
Activation quantization algorithm configuration. hfmg_quantize: HFMG algorithm configuration. |
|
ARQuantize |
- |
- |
- |
ARQ algorithm configuration. For details about the algorithm, see ARQ. |
Optional |
Boolean |
channel_wise |
Whether to use different quantization factors for each channel. |
|
FMRQuantize |
- |
- |
- |
FMR algorithm configuration for activation quantization. For details about the algorithm, see IFMR Algorithm. This algorithm cannot be configured together with the HFMGQuantize algorithm. If they are configured together, the quantization algorithm configured last in the configuration file is used. |
Optional |
Float |
search_range_start |
Quantization factor search start. |
|
Optional |
Float |
search_range_end |
Quantization factor search end. |
|
Optional |
Float |
search_step |
Quantization factor search step. |
|
Optional |
Float |
max_percentile |
Upper bound for searching for the largest. |
|
Optional |
Float |
min_percentile |
Lower bound for searching for the smallest. |
|
Optional |
Boolean |
asymmetric |
Whether to perform symmetric quantization. It is used to select the layer-wise quantization algorithm.
If this parameter is set for override_layer_configs, override_layer_types, and common_config, or if the activation_offset parameter is set, the priority is as follows: override_layer_configs > override_layer_types > common_config > activation_offset |
|
HFMGQuantize |
- |
- |
- |
HFMG algorithm configuration for activation quantization. For details about the algorithm, see HFMG Algorithm. This algorithm cannot be configured together with the FMRQuantize algorithm. If they are configured together, the quantization algorithm configured last in the configuration file is used. |
Optional |
UInt32 |
num_of_bins |
Number of bins (the minimum unit in a histogram). Value range: {1024, 2048, 4096, 8192}. Defaults to 4096. |
|
Optional |
Boolean |
symmetric |
Whether to perform symmetric quantization. It is used to select the layer-wise quantization algorithm.
If this parameter is set for override_layer_configs, override_layer_types, and common_config, or if the activation_offset parameter is set, the priority is as follows: override_layer_configs > override_layer_types > common_config > activation_offset |
# 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
}
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
}
}
}
If the HFMG algorithm is used for activation quantization, replace the lines in bold in the preceding configuration file with the following ones. (The following configuration file is only an example. Modify it as required.)
# global quantize parameter
activation_offset : true
batch_num : 1
...
common_config : {
hfmg_quantize : {
num_of_bins : 4096
asymmetric : false
}
...
}