文档
注册

手工调优

执行量化感知训练特性后的精度如果不满足要求,可以尝试手动调整config.json文件中的参数,本节给出调整的原则,以及参数解释。

调优流程

通过create_quant_retrain_config接口生成的config.json文件中的默认配置进行量化,若量化后的推理精度不满足要求,则按照如下步骤调整量化感知训练配置文件中的参数。

  1. 执行amct_mindspore_sample.tar.gz包中的量化脚本,根据create_quant_retrain_config接口生成的默认配置进行量化。若精度满足要求,则调参结束,否则进行2
  2. 将部分量化层取消量化,即将其"retrain_enable"参数修改为"false"。通常模型首尾层对推理结果影响较大,故建议优先取消首尾层的量化。

    如果用户有推荐的clip_max和clip_min的参数取值,则可以按照如下方式修改量化配置文件:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    {
        "version":1,
        "layername1":{
            "retrain_enable":true,
            "retrain_data_config":{
                "algo":"ulq_quantize",
                "clip_max":3.0,
                "clip_min":-3.0
            },
            "retrain_weight_config":{
                "algo":"arq_retrain",
                "channel_wise":true
            }
        },
        "layername2":{
            "retrain_enable":true,
            "retrain_data_config":{
                "algo":"ulq_quantize",
                "clip_max":3.0,
                "clip_min":-3.0
            },
            "retrain_weight_config":{
                "algo":"arq_retrain",
                "channel_wise":true
            }
        }
    }
    
  3. 完成配置后,精度满足要求则调参结束;否则表明量化感知训练对精度影响很大,不能进行量化感知训练,去除量化感知训练配置。

量化配置文件

如果通过create_quant_retrain_config接口生成的config.json量化感知训练配置文件,推理精度不满足要求,则需要参见该章节不断调整config.json文件中的内容,直至精度满足要求,该文件部分内容样例如下(用户修改json文件时,请确保层名唯一):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
    "version":1,
    "conv1":{
        "retrain_enable":true,
        "retrain_data_config":{
            "algo":"ulq_quantize"
        },
        "retrain_weight_config":{
            "algo":"arq_retrain",
            "channel_wise":true
        }
    },
    "layer1.0.down_sample_layer.0":{
        "retrain_enable":true,
        "retrain_data_config":{
            "algo":"ulq_quantize"
        },
        "retrain_weight_config":{
            "algo":"arq_retrain",
            "channel_wise":true
        }
    },
...
}

参数说明

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

表1 version参数说明

作用

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

类型

int

取值范围

1

参数说明

目前仅有一个版本号1。

推荐配置

1

必选或可选

可选

表2 retrain_enable参数说明

作用

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

类型

bool

取值范围

true或false

参数说明

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

推荐配置

true

必选或可选

可选

表3 retrain_data_config参数说明

作用

该层数据量化配置。

类型

object

取值范围

-

参数说明

包含如下参数:

  • algo:量化算法选择,默认是ulq_quantize。
  • clip_max:截断量化算法上限,默认不选。
  • clip_min:截断量化算法下限,默认不选。
  • fixed_min:截断量化算法最小值固定为0,默认不选。

推荐配置

-

必选或可选

可选

表4 retrain_weight_config参数说明

作用

该层权重量化配置。

类型

object

取值范围

-

参数说明

包含如下参数:

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

推荐配置

-

必选或可选

可选

表5 algo参数说明

作用

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

类型

object

取值范围

-

参数说明

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

推荐配置

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

必选或可选

可选

表6 channel_wise参数说明

作用

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

类型

bool

取值范围

true或false

参数说明

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

推荐配置

true

必选或可选

可选

表7 fixed_min参数说明

作用

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

类型

bool

取值范围

true或false

参数说明

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

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

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

推荐配置

不选此项

必选或可选

可选

表8 clip_max参数说明

作用

数据量化算法上限。

类型

float

取值范围

clip_max>0

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

0.3*max~1.7*max

参数说明

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

推荐配置

不选此项

必选或可选

可选

表9 clip_min参数说明

作用

数据量化算法下限。

类型

float

取值范围

clip_min<0

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

0.3*min~1.7*min

参数说明

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

推荐配置

不选此项

必选或可选

可选

搜索结果
找到“0”个结果

当前产品无相关内容

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