更新时间:2021-03-18 GMT+08:00
分享

参数调优说明

按照模型转换时设置的量化参数对权重、偏置、数据进行量化,若精度不满足要求,您可以按照如下步骤调整量化参数值。

  1. 按照配置文件模板中的默认参数值进行校准,完成模型数据和参数的量化。
  2. 若按照1中的量化配置进行量化后,精度满足要求,则调参结束,否则继续3
  3. 手动调整以下量化参数后,再进行量化。
    1. 修改搜索范围参数。
      表1 搜索范围参数

      修改前

      修改后

      start_ratio:0.7

      end_ratio:1.3

      step_ratio:0.01

      start_ratio:0.3

      end_ratio:1.7

      step_ratio:0.01

    2. 将bin参数值改大,从150改成200或者250。
    3. 如果是检测类网络,建议将max_percentile参数值设置为PERCENTILE_MID(表示0.99999)。
  4. 若按照3中的量化配置进行量化后,精度满足要求,则调参结束,否则继续5
  5. 按照量化参数的可选配置项,遍历表2中的参数,并按“配置说明”配置参数(可根据calibration时间要求,调整搜索空间大小)。
    表2 参数配置

    参数

    配置说明

    quantize_algo

    配置为HALF_OFFSET,表示数据采用有偏移模式,权重采用无偏移模式。

    weight_type

    配置为VECTOR_TYPE,表示对于卷积算子,可能有多个卷积核的情况下,一个卷积核对应一组量化参数。

    bin

    在计算散度过程中需要统计数据直方图,该参数的值决定了直方图统计的最大值。如果不配置或者配置为0,则使用默认配置150建议选100, 150, 200这三档。

    type

    不同的散度类型对应的计算方式不一样。默认为KL

    • KLKullback-Leibler Divergence;
    • SYMKL:Symmetric Kullback-Leibler Divergence;
    • JSDJensen-Shannon Divergence
    • start_ratio
    • end_ratio
    • step_ratio

    start_ratio决定搜索开始的位置end_ratio决定搜索结束的位置,step_ratio决定搜索步长

    推荐配置有两组

    • start_ratio:0.7 end_ratio:1.3 step_ratio:0.01
    • start_ratio:0.3 end_ratio:1.7 step_ratio:0.01

    max_percentile

    在从大到小排序的一组数中,决定取第多少大的数。

    建议配置为1.0, 0.99999这两档。

    batch_count

    决定量化的读取的校准集图片数量。

    可配置为大于1的整数,建议选10, 20, 50这几档。

  6. 若按照5中的量化配置进行量化后,精度满足要求,则调参结束,否则继续7
  7. 通过exclude_op参数设置量化算子黑名单,从首层开始逐层将算子设置成算子黑名单,设置成算子黑名单的算子不进行量化,通过排除法,判断是哪个算子的量化对精度有影响。

    除设置到量化算子黑名单的算子不进行量化,其它算子默认进行量化,这时会存在int8计算和FP16计算混合的情况。

  8. 若按照7中的量化配置进行量化后,精度满足要求,则调参结束,否则表明量化对精度没有影响,无需设置量化,去除量化配置,退回全网FP16的计算。
图1 调参流程
分享:

    相关文档

    相关产品