地平线量化方案QAT
1 what is QAT?
QAT全称为quantization aware training,是一种模型量化手段,通过在训练过的浮点模型中插入伪量化节点来实现后续的精度fintune,因此QAT相较于PTQ来说往往精度会更高。由于定点数值无法用于反向梯度计算,实际操作过程是在某些op前插入伪量化节点(fake quantization nodes),用于在训练时获取流经该op的数据的截断值或分布,便于在部署量化模型时对节点进行量化。
如上图所示,a为量化的定点模型,数据和模型权重均已变为定点数,通常情况下我们希望后量化(PTQ)能直接得到a所示的定点模型,并且精度不会损失太多。如果精度损失太多,则需要借助图b所示的量化感知训练(QAT)减少量化误差。QAT的基本原理是在浮点模型中插入伪量化节点,使得模型在训练中可以感知到量化误差,减少量化损失的精度。如上图b所示,在模型中针对conv-weight和activation插入FakeQuanti节点。由FakeQuanti模拟量化过程,weight会学习到量化的