AdaQuant——基于优化方式求解最佳量化参数

背景

  • 模型经过量化,势必引入量化噪声;大多数情况下,会导致推理精度下降;
  • 量化误差主要由Round取整、Clip限幅引起,并可归纳为Activation量化误差与Weight量化误差:

    AdaQuant——基于优化方式求解最佳量化参数_第1张图片

  • 为改善量化后精度,通常的策略:
    • PTQ (Post-training Quantization)策略:典型方法包括校准算法的改进(如改进KL算法、基于Histogram的非对称量化等),或叠加使用有助于减少量化误差的PTQ策略(如ADMM、Bias Correction、AMP、Weight Adjustment等):
      • 优势:简单易用,能快速看到量化效果;
      • 劣势:由于模型训练时,并未考虑到量化约束,因此未必能完全消除量化误差或精度损失;
    • QAT (Quantization-aware Training)策略:基于训练数据的在线微调,使模型对量化表现的更为友好,以改善量化效果:

      • 优势:训练阶段考虑到了量化约束,精度效果相对更好;更有利于极低比特量化(如INT4、或INT8/INT4混合)的落地实现;
      • 劣势:存在训练成本,维护升级相对吃力;精度效果未必好,也依赖策略选择与超参调整;

AdaQuant——基于优化方式求解最佳量化参数_第2张图片

  • 考虑工具化应用时,用户更愿意接受的使用方式:         

    • 优先选择PTQ量化,通常需要考虑轻量化原则:

      • 提供简单快捷的使用流程与工具接口,仅依靠少量无标注数据作为输入、或Data-free形式;

      • 量化精度符合预期时,需要考虑与推理引擎(如MNN、TensorRT、TVM等)相结合,获得真实的推理加速效果;

        AdaQuant——基于优化方式求解最佳量化参数_第3张图片

    • 从Data-free PTQ,到Label-free PTQ,再到Training-aware QAT,量化方法对数据的依赖逐渐增强。当业务场景对精度要求极高时,如果满足生产周期的容忍度要求,也可以选择QAT方式。此时,需要在较大的训练集上微调;AdaQuant——基于优化方式求解最佳量化参数_第4张图片

  • 总的来说,在PTQ与QAT之间,基于易用性考虑,通常会优先选择PTQ量化,但PTQ量化效果存在根本性挑战。为了改善量化效果,从早期的KL量化,到一系列辅助策略(如ADMM、Bias Correction等),再到现阶段的优化求解方式,PTQ量化方式逐渐往组合应用、以及训练优化方式演进。

AdaQuant分析

参考文献:https://arxiv.org/abs/2006.10518

GitHub:https://github.com/itayhubara/CalibTIP

  • 简而言之:AdaRound、AdaQuant以及BRECQ是现阶段PTQ研究的前沿策略,都沿着“权重不变的量化参数优化”方向演进,即都属于Optimization-based Methods;
  • 技术原理:
    • 需要在Calibration-set上,优化求解如下目标函数,确定最佳的量化参数

    • 具体的优化方式:基于预训练模型,在保持权重不变的前提下,以Calibration-set作为数据驱动,优化求解量化参数:         

      • 量化方式:可以是对称、或非对称量化;

      • 量化参数:包括scaling factor、zero point、corret bias或adjusted coefficient等参数;

    • 混合精度设置:通过求解Integer programming(比如采用Greedy search求解),确定Mixed-precision planning,在确保精度损失满足需求的条件下,最大化量化加速收益:

      AdaQuant——基于优化方式求解最佳量化参数_第5张图片

    • 技术特点:
      • 相比于零散的使用ADMM、Bias Correction、Weight Adjustment等PTQ策略,通过优化手段、可联合实现这些策略带来的效果:

        • 比如Activation的scaling factor的优化,相当于改进KL算法或执行EasyQuant,以最小化Activation量化误差;

        • 比如Weight的scaling factor的优化,相当于ADMM的使用,以最小化Weight量化误差;

        • 与Weights相乘系数 (adjusted coefficient)的优化,相当于Weight Adjustment的效果;

        • 与Weights相加偏差 (corret bias)的优化,相当于Bias Correction的效果; 

          AdaQuant——基于优化方式求解最佳量化参数_第6张图片

  • 相比于AdaRound:AdaRound也通过优化手段,为Weights添加-1~1之间的数值,通过优化Round方式以减少Round误差;

    AdaQuant——基于优化方式求解最佳量化参数_第7张图片

    相比较而言,AdaQuant所能实现的优化效果更加全面;  
  • 相比于BRECQ:AdaRound与AdaQuant,采取的量化参数优化方式都是Layer-wise optimization,这种优化方式尽管能够减少当前Layer量化时的误差,但是缺乏Inter-layer dependency的考虑,容易导致局部最优解(Sub-optimal);此外,由于优化求解是基于Calibration-set进行的,也不利于Network-wise optimization(容易陷入过拟合);而BRECQ量化,通过优化重构Block-wise或Stage-wise的计算输出,能够在Layer-wise与Network-wise之间实现Trade-off。Block-wise与Stage-wise Reconstruction的具体描述如下:

PTQ技术实现

  • PTQ技术实现,总体需遵循轻量化原则:一方面在算法层面、尽量减少训练依赖,另一方面在Runtime层面减少tuning开销(最好能直接接入推理优化库,如MNN、TensorRT等):

AdaQuant——基于优化方式求解最佳量化参数_第8张图片

  • 需要支持的前端框架:PyTorch、TensorFlow;
  • PTQ业务落地案例,可参考:解读阿里云PAI模型压缩技术落地实时移动端智能应用 | 机器之心

你可能感兴趣的:(优化加速,模型压缩,深度学习,模型量化,深度学习,模型压缩,后训练量化)