深度学习网络量化白皮书论文学习

量化

A White Paper on Neural Network Quantization

  • 为什么要量化

为了追求性能,神经网络模型的体量不断增大,这给在边缘设备上部署模型造成了困难。因此需要一些技术使得模型轻量化,加快模型的推理速度和功率消耗。模型量化就是一种非常有效的模型轻量化算法。它主要通过对模型内的权重和激活值参数进行类型转化(比如浮点型转低位整型,或者混合精度等)来加快模型推理速度。但是,这种粗略的量化方式会引入噪声使得模型精度有所下降。

  • 主流量化手段

​ Post-Training Quantization 训练后量化 (PTQ) :需要预训练和标注的数据,因此,它是一种轻量级的按键式的量化方法。在大多数情况下,PTQ可以达到8比特量化,同时精度接近浮点型。

​ Quantization-Aware Training 量化感知训练 (QAT):需要微调和标注数据,但是可以完成更低位的量化,取得更有竞争力的结果。

模型训练的时候,权重和激活张量通常以16或32位精度的数据类型存储,而模型量化将权重和激活的张量存储在低精度的张量中。当把权重和激活张量从32位转为8位后,存储张量的内存空间缩小4倍,同时矩阵乘法的计算消耗降低14倍。神经网络已被证实,模型量化到较为低位的带宽之后,精度所受到的影响在可接受的范围之内。除此之外,模型量化还经常和其他模型优化的方法一同使用,比如网络架构搜索,模型压缩,模型剪枝等。所以模型量化是深度学习实际落地应用的一个核心步骤。但它也有缺点:低位宽量化会引入噪声到模型中,导致精度下降。尽管一些网络对噪声具有抗干扰性,但是其他网络还需要额外的工作去最大化量化的好处。

PTQ处理的是已经训练好的网络,使用少量数据或者不需要使用数据进行量化,它需要较少的超参数进行调整,并且不用端到端的训练。这使得PTQ不需要太多工程量和计算消耗,并且可以看作一种push-button方法(按钮启动方法,我理解的是在模型训练的时候不需要考虑,模型训练好之后如果需要PTQ就设置添加PTQ,如果不需要就不用添加,类似于想用的时候只需要按一下即可)

QAT依赖于在训练pipeline中使用模拟量化重新训练神经网络。虽然这需要在训练和潜在的超参数调整方面付出更多努力,但与低位量化的 PTQ 相比,它通常会进一步缩小与全精度精度的差距。

模型量化的理论基础

硬件背景

y=ωx+b

大型矩阵之间相乘和卷积操作的基础模块。这样的硬件模块旨在通过并行计算提升神经网络的推理速度。图1中神经网络加速器的两个基本元素:

image-20221011152016007

一般神经网络的训练都是用32位的浮点数表示权重和激活值。如果我们要使用32位的浮点数执行推理,乘法器和加法器必须支持浮点计算逻辑。并且我们需要将 32 位数据从内存传输到乘法器。计算流程和数据传输消耗了神经网络推理过程中花费的大部分能量。 因此,可以通过使用较低位的定点或量化表示来实现。低位定点表示(比如 INT 8)不仅降低了大量的数据传输,也降低了图1中操作的内存和能量消耗。因为数字算术的成本通常与使用的位数成二次线性关系,并且定点加法比浮点加法更快。

为了从浮点转移到高效的定点运算,我们需要一个将浮点向量转换为整数的方案。浮点向量 x 可以近似表示为标量乘以整数值向量:

image-20221011152310901

Sx: 比例因子 scale factor

X_int: 整数数组integer vector

我们将向量的这个量化版本表示为 ̂x。通过量化权重和激活,我们可以写出累积方程的量化版本

image-20221011152815333

均匀仿射量化(非对称量化)

由三个量化参数定义:比例因子 s、零点 z 和位宽 b。

比例因子和零点用于将浮点值映射到整数网格,其大小取决于位宽。

  • 比例因子 s 通常表示为浮点数,并指定量化器的步长;
  • 零点 z 是一个整数,可确保对实零进行无误差量化。这对于确保零填充或 ReLU 等常见操作不会引起量化误差很重要。

一旦定义了三个量化参数,我们就可以继续进行量化操作。从实值向量 x 开始,我们首先将其映射到无符号网格中,其中b是位宽。
0 , 2 b − 1 {0, 2^b - 1} 0,2b1
image-20221011153817844

[]: 是取整运算符

对称均匀量化

Symmetric uniform quantization

对称量化是不对称情况的简化版本。 对称量化器将零点限制为 0。这减少了在不对称量化中的累加操作期间处理零点偏移的计算开销。 但是偏移量的缺乏限制了整数域和浮点域之间的映射。 因此,有符号或无符号整数网格的选择很重要:

image-20221011154425996

无符号对称量化非常适合单尾分布,例如 ReLU 激活(见图 3)。另一方面,可以为大致关于零对称的分布选择有符号对称量化

均匀量化的三种形式(非对称均匀量化,有符号型对称量化,无符号型对称量化)如图3所示:

image-20221011154526499

资料:

猜你喜欢

转载自blog.csdn.net/sexyluna/article/details/127268937