文档
注册

调优流程

通过create_quant_config接口生成的config.json文件中的默认配置进行量化,若量化后的推理精度不满足要求,则可调整量化配置重复量化,直至精度满足要求。本节详细介绍手动调优流程,调整对象是训练后量化配置文件config.json中的参数,主要涉及3个阶段:

  1. 调整校准使用的数据量。
  2. 跳过量化某些层。
  3. 调整量化算法及参数。

具体步骤如下:

  1. 根据create_quant_config接口生成的默认配置进行量化。若精度满足要求,则调参结束,否则进行2
  2. 手动修改batch_num,调整校准使用的数据量。

    batch_num控制量化使用数据的batch数目,可根据batch大小以及量化需要使用的图片数量调整。通常情况下:

    batch_num越大,量化过程中使用的数据样本越多,量化后精度损失越小;但过多的数据并不会带来精度的提升,反而会占用较多的内存,降低量化的速度,并可能引起内存、显存、线程资源不足等情况;因此,建议batch_num*batch_size为16或32(batch_size表示每个batch使用的图片数量)。

  3. 若按照2中的量化配置进行量化后,精度满足要求,则调参结束,否则进行4
  4. 手动修改quant_enable,跳过量化某些层。

    quant_enable可以指定该层是否量化,取值为true时量化该层,取值为false时不量化该层,将该层的配置删除也可跳过该层量化。

    在整网精度不达标的时候需要识别出网络中的量化敏感层(量化后误差显著增大),然后取消对量化敏感层的量化动作,识别量化敏感层有两种方法:

    1. 依据网络模型结构,一般网络中首层、尾层以及参数量偏少的层,量化后精度会有较大的下降。
    2. 通过精度比对工具,逐层比对原始模型和量化后模型输出误差(例如以余弦相似度作为标准,需要相似度达到0.99以上),找到误差较大的层,优先对其进行回退。
  5. 若按照4中的量化配置进行量化后,精度满足要求,则调参结束,否则进行6
  6. 手动修改activation_quant_params和weight_quant_params,调整量化算法及参数:

    算法参数意义请参见配置文件及参数说明,算法说明请参见量化算法

  7. 若按照6中的量化配置进行量化后,精度满足要求,则调参结束,否则表明量化对精度影响很大,不能进行量化,去除量化配置。
图1 调参流程
搜索结果
找到“0”个结果

当前产品无相关内容

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