训练后量化配置参数说明
如果通过create_quant_config接口生成的config.json量化配置文件,推理精度不满足要求,则需要参见该章节不断调整config.json文件中的内容(用户修改JSON文件时,请确保层名唯一),直至精度满足要求,json量化配置文件样例请参见接口中的调用示例部分。
配置文件中参数说明如下:
表 2 version参数说明
作用
|
控制量化配置文件版本号。
|
类型
|
int
|
取值范围
|
1
|
参数说明
|
目前仅有一个版本号1。
|
推荐配置
|
1
|
可选或者必选
|
可选
|
表 3 batch_num参数说明
作用
|
控制量化使用多少个batch的数据。
|
类型
|
int
|
取值范围
|
大于0
|
参数说明
|
如果不配置,则使用默认值1,建议校准集图片数量不超过50张,根据batch的大小batch_size计算相应的batch_num数值。
batch_num*batch_size为量化使用的校准集图片数量。
其中batch_size为每个batch所用的图片数量。
|
推荐配置
|
1
|
必选或可选
|
可选
|
表 4 activation_offset参数说明
作用
|
控制数据量化是对称量化还是非对称量化。全局配置参数。
若配置文件中同时存在activation_offset和asymmetric参数,asymmetric参数优先级>activation_offset参数。
|
类型
|
bool
|
取值范围
|
true或false
|
参数说明
|
- true:数据量化时为非对称量化。
- false:数据量化时为对称量化。
|
推荐配置
|
true
|
必选或可选
|
可选
|
表 5 do_fusion参数说明
作用
|
是否开启融合功能。
|
类型
|
bool
|
取值范围
|
true或false
|
参数说明
|
- true:开启融合功能。
- false:不开启融合功能。
当前仅支持Conv+BN融合。
|
推荐配置
|
true
|
可选或必选
|
可选
|
表 6 skip_fusion_layers参数说明
作用
|
跳过可融合的层。
|
类型
|
string
|
取值范围
|
可融合层的层名。当前仅支持Conv+BN融合。
|
参数说明
|
不需要做融合的层。
|
推荐配置
|
-
|
可选或必选
|
可选
|
表 7 layer_config参数说明
作用
|
指定某个网络层的量化配置。
|
类型
|
object
|
取值范围
|
-
|
参数说明
|
参数内部包含如下参数:
- quant_enable
- activation_quant_params
- weight_quant_params
|
推荐配置
|
-
|
必选或可选
|
可选
|
表 8 quant_enable参数说明
作用
|
该层是否做量化。
|
类型
|
bool
|
取值范围
|
true或false
|
参数说明
|
|
推荐配置
|
true
|
必选或可选
|
可选
|
表 9 dmq_balancer_param参数说明
作用
|
DMQ均衡算法中的迁移强度。
|
类型
|
float
|
取值范围
|
[0.2, 0.8]
|
参数说明
|
代表将activation数据上的量化难度迁移至weight权重的程度,数据分布的离群值越大迁移强度应设置较小。
|
推荐配置
|
0.5
|
必选或可选
|
可选
|
表 10 activation_quant_params参数说明
作用
|
该层数据量化的参数。
|
类型
|
object
|
取值范围
|
-
|
参数说明
|
activation_quant_params内部包含如下参数,IFMR算法相关参数与HFMG算法相关参数在同一层中不能同时出现:
- IFMR数据量化算法涉及参数:
- max_percentile
- min_percentile
- search_range
- search_step
- act_algo
- num_bits
- asymmetric
- HFMG数据量化算法涉及参数:
- act_algo
- num_of_bins
- num_bits
- asymmetric
|
推荐配置
|
-
|
必选或可选
|
可选
|
表 11 weight_quant_params参数说明
作用
|
该层权重量化的参数。
|
类型
|
object
|
取值范围
|
-
|
参数说明
|
包括如下参数: - num_bits
- wts_algo
- channel_wise
|
推荐配置
|
-
|
必选或可选
|
可选
|
表 12 num_bits参数说明
作用
|
量化位宽。
|
类型
|
int
|
取值范围
|
8或16
|
参数说明
|
当前仅支持配置为8,表示采用INT8量化位宽。
|
推荐配置
|
-
|
必选或可选
|
必选
|
表 13 act_algo参数说明
作用
|
数据量化算法。
|
类型
|
string
|
取值范围
|
ifmr或者hfmg
|
参数说明
|
IFMR数据量化算法:ifmr
HFMG数据量化算法:hfmg
|
推荐配置
|
-
|
必选或可选
|
可选
|
表 14 asymmetric参数说明
作用
|
控制数据量化是对称量化还是非对称量化。用于控制逐层量化算法的选择。
若配置文件中同时存在activation_offset和asymmetric参数,asymmetric参数优先级>activation_offset参数。
|
类型
|
bool
|
取值范围
|
true或false
|
参数说明
|
- true:数据量化时为非对称量化。
- false:数据量化时为对称量化。
|
推荐配置
|
true
|
必选或可选
|
可选
|
表 15 max_percentile参数说明
作用
|
IFMR数据量化算法中,最大值搜索位置参数。
|
类型
|
float
|
取值范围
|
(0.5,1]
|
参数说明
|
在从大到小排序的一组数中,决定取第多少大的数,比如有100个数,1.0表示取第100-100*1.0=0,对应的就是第一个大的数。
对待量化的数据做截断处理时,该值越大,说明截断的上边界越接近待量化数据的最大值。
|
推荐配置
|
0.999999
|
必选或可选
|
可选
|
表 16 min_percentile参数说明
作用
|
IFMR数据量化算法中,最小值搜索位置参数。
|
类型
|
float
|
取值范围
|
(0.5,1]
|
参数说明
|
在从小到大排序的一组数中,决定取第多少小的数,比如有100个数,1.0表示取第100-100*1.0=0,对应的就是第一个小的数。
对待量化的数据做截断处理时,该值越大,说明截断的下边界越接近待量化数据的最小值。
|
推荐配置
|
0.999999
|
必选或可选
|
可选
|
表 17 search_range参数说明
作用
|
IFMR数据量化算法中,控制量化因子的搜索范围[search_range_start, search_range_end]。
|
类型
|
list,列表中两个元素类型为float。
|
取值范围
|
0<search_range_start<search_range_end
|
参数说明
|
控制截断的上边界的浮动范围。
- search_range_start:决定搜索开始的位置。
- search_range_end:决定搜索结束的位置。
|
推荐配置
|
[0.7,1.3]
|
必选或可选
|
可选
|
表 18 search_step参数说明
作用
|
IFMR数据量化算法中,控制量化因子的搜索步长。
|
类型
|
float
|
取值范围
|
(0, (search_range_end-search_range_start)]
|
参数说明
|
控制截断的上边界的浮动范围步长,值越小,浮动步长越小。
搜索次数search_iteration=(search_range_end-search_range_start)/search_step,如果搜索次数过大,搜索时间会很长,该场景下将会导致类似进程卡死的问题。
|
推荐配置
|
0.01
|
必选或可选
|
可选
|
表 19 num_of_bins参数说明
作用
|
HFMG数据量化算法用于调整直方图的bin(直方图中的一个最小单位直方图形)数目。
|
类型
|
unsigned int
|
取值范围
|
{1024, 2048, 4096, 8192}
|
参数说明
|
num_of_bins数值越大,直方图拟合原始数据分布的能力越强,可能获得更佳的量化效果,但训练后量化过程的耗时也会更长。
|
推荐配置
|
4096
|
必选或可选
|
HFMG算法量化场景下,该参数可选。
|
表 20 wts_algo参数说明
作用
|
权重量化算法
|
类型
|
string
|
取值范围
|
arq_quantize
|
参数说明
|
ARQ权重量化算法:arq_quantize
|
推荐配置
|
-
|
必选或可选
|
可选
|
表 21 channel_wise搜索相关参数说明
作用
|
ARQ权重量化算法中,是否对每个channel采用不同的量化因子。
|
类型
|
bool
|
取值范围
|
true或false
|
参数说明
|
- true:每个channel独立量化,量化因子不同。
- false:所有channel同时量化,共享量化因子。
|
推荐配置
|
true
|
必选或可选
|
可选
|