模型 量化后速度 精度

 

量化后速度变慢

 

将不同的算子/layer 配置到CPU上运行,直到确实是哪个算子/layer 在NPU上出现速度问题

 

https://github.com/alibaba/MNN/issues/1269

Quantized model performance worse than float model performance?

There are three possible reasons:

    1. SSE / AVX2 Machine, the compute is int8 -> int16 -> int32, which is a little slow than float.
    2. ARM v8.2 Machine, the machine has twice float performance than quan without dot. Please comipile MNN with -DMNN_ARM82=true, then MNN will use sdot for better performance.
  1. For 2x2-7x7 float convolution, mnn can use winograd for better performance, currently quantized don't support winograd.

 

https://github.com/Tencent/ncnn/issues/1642

 

 

https://support.huawei.com/enterprise/zh/doc/EDOC1100234052/d92e2fbf

 

 

手动调优

 
 

调优流程

通过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中的量化配置进行量化后,精度满足要求,则调参结束,否则表明量化对精度影响很大,不能进行量化,去除量化配置。
图13-14 调参流程
 

 

 

识别模型精度一般下降不多的,主要可以采用:

  • 增大校准数据集,校准数据集需要具有代表性,可以表示预测数据的分布
  • 调整离线量化中量化的op,比如减少量化op类型
  • 改用量化训练方法

 

posted @ 2022-10-25 15:59  sinferwu  阅读(243)  评论(0编辑  收藏  举报