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.

Table 1 calibration_config_caffe.proto

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.

  • true: with offset. Activations are asymmetrically quantized.
  • false: without offset. Activations are symmetrically quantized.

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

NuqConfig

nuq_config

NUQ configuration.

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.

NuqConfig

-

-

-

NUQ configuration.

Required

String

mapping_file

JSON file of the quantized model, which is obtained by converting the deployable model after uniform quantization into an offline model with ATC.

Optional

NUQuantize

nuq_quantize

NUQ configuration.

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. You are advised not to configure nuq_quantize in this configuration, as this may cause accuracy drop.

-

ARQuantize

arq_quantize

Weight quantization algorithm configuration.

arq_quantize: ARQ algorithm configuration.

-

NUQuantize

nuq_quantize

Weight quantization algorithm configuration.

nuq_quantize: NUQ 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 Algorithm.

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.

  • true: asymmetric quantization
  • false: symmetric quantization

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.

  • true: asymmetric quantization
  • false: symmetric quantization

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

NUQuantize

-

-

-

NUQ algorithm configuration. For details about the algorithm, see NUQ Algorithm.

Optional

UInt32

num_steps

Number of steps for NUQ.

Optional

UInt32

num_of_iteration

Number of iterations for NUQ optimization.

  • The following is an example of the simplified configuration file (quant.cfg) for uniform quantization:
    # 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
        }
    ...
    }
  • The following is an example of the simplified configuration file (quant.cfg) for NUQ:
    # global quantize parameter
    activation_offset : true
    joint_quant : false
    batch_num : 2
    nuq_config {
        mapping_file : "./nuq_files/resnet50_om_model.json"
        nuq_quantize : {
            num_steps : 32
            num_of_iteration : 0
        }
    }
    
    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 : false
        }
    }
    
    override_layer_types : {
        layer_type : "Optype"
        calibration_config : {
            arq_quantize : {
                channel_wise : false
            }
            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 : false
            }
        }
    }

    If the HFMG algorithm is used for activation quantization, replace the lines in bold and italics 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
        }
    ...
    }