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

手工调优

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

调优流程

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

  1. 根据create_quant_retrain_config接口生成的默认配置进行量化。若精度满足要求,则调参结束,否则进行下一步。
  2. INT4量化场景下,如果量化后精度无法满足要求,则可以将部分量化层量化位宽修改为INT8,即将其"dst_type"参数取值修改为"INT8",修改样例如下:
     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
    28
    {
        "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"
            }
        }
    }
    
    INT8量化场景下,可以将部分量化层取消量化,即将其"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
    28
    {
        "version":1,
        "batch_num":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文件时,请确保层名唯一):

  • INT8量化
     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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    {
        "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"
            }
        }
    ...
    }
    
  • INT4量化
     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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    {
        "version":1,
        "batch_num":2,
        "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":"INT4"
            },
            "retrain_weight_config":{
                "algo":"arq_retrain",
                "channel_wise":true,
                "dst_type":"INT4"
            }
        },
        "fc":{
            "retrain_enable":true,
            "retrain_data_config":{
                "algo":"ulq_quantize",
                "dst_type":"INT4"
            },
            "retrain_weight_config":{
                "algo":"arq_retrain",
                "channel_wise":true,
                "dst_type":"INT4"
            }
        }
    }
    

参数说明

配置文件中参数说明如下,其中表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。

推荐配置

-

必选或可选

可选

表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参数说明

作用

量化位宽的类型。

类型

string

取值范围

INT8或INT4,默认为INT8

参数说明

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

推荐配置

-

必选或可选

可选

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

当前产品无相关内容

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