下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

训练后量化简易配置文件

calibration_config_onnx.proto文件参数说明如表1所示,该文件所在目录为:AMCT安装目录/amct_onnx/proto/calibration_config_onnx.proto。

表1 calibration_config_onnx.proto参数说明

消息

是否必填

类型

字段

说明

AMCTConfig

-

-

-

AMCT训练后量化的简易配置。

optional

uint32

batch_num

量化使用的batch数量。

optional

bool

activation_offset

数据量化是否带offset。全局配置参数。

  • true:带offset,数据量化时为非对称量化。
  • false:不带offset,数据量化时为对称量化。

repeated

string

skip_layers

不需要量化层的层名。

repeated

string

skip_layer_types

不需要量化的层类型。

optional

NuqConfig

nuq_config

非均匀量化配置。

optional

bool

joint_quant

是否进行Eltwise联合量化,默认为false,表示关闭联合量化功能。

开启后对部分网络可能会存在性能提升但是精度下降的问题。

optional

FakequantPrecisionMode

fakequant_precision_mode

fakequant模型中quant自定义算子的scale_d数值精度模式。

  • FORCE_FP16_QUANT:scale_d参数的数值精度转换为fp16。
  • 空,即不配置,默认为空。scale_d参数的数值精度保持fp32。

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融合。

repeated

TensorQuantize

tensor_quantize

对网络模型中指定节点的输入Tensor进行训练后量化,来提高数据搬运时的推理性能。

当前仅支持对MaxPool/Add算子做tensor量化。

NuqConfig

-

-

-

非均匀量化配置。

required

string

mapping_file

均匀量化后的deploy模型通过ATC工具转换得到om模型,然后通过ATC工具转换得到json文件,即量化后模型的融合json文件。

optional

NUQuantize

nuq_quantize

非均匀量化的参数。

OverrideLayerType

-

-

-

重置某层类型的量化配置。

required

string

layer_type

支持量化的层类型的名字。

required

CalibrationConfig

calibration_config

重置的量化配置。

OverrideLayer

-

-

-

重置某层量化配置。

required

string

layer_name

被重置层的层名。

required

CalibrationConfig

calibration_config

重置的量化配置。

TensorQuantize

-

-

-

需要进行训练后量化的输入Tensor配置。

required

string

layer_name

需要对节点输入Tensor进行训练后量化的节点名称, 当前仅支持对MaxPool/Add算子的输入Tensor进行量化。

required

uint32

input_index

需要对节点输入Tensor进行训练后量化的节点的输入索引。

-

FMRQuantize

ifmr_quantize

数据量化算法配置。

ifmr_quantize:IFMR量化算法配置。默认为IFMR量化算法。

-

HFMGQuantize

hfmg_quantize

数据量化算法配置。

hfmg_quantize:HFMG量化算法配置。

CalibrationConfig

-

-

-

Calibration量化的配置。

-

ARQuantize

arq_quantize

权重量化算法配置。

arq_quantize:ARQ量化算法配置。

-

NUQuantize

nuq_quantize

权重量化算法配置。

nuq_quantize:非均匀量化算法配置。

-

FMRQuantize

ifmr_quantize

数据量化算法配置。

ifmr_quantize:IFMR量化算法配置。

-

HFMGQuantize

hfmg_quantize

数据量化算法配置。

hfmg_quantize:HFMG量化算法配置。

-

DMQBalancer

dmq_balancer

均衡量化算法配置。

dmq_balancer:DMQBalancer均衡算法配置。

ARQuantize

-

-

-

ARQ量化算法配置。算法介绍请参见ARQ权重量化算法

optional

bool

channel_wise

是否对每个channel采用不同的量化因子。

  • true:每个channel独立量化,量化因子不同。
  • false:所有channel同时量化,共享量化因子。

optional

uint32

quant_bits

权重量化位宽。支持配置为INT6、INT7、INT8。

默认为INT8量化。

该字段配置为INT6、INT7仅支持Conv2d(Kernel shape为4的Conv算子)类型算子。

如果在common_config中配置quant_bits为INT6、INT7,则只对Conv2d算子生效,其他算子改为默认INT8;如果在override_layer_types中指定Conv类算子quant_bits为INT6、INT7,则只对weight dim为4场景生效。

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

是否进行对称量化。用于控制逐层量化算法的选择。

  • true:非对称量化
  • false:对称量化

如果override_layer_configs、override_layer_types、common_config配置项都配置该参数,或者配置了

activation_offset参数,则生效优先级为:

override_layer_configs>override_layer_types>common_config>activation_offset

optional

CalibrationDataType

dst_type

量化位宽,数据量化是采用INT8量化还是INT16量化,默认为INT8量化。当前版本仅支持INT8量化。

HFMGQuantize

-

-

-

HFMG数据量化算法配置。算法介绍请参见HFMG数据量化算法

该参数与FMRQuantize参数不能同时配置。

optional

uint32

num_of_bins

直方图的bin(直方图中的一个最小单位直方图形)数目,支持的范围为{1024, 2048, 4096, 8192}。

默认值为4096。

optional

bool

asymmetric

是否进行对称量化。用于控制逐层量化算法的选择。

  • true:非对称量化
  • false:对称量化

如果override_layer_configs、override_layer_types、common_config配置项都配置该参数,或者配置了

activation_offset参数,则生效优先级为:

override_layer_configs>override_layer_types>common_config>activation_offset

optional

CalibrationDataType

dst_type

量化位宽,数据量化是采用INT8量化还是INT16量化,默认为INT8量化。当前版本仅支持INT8量化。

NUQuantize

-

-

-

非均匀量化算法配置。算法介绍请参见NUQ权重量化算法

optional

uint32

num_steps

非均匀量化的台阶数。

optional

uint32

num_of_iteration

非均匀量化优化的迭代次数。

DMQBalancer

-

-

-

DMQ均衡算法配置。算法介绍请参见DMQ均衡算法

optional

float

migration_strength

迁移强度,代表将activation数据上的量化难度迁移至weight权重的程度。支持的范围为[0.2, 0.8],默认值0.5,数据分布的离群值越大迁移强度应设置较小。

  • 基于该文件构造的均匀量化简易配置文件quant.cfg样例如下所示:
    # 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 : "Optype"
    common_config : {
        arq_quantize : {
            channel_wise : true
            quant_bits : 7
        }
        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 : "Conv2d"
        calibration_config : {
            arq_quantize : {
                channel_wise : false        
                quant_bits : 6
    
            }
            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
            }
        }
    }
    tensor_quantize {
        layer_name: "Opname"
        input_index: 0
        ifmr_quantize: {
            search_range_start : 0.7
            search_range_end : 1.3
            search_step : 0.01
            min_percentile : 0.999999
           asymmetric : false
           }
    }
    tensor_quantize {
        layer_name: "Opname"
        input_index: 0
    }

    如果数据量化算法使用HFMG,则上述配置文件中加粗部分可以替换成如下参考参数信息,举例如下(如下配置信息只是样例,请根据实际情况进行修改):

    # global quantize parameter
    activation_offset : true
    batch_num : 1
    ...
    common_config : {
        hfmg_quantize : {
            num_of_bins : 4096
             asymmetric : false
        }
    ...
    }
  • 基于该文件生成的非均匀量化简易配置文件quant.cfg样例如下所示:
    # global quantize parameter
    activation_offset : true
    joint_quant : false
    batch_num : 2
    nuq_config {
        mapping_file : "./nuq_files/resnet101_quantized.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 : true
        }
    }
    
    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
            }
        }
    }
    tensor_quantize {
        layer_name: "Opname"
        input_index: 0
        ifmr_quantize: {
            search_range_start : 0.7
            search_range_end : 1.3
            search_step : 0.01
            min_percentile : 0.999999
           asymmetric : false
           }
    }
    tensor_quantize {
        layer_name: "Opname"
        input_index: 0
    }

    如果数据量化算法使用HFMG,则上述配置文件中加粗斜体部分可以替换成如下参考参数信息,举例如下(如下配置信息只是样例,请根据实际情况进行修改):

    # global quantize parameter
    activation_offset : true
    batch_num : 1
    ...
    common_config : {
        hfmg_quantize : {
            num_of_bins : 4096
             asymmetric : false
        }
    ...
    }
  • 基于该文件构造的量化数据均衡预处理简易配置文件dmq_balancer.cfg样例如下所示:
    # 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
        }
         dmq_balancer : {
            migration_strength : 0.5
        }
    }
     
    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
            }
           dmq_balancer : {
               migration_strength : 0.5
           }
        }
    }
     
    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
            }
           dmq_balancer : {
               migration_strength : 0.5
           }
        }
    }
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词