模型量化
模型量化(quantization)指的是用更少的bit表示模型参数,从而减少模型的大小,加速推理过程的技术。 模型量化是把模型的参数从FP32映射到nbit位的过程, 简单来说就是在定点数与浮点数等数据之间建立一种数据映射关系, 使得以较小的精度损失代价获得了较好的收益。 例如FP32-->INT8可以实现4倍的参数压缩,在压缩内存的同时可以实现更快速的计算,从而有效地提高模型的性能; 最极端的二值量化理论上甚至可以实现32倍的压缩,但是过度的压缩会导致模型的精度快速下降, 所以更多量化的时候需要做好精度和性能的权衡. 工业界一般使用int8量化, 在模型推理前需要把FP32映射为int8进行计算, 然后在输出的时候做一个去量化操作, 把计算的int8结果映射回FP32. 关于量化的3个问题: * 为什么不直接训练一个低精度的网络? 一般训练使用的是梯度下降法, 直接用 定点数做参数训练很容易导致梯度消失, 训练的模型会欠拟合, 所以训练阶段我们还是要用 浮点数 来做参数. * 为什么可以做量化? 神经网络模型一般有较好的抗干扰能力对噪声不敏感,量化相当于对原输入加入了大