配置文件及参数说明

量化配置文件

如果通过create_quant_retrain_config接口生成的config.json量化感知训练配置文件,推理精度不满足要求,则需要参见该章节不断调整config.json文件中的内容,直至精度满足要求,该文件部分内容样例如下(用户修改json文件时,请确保层名唯一):
{
    "version":1,
    "batch_num":1,
    "conv1":{
        "retrain_enable":true,
        "retrain_data_config":{
            "algo":"ulq_quantize",
            "dst_type":"INT8"
        },
        "retrain_weight_config":{
            "algo":"arq_retrain",
            "channel_wise":true,
            "dst_type":"INT8"
        }
    },
    "layer1.0.conv1":{
        "retrain_enable":true,
        "retrain_data_config":{
            "algo":"ulq_quantize",
            "dst_type":"INT8"
        },
        "retrain_weight_config":{
            "algo":"arq_retrain",
            "channel_wise":true,
            "dst_type":"INT8"
        }
    },
    "fc":{
        "retrain_enable":true,
        "retrain_data_config":{
            "algo":"ulq_quantize",
            "dst_type":"INT8"
        },
        "retrain_weight_config":{
            "algo":"arq_retrain",
            "channel_wise":false,
            "dst_type":"INT8"
        }
    }
...
}

参数说明

配置文件中参数说明如下,其中表8~表10的参数说明在手动调整量化配置文件时才会使用。

表1 version参数说明

作用

控制量化配置文件版本号。

类型

int

取值范围

1

参数说明

目前仅有一个版本号1。

推荐配置

1

必选或可选

可选

表2 batch_num参数说明

作用

控制量化感知训练推理阶段使用多少个batch的数据。

类型

int

取值范围

大于0

参数说明

如果不配置,则使用默认值1,建议校准集图片数量不超过50张,根据batch的大小batch_size计算相应的batch_num数值。

batch_num*batch_size为量化使用的校准集图片数量。

其中batch_size为每个batch所用的图片数量。

推荐配置

1

必选或可选

可选

表3 retrain_enable参数说明

作用

该层是否进行量化感知训练。

类型

bool

取值范围

true或false

参数说明

  • true:该层需要进行量化感知训练。
  • false:该层不进行量化感知训练。

推荐配置

true

必选或可选

可选

表4 retrain_data_config参数说明

作用

该层数据量化配置。

类型

object

取值范围

-

参数说明

包含如下参数:

  • algo:量化算法选择,默认是ulq_quantize。
  • clip_max:截断量化算法上限,默认不选。
  • clip_min:截断量化算法下限,默认不选。
  • fixed_min:截断量化算法最小值固定为0,默认不选。
  • dst_type:用以选择INT8或INT4量化位宽,默认为INT8。当前仅支持INT8量化。

推荐配置

-

必选或可选

可选

表5 retrain_weight_config参数说明

作用

该层权重量化配置。

类型

object

取值范围

-

参数说明

包含如下参数:

  • algo:量化算法选择,默认是arq_retrain
  • channel_wise

推荐配置

-

必选或可选

可选

表6 algo参数说明

作用

该层选择使用的量化算法。

类型

object

取值范围

-

参数说明

  • ulq_quantize:ulq截断上下限量化算法。
  • arq_retrain:arq量化算法。

推荐配置

数据量化使用ulq_quantize,权重量化使用arq_retrain。

必选或可选

可选

表7 channel_wise参数说明

作用

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

类型

bool

取值范围

true或false

参数说明

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

推荐配置

true

必选或可选

可选

表8 fixed_min参数说明

作用

设置数据量化算法下限的开关。

类型

bool

取值范围

true或false

参数说明

  • true:数据量化算法固定下限,并且下限为0。
  • false:数据量化算法不固定下限。

如果不选此项,AMCT根据图的结构自动设置。

如果选择此项,并且网络模型量化层的前一层是relu层,则该参数需要手动设置为true,如果为非relu层,则要手动设置为false。

推荐配置

不选此项

必选或可选

可选

表9 clip_max参数说明

作用

数据量化算法上限。

类型

float

取值范围

clip_max>0

根据不同层activation的数据分布找到最大值max,推荐取值范围为:0.3*max~1.7*max

参数说明

截断上下限数据量化算法,如果选择此项则固定算法截断上限。 如果不选此项,通过ifmr算法学习获取上限。

推荐配置

不选此项

必选或可选

可选

表10 clip_min参数说明

作用

数据量化算法下限。

类型

float

取值范围

clip_min<0

根据不同层activation的数据分布找到最小值min,推荐取值范围为:0.3*min~1.7*min

参数说明

截断上下限数据量化算法,如果选择此项则固定算法截断下限。 如果不选此项,通过ifmr算法学习获取下限。

推荐配置

不选此项

必选或可选

可选

表11 dst_type参数说明

作用

量化位宽的类型。当前仅支持INT8量化。

类型

string

取值范围

INT8或INT4,默认为INT8。

参数说明

量化时用于选择是INT8量化还是INT4量化。

推荐配置

-

必选或可选

可选