爱笑的小姐姐 · 2023年10月12日

完美!索尼提出增强型PTQ量化方法,可量化CNN/Transformer-Like等模型

image.png

深度神经网络(DNN)的量化已经成为将这种网络嵌入终端用户设备的关键要素。然而,当前的量化方法通常会导致显著的精度降低。

在本文中,作者提出了一种名为增强后训练量化(Enhanced Post-Training Quantization,EPTQ)的新方法。该方法基于知识蒸馏,采用自适应层权重。此外,作者引入了一种新的无标签技术来近似任务损失的Hessian迹,称为无标签Hessian(Label-Free Hessian)。这种技术消除了计算Hessian所需的带标签数据集的要求。自适应知识蒸馏使用无标签Hessian技术,在优化过程中更加关注模型的敏感部分。

在经验上,通过采用EPTQ,作者在各种模型、任务和数据集上取得了业界领先的结果,包括ImageNet分类、COCO目标检测以及Pascal-VOC语义分割。作者还展示了EPTQ在一系列扩展架构上的性能和兼容性,包括CNN、Transformers、混合模型和仅MLP模型。

代码:https://github.com/sony/model_optimization

1. 简介

深度神经网络(DNN)模型用于解决各种实际任务,如图像分类、目标检测和语义分割。然而,将这些模型部署到日常任务中需要将它们部署在边缘设备上的能力。近年来,将DNN模型部署到边缘设备的数量显著增加。然而,网络的部署仍然具有挑战性,因为它们具有较大的内存占用和计算成本。

许多工作通过不同的技术来应对这一挑战,如设计专用硬件架构、剪枝和量化。在这里,作者关注量化,这是一种通过将权重和激活张量转换为低位宽表示来减小模型大小和计算成本的有效方法。

大致上有两种主要不同的方法来量化神经网络模型:

  1. 后训练量化(PTQ):它仅执行小型统计数据收集,以确定量化参数,无需带标签的数据。PTQ的好处通常是简单和快速。然而,这种方法可能会导致高精度下降。
  2. 量化感知训练(QAT):其中重新训练模型参数(使用带标签的数据)以减小量化引起的错误。QAT通常比PTQ获得更好的精度,但代价是计算和算法复杂性,以及需要整个训练数据的可用性。

最近的方法,如AdaRound、BRECQ、AdaQuant和QDrop,提出了PTQ和QAT之间的折衷方案,通过应用短暂的优化过程来实现,无需带标签的数据。这些方法都是基于优化浮点模型和量化模型之间的误差。现有方法的主要区别在于优化过程本身。在AdaRound中,优化是逐层完成的,而AdaQuant同时优化整个网络。BRECQ则显示块优化可以比两者都获得更好的结果。然而,块优化方法需要手动选择要进行优化的层。

在这项工作中,作者去除了手动选择层的过程,同时保留了BRECQ的精度优势。为此,作者定义了一个新的目标,捕捉每个量化层对量化的敏感性。直观地说,作者希望更关注那些量化误差会导致任务损失更大变化的层。一个已知的衡量这一信息的度量是Hessian迹,它在许多模型压缩和优化工作中广泛使用。然而,计算任务损失函数的Hessian需要标签,这对于PTQ来说不合适。

为了克服上述挑战,作者提出了增强后训练量化(EPTQ),这是一种自适应知识蒸馏方法。EPTQ自动地强调了重要层,有助于改善优化过程。为了提供这种关注,作者提出了Label-Free Hessian(LFH),一种新的技术,用于在没有带标签的数据的情况下近似任务损失的Hessian迹。EPTQ的优化方案演示如图1所示,与其他上述技术进行了比较。

image.png

作者在各种网络、任务和数据集上提供了最新的结果,无需手动选择要进行优化的层。此外,作者演示了EPTQ在混合精度量化方案中的应用,以在内存限制下获得更好的精度。

具体而言,作者的贡献如下:

  1. 作者提出了一种适用于后训练量化的优化方法,称为EPTQ,它是与模型无关的,并基于自适应权重的知识蒸馏。
  2. 作者引入了一种名为Label-Free Hessian的新方法,用于在不使用带标签的数据的情况下近似任务损失的Hessian迹。
  3. 作者在各种任务(图像分类、语义分割和目标检测)、架构(CNN、Transformers、混合模型和仅MLP)和数据集(ImageNet、COCO和Pascal VOC)上使用EPTQ提供了最新的结果。作者还将混合精度搜索纳入作者的方法,以在内存限制下获得更好的精度。

2. 相关工作

2.1. 后训练量化优化

最近,PTQ策略取得了许多进展。一些备受关注的方法包括逐层和分块优化。首次引入了逐层PTQ方法的是AdaRound。通过研究任务损失的泰勒级数展开中的二阶项,该方法表明通常的最近舍入量化方法在任务损失方面是次优的。相反,舍入策略是通过优化每层的局部损失来学习的。

AdaQuant在AdaRound之后出现,放宽了其隐含约束,即强制量化权重在其最近舍入值的±1范围内。在BRECQ中实现了一个重大突破,它利用神经网络中的基本构建块并逐个重建它们。它允许在跨层依赖性和泛化误差之间取得良好的平衡。此外,BRECQ对由量化引起的损失的二阶误差进行了全面的理论研究,然后用于改进优化过程。

此外,这些优化方法利用了知识蒸馏,其中来自浮点模型的信息用于指导量化模型。另一个将知识蒸馏用于量化的示例是QAT-QKD,它提出了自学习、协同学习和辅导方法的组合,以有效地应用知识蒸馏进行模型量化。

2.2. 用于模型压缩的Hessian

大多数模型压缩方法,如量化和剪枝,都需要评估正在修改的模型的每个部分的敏感性。一个流行的方法,最早在HAWQ中引入,是使用二阶信息来评估每个块的量化敏感性。作者建议计算模型任务损失相对于每个块的参数的Hessian矩阵的特征值。然后,作者使用这些特征值执行混合精度量化,这是一种已知的量化方法,其中将不同的比特宽度分配给网络的不同层。

Q-BERT采用了使用Hessian矩阵的特征值的想法,并将其应用于基于Transformer的体系结构,以将其量化到非常低的精度。HAWQ-V2和HAWQ-V3进一步扩展了这一想法,使用Hessian矩阵的迹来评估每个块的敏感性。Hessian迹提供了对每个块的敏感性的更好评估。因此,它有助于改进混合精度量化过程。

相似的思想也用于几个剪枝工作中。OBS和L-OBS计算Hessian逆矩阵并使用它来提出一个改进的剪枝机制。HAP将Hessian视为块对角算子,这允许解决其他工作的剪枝方法中未考虑的问题。

然而,通常由于Hessian矩阵非常庞大,计算Hessian信息通常是不可行的。因此,使用不同的算法来近似必要的Hessian信息。例如,最近的一个名为PyHessian的工作引入了一个框架,用于计算神经网络的不同Hessian度量,如Hessian特征值、迹和谱密度。

3. 方法

作者引入了一种增强的后训练量化(EPTQ)方法,可以在无需手动选择进行优化的层的情况下实现。作者通过利用一种新颖的自适应知识蒸馏目标来实现这一点。与以前的方法类似,作者运行一个短暂的优化过程,该过程旨在对网络的量化权重施加小的扰动,以补偿由量化引起的精度下降。作者一次对整个模型执行优化,并通过对每个层的量化误差应用自适应加权来构建优化目标,从而重新获得精度,如图1所示。利用一种新提出的计算Label-Free Hessian trace的技术,该目标引导优化过程集中关注更敏感的层,从而消除了手动选择进行优化的层的必要性。

3.1. 无标签Hessian

image.png

定理3.1的详细证明见附录B。

根据定理3.1,作者可以摆脱对带标签数据集的需求。相反,作者用激活张量的输出来近似平方雅可比矩阵的迹的方法取而代之。为了使用定理3.1来近似Hessian迹,需要满足以下条件:

  1. 任务损失的Hessian不依赖于标签向量,
  2. 满足等式2中指定的假设。

image.png

image.png

为了证明这一结果,作者将LFH与ResNet18上的几个损失函数的实际Hessian值进行了比较。图2呈现了带有和不带有对数标准化的结果。

image.png

此外,在图3中,作者展示了两个额外模型的LFH,并将其与真实Hessian迹进行了比较。通过此比较,作者可以看到,在所有情况下,标准化的LFH与真实的Hessian值保持一致。这证明了LFH可以为常见的目标函数提供Hessian迹的良好近似,而无需带标签的数据。

在实践中,Equation 4中的期望是通过经验均值计算的:

image.png

3.2. 基于Hessian感知知识蒸馏的后训练量化

作者引入EPTQ,一种增强的PTQ方法,它利用LFH进行知识蒸馏,将知识从浮点模型传输到量化模型。作者使用对称量化器,该量化器在和点之间更新量化权重的舍入值。具体而言,设为要优化的参数集,即变量的集合和个量化器的每个量化器的量化步长。此外,作者还将每个层的偏置项添加到中。

让如3.1节中定义,即计算蒸馏损失的兴趣张量集,作者将和分别表示为在取样作为浮点和量化网络的输入时的第个激活张量。然后,作者将基于Hessian的知识蒸馏目标定义如下:

image.png

其中n是作者测量距离的激活张量数,是用于计算距离度量的批次中的图像数,是第个激活张量的LFH迹值,是张量A的Frobenius范数。术语是鼓励优化朝着舍入量化值的一个极端收敛的正则化因子。使优化收敛到极端之一的方法是执行退火过程。最后一个参数是正则化超参数。

LFH的使用使作者能够更多地关注由激活张量引起的量化误差对任务损失产生的更大变化。此外,Equation 6中的损失不需要先验知识网络的结构,因为它封装在中。

此外,作者集成了混合精度搜索,其中每个权重或激活量化器可以具有不同的精度,从B中的一组选项中选择,以使量化模型满足一组硬件约束(例如内存、功耗和延迟)。本文中使用的硬件约束在第4.2节中描述。对于混合精度搜索,作者使用一种众所周知的方法,该方法基于整数线性规划,详见附录D。

image.png

作者方法的一般指南描述在Algorithm 1中。请注意,在该算法中,表示模型中的层数,如3.1节中所述。附录A中提供了更详细的信息。

image.png

作者通过使用两种加权方法来衡量多个模型的准确性,这些模型使用3位的权重量化。结果列在表1中。可以看到,与简单平均方法相比,使用基于Hessian的加权方法可以提高所有呈现的模型的准确性。

此外,作者注意到完整量化过程的执行时间相对较短,例如,在NVIDIA GeForce RTX 3090 GPU上以单精度对ResNet18进行量化约需3小时,经过80K次优化迭代(在20K次迭代中运行时间缩短约45分钟)。

image.png

最后,作者强调,除了消除了对标记数据的需求外,作者的实验还表明,提供的数据集DR不需要非常大,以获得良好的优化结果。这一点在图4中得到了展示,该图显示了由于数据集大小变化而导致的ResNet18的准确性下降。

这意味着改变用于优化的样本数对结果没有明显影响,甚至可以在减小数据集大小的情况下实现接近最佳准确性(使用1024个样本与仅使用64个样本相比,准确性的差距小于0.1%)。

4. 实验

4.1. 单精度量化

作者对不同分类网络上的低位宽度(4位和3位)进行了单精度权重量化,并将作者的结果与其他最新的PTQ方法进行了比较。

image.png

表2和表3与几种低位宽度权重量化方法的比较,位宽精度不同。请注意,表2中的实验是在BRECQ提供的模型上进行的。

image.png

在这种情况下,除了EPTQ为绝大多数模型和位宽获得的改进准确性外,作者强调EPTQ不需要手动选择要进行优化的层,使其更容易使用。

此外,在EPTQ量化方案中,作者量化了所有层(包括第一和最后一层)的权重和激活,没有激活函数的任何线性操作的输出张量以及加法和连接操作。表3中的实验是在torchvision的模型上进行的。EPTQ在这种情况下也提供更好的准确性。

优化迭代次数

image.png

此外,作者对优化迭代次数对结果准确性的影响进行了消融研究。4位权重量化的结果适用于几种分类网络,如图5所示。如图所示,增加迭代次数并没有显著的好处,对于大多数网络而言,仅运行20K次迭代就足够了。

4.2. 混合精度

作者使用混合精度将多个分类网络量化到不同的目标模型大小。每个量化器的位宽选项为。作者应用了总权重内存约束,该约束由下式给出:,其中是权重量化器的索引集合,。作者使用了一种基于整数线性规划的众所周知的混合精度搜索方法,并将其与目标函数相结合。有关混合精度制定的更多详细信息,请参见附录D。

image.png

在此实验中,仅对权重进行混合精度量化,而激活使用8位进行量化。图6比较了EPTQ和其他量化方法在ResNet18(a)和RegNet(b)上的混合精度量化。结果显示,与其他方法相比,EPTQ实现的准确性对于所有模型大小都更好。

4.3. 额外结果

为了展示EPTQ的好处和稳健性,作者在两个额外任务(语义分割和目标检测)上进行了实验,展示了作者的方法在图像分类之外的领域也表现出色。

此外,作者还在三种额外类型的体系结构上呈现了结果:Transformers、MLP-only和混合Transformers-Convolutions。

语义分割

image.png

表4比较了EPTQ和其他量化方法在使用MobileNetV2 Backbone 的DeeplabV3+模型上进行语义分割任务的情况。

目标检测

image.png

表5显示了在不同精度下,使用ResNet50 Backbone 的RetinaNet网络进行量化时,EPTQ与BRECQ的竞争结果,同时去除了手动选择要进行优化的层的要求。可以看到,EPTQ的优势也适用于这项任务,并且在这个任务中表现出色。

其他体系结构

image.png

表6中的EPTQ性能针对三种先进的体系结构进行了评估。在这里,作者研究了结构与以前实验中测试的常见CNN的构造块结构明显不同的网络,这可能导致PTQ优化方法的低效性。

作者展示了EPTQ在这些网络上有效运行,并对以下网络进行了测试:

  1. DeiT: 一种Transformer网络;
  2. MobileViT: 一种将CNN与视觉Transformer原理相结合的混合网络;
  3. MLP-Mixer:  一种仅由MLP层组成的网络,用作线性操作。

在这些实验中,作者对一些超参数进行了小的校准,以获得改进的结果。据作者所知,没有其他PTQ方法对这些架构进行4位权重量化。表6中的结果证实了EPTQ在各种架构上的适用性和高性能。

5. 参考

[1]. EPTQ: Enhanced Post-Training Quantization via Label-Free Hessian.

作者:AI视界引擎
文章来源:AI视界引擎

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
16912
内容数
1235
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息