量化配置
简介
如果通过create_quant_retrain_config接口生成的config.json量化配置文件,推理精度不满足要求,则需要参见该章节不断调整config.json文件中的内容,直至精度满足要求,该文件部分内容样例如下(用户修改json文件时,请确保层名唯一):
{ "version":1, "conv1":{ "retrain_enable":true, "retrain_data_config":{ "algo":"ulq_quantize" }, "retrain_weight_config":{ "algo":"arq_retrain", "channel_wise":true } }, "conv2_1/expand":{ "retrain_enable":true, "retrain_data_config":{ "algo":"ulq_quantize" }, "retrain_weight_config":{ "algo":"arq_retrain", "channel_wise":true } }, "conv2_1/dwise":{ "retrain_enable":true, "retrain_data_config":{ "algo":"ulq_quantize" }, "retrain_weight_config":{ "algo":"arq_retrain", "channel_wise":true } }, }
参数配置说明
配置文件中参数说明如下:
作用 |
控制量化配置文件版本号 |
---|---|
类型 |
int |
取值范围 |
1 |
参数说明 |
目前仅有一个版本号1。 |
推荐配置 |
1 |
必选或可选 |
可选 |
作用 |
该层是否做retrain |
---|---|
类型 |
bool |
取值范围 |
true或false |
参数说明 |
取值为true时使用retrain量化,取值为false时不使用retrain。 |
推荐配置 |
true |
必选或可选 |
可选 |
作用 |
该层数据量化配置 |
---|---|
类型 |
object |
取值范围 |
无 |
参数说明 |
包含如下参数:
|
推荐配置 |
无 |
必选或可选 |
可选 |
作用 |
该层权重量化配置 |
---|---|
类型 |
object |
取值范围 |
无 |
参数说明 |
包含如下参数:
|
推荐配置 |
无 |
必选或可选 |
可选 |
作用 |
该层选择使用的量化算法 |
---|---|
类型 |
object |
取值范围 |
无 |
参数说明 |
|
推荐配置 |
数据量化使用ulq_quantize,权重量化使用arq_retrain。 |
必选或可选 |
可选 |
作用 |
是否对每个channel采用不同的量化因子 |
---|---|
类型 |
bool |
取值范围 |
true或false |
参数说明 |
|
推荐配置 |
true |
必选或可选 |
可选 |
作用 |
设置数据量化算法下限的开关 |
---|---|
类型 |
bool |
取值范围 |
true或false |
参数说明 |
如果不选此项,amct根据图的结构自动设置。 如果选择此项,并且网络模型量化层的前一层是relu层,则该参数需要手动设置为true,如果为非relu层,则要手动设置为false。 |
推荐配置 |
不选此项 |
必选或可选 |
可选 |
作用 |
数据量化算法上限 |
---|---|
类型 |
float |
取值范围 |
clip_max>0 根据不同层feature map的数据分布找到最大值max,推荐取值范围为: 0.3*max~1.7*max |
参数说明 |
截断上下限数据量化算法,如果选择此项则固定算法截断上限。 如果不选此项,通过ifmr算法学习获取上限。 |
推荐配置 |
不选此项 |
必选或可选 |
可选 |
作用 |
数据量化算法下限 |
---|---|
类型 |
float |
取值范围 |
clip_min<0 根据不同层feature map的数据分布找到最小值min,推荐取值范围为: 0.3*min~1.7*min |
参数说明 |
截断上下限数据量化算法,如果选择此项则固定算法截断下限。 如果不选此项,通过ifmr算法学习获取下限。 |
推荐配置 |
不选此项 |
必选或可选 |
可选 |
参数调优说明
按照config.json文件中的默认配置进行量化,若量化后的推理精度不满足要求,则按照如下步骤调整量化配置文件中的参数。
- 执行amct_tensorflow_sample.tar.gz包中的量化脚本,根据create_quant_retrain_config接口生成的默认配置进行量化。
- 若根据1中的默认配置进行量化后,精度满足要求,则调参结束,否则进行3。
- 手动调整量化配置文件,在该文件中增加fixed_min,clip_max,clip_min参数:
- fixed_min,如果选择此项,并且网络模型量化层的前一层是relu层,则该参数需要手动设置为true,如果为非relu层,则要手动设置为false。
- clip_max和clip_min的值根据不同层feature map的数据分布找到最大值max和最小值min,clip_max推荐取值范围0.3*max~1.7*max,clip_min推荐取值范围0.3*min~1.7*min,计算指标量化反量化后的均方误差,根据指标选择最好的clip_max和clip_min。
修改后的量化配置文件样例如下:{ "version":1, "inference/Conv2D":{ "retrain_enable":true, "retrain_data_config":{ "algo":"ulq_quantize", "clip_max":3.0, "clip_min":-3.0, "fixed_min":true }, "retrain_weight_config":{ "algo":"arq_retrain", "channel_wise":true } }, "inference/Conv2D_1":{ "retrain_enable":true, "retrain_data_config":{ "algo":"ulq_quantize", "clip_max":3.0, "clip_min":-3.0, "fixed_min":true }, "retrain_weight_config":{ "algo":"arq_retrain", "channel_wise":true } } }
- 完成配置后,精度满足要求则调参结束;否则表明重训练对精度影响很大,不能进行重训练,去除重训练配置。