原文链接:Model Quantization and Hardware Acceleration for Vision Transformers: A Comprehensive Survey
摘要
视觉转换器 (ViTs) 最近引起了相当大的关注,在几个视觉相关应用中成为卷积神经网络 (CNN) 的一种有前途的原生替代品。然而,它们的大模型大小以及高计算和内存需求阻碍了部署,尤其是在资源受限的设备上。这强调了特定于 ViT 的算法-硬件协同设计的必要性,旨在通过根据彼此的优势定制算法结构和底层硬件加速器来优化它们的性能。模型量化通过将高精度数字转换为低精度数字,减少了 ViT 的计算需求和内存需求,允许创建专门针对这些量化算法优化的硬件,从而提高效率。本文对 ViTs 量化及其硬件加速进行了全面概述。我们首先深入研究了 ViT 的独特架构及其运行时特性。随后,我们研究了模型量化的基本原理,然后对 ViT 的最新量化技术进行了比较分析。此外,我们还探讨了量化 ViT 的硬件加速,强调了硬件友好型算法设计的重要性。最后,本文将讨论当前的挑战和未来的研究路径。开源代码
1、引言
在计算机视觉领域,卷积神经网络 (CNN) 历来是基石,在大量任务中表现出卓越的功效 [1]。然而,随着 Transformer 架构的出现,情况开始发生变化,在自然语言处理 (NLP) [2]、[3]、[4] 方面取得巨大成功后,它以 Vision Trans formers (ViTs) [5]、[6]、[7] 的形式应用于计算机视觉。ViTs 的关键特征是自我注意,它允许模型通过学习图像标记序列中元素之间的复杂关系来上下文分析视觉数据。这种掌握更广泛背景和图像中相互依赖关系的能力推动了基于 Transformer 的视觉模型的快速发展,随后将它们确立为各种任务的新支柱,包括图像分类 [7]、对象检测 [8]、图像生成 [9]、自动驾驶 [10] 和视觉问答 [11],展示了它们在计算机视觉中的多功能性和变革性影响。 如 [12] 中所述。
尽管 ViT 具有卓越的功能,但由于它们本身的模型尺寸较大,以及自注意力机制带来的计算和内存需求的二次增长,尤其是随着图像分辨率的增长,ViT 面临着挑战。这种组合极大地阻碍了在计算和内存资源受限的设备上的部署,尤其是在自动驾驶 [13] 和虚拟现实 [14] 等实时应用中,满足低延迟要求和产生高质量的用户体验至关重要。这凸显了对模型压缩技术进步的迫切需求,例如修剪 [15]、量化 [16]、知识蒸馏 [17] 和低秩分解 [18]。此外,ViT 的快速采用不仅归因于算法创新和数据可用性,还归因于处理器性能的增强。虽然 CPU 和 GPU 提供了广泛的计算多功能性,但它们固有的柔韧性可能会导致效率低下。鉴于 ViT 的重复但独特的操作特性,显然有机会利用旨在优化数据重用的专用硬件,从而提高 ViT 部署的效率。
量化是一种将高精度映射到较低精度的技术,已经成功地促进了轻量级和计算高效的模型,增强了算法和硬件之间的交互[19]。在算法方面,已经专门为 ViT 设计了各种技术。这些目标是在将数据压缩到较低的位宽后保持应用程序的准确性。考虑到 GPU INT8/FP8 Tensorcore [20]、[21] 等现有架构,其中一些技术旨在更加硬件友好。在硬件方面,高级量化算法的优化推动了更高效处理器的设计,有可能整合更高效的数据复用模块来并行处理低位数据 [22],[23]。这种算法和硬件的协同设计是开发现代硬件加速器的常用方法,可显著提高其性能。
然而,近年来出版的大量相关著作使初学者难以获得全面的概述和清晰的比较结果。此外,一些在不考虑实际硬件的情况下模拟算法设计的方法在部署时可能会导致精度出乎意料地差 [24]。迫切需要一项全面的调查来总结、分析和比较这些方法。本文通过对 ViTs 量化及其硬件加速进行广泛回顾来填补这一空白。具体来说,我们从算法和硬件的角度深入研究了 ViTs 量化的细微挑战,提供了不同量化方法的垂直比较,如图 1 所示。此外,我们还展示了先进的硬件设计解决方案,并推测了未来趋势和潜在机会。与最近的调查相比,一些调查侧重于各种高效的技术,而不考虑硬件 [25]、[26],一些侧重于算法细节有限的推理优化 [27],而另一些则主要为大型语言模型提供了模型压缩的广泛概述 [28]、[29]——本文提供了详细的描述和比较,以协同方式解决了算法和硬件之间的相互作用。 从而为 ViTs 量化领域提供更清晰、更结构化的见解。
本文的组织总结如下。第二部分深入研究了 Vision Transformers 的架构,展示了它的变体,并通过分析分析了它们的运行时特性和瓶颈。第三部分阐明了模型量化的基本原理。随后,Sec.IV 研究了与 ViT 量化相关的紧迫挑战,并对以前方法的性能进行了比较回顾。Sec.V 探讨了可用于硬件加速的方法范围。最后,Sec.VI 提供了论文摘要,强调了潜在的机遇和挑战。
2、VIT模型架构和性能分析
视觉转换器 (ViTs) [5] 利用自我注意机制来掌握图像序列中的“远程”关系,最近在各种计算机视觉任务中取得了显着的成功,确立了自己作为多功能视觉支柱的地位 [12]。本节首先对 ViTs 的架构进行了总体概述,深入研究了它在 Sec.II-A 中的各种模块和操作。在此之后,我们探讨了 Sec.II B 中 ViT 的进化和变异。最后,我们利用 Sec.II-C 中详述的屋顶模型分析了不同运营的影响。
A. Vision Transformer 架构概述
ViTs 架构如图 2 所示,首先将输入图像分割成块,然后将其转换为线性序列并辅以类标记。然后,这个序列(包括类标记)配备了位置嵌入,并通过 Transformer Encoder 层进行处理以进行特征编码。该过程以一个完全连接的层结束,称为“MLP 头”,用于分类目的。Trans former 编码器的功能如图 2 的右侧面板所示,包括一个多头注意力 (MHA) 和一个前馈 (FFN) 模块,每个模块后面都有一个层归一化 (LayerNorm) 操作和一个残差连接。
总之,MHA 包括六个线性操作,包括四个权重到激活转换(WQ、WK、WV 和 WO 投影)和两个激活到激活转换(Q × KT 和 Outsoftmax ×V)。相比之下,FFN 由两个线性投影(W1 和 W2)组成。像 Softmax、LayerNorm 和 GELU 这样的非线性运算虽然不太普遍,但由于它们的复杂性,在传统硬件上带来了计算挑战,这可能会限制端到端 trans former 推理的增强 [31]。
B. 变体 ViT
ViTs 一直是图像处理任务中后续基于 Transformer 的模型的基础架构,以其在处理图像中各种比例和复杂性的稳健性而闻名。在 ViT 的优势之上,推出了 DeiT [6],它保留了原始架构,但经过专门设计,可以提高数据效率。通过结合为 Transformers 量身定制的新颖师生策略,包括使用蒸馏令牌,DeiT 可以在较小的数据集上进行有效训练,而不会大幅降低性能,从而证明模型对数据约束的适应性。
此外,Swin-Transformer [7] 看到了另一个重大的进步。该模型通过将分层结构与移位窗口集成来增强 ViT 框架,这种设计选择大大提高了模型捕获局部特征的能力,同时仍保持全局上下文。
有关此主题的更多信息,请参见 [12]、[32] 以更全面地了解 ViTs。
C. Roofline 模型分析
Roofline 模型 [33] 用于分析 ViTs。它提供了一个全面的框架,用于评估部署在特定硬件上时的效率(例如。RTX4090 GPU)。该模型有助于识别一个层或操作是计算瓶颈还是内存瓶颈,从而优化内存访问和处理能力的利用[34]。与车顶模型一致,我们通过测量所涉及的定位点操作 (FLOP) 和内存操作 (MOP) 来评估模型的计算需求。在此之后,我们确定算术强度,计算为 FLOPs 与访问字节数 (FLOPs / B) 的比率,如等式 5 所示。
除了算术强度之外,硬件的峰值性能(尤其是对于较小的位宽数据)也会显著影响效率。例如,NVIDIA 的 RTX 4090GPU 的速度从 FP16 的 330 TOP/s 翻倍到 INT8 的 660 TOP/s。如图 3 所示,当使用量化时,roofline 模型通过提高性能上限来整合这一点,这表明计算绑定层的性能更好。
1) 运算分析:如表 I 所示,我们分析了 ViT 基的每次运算 FLOPs、MOP 和算术强度,给定输入图像大小为 224。“FC1”和“FC2”层展示了最高的算术强度,表明计算资源得到了有效利用。相比之下,'qk matmul' 和 'sv matmul' 等运算表现出较低的算术强度,因为查询、键和值激活被划分成更小的块(见等式 2),导致矩阵维度更小。softmax 操作虽然需要大量的内存访问,但使用的 FLOP 较少,这可能会在推理过程中造成开销。
当使用 RTX 4090 等高级 GPU 运行时,算术强度低于 200 的运算被识别为内存受限,从而限制了它们的性能潜力。在这些情况下,重点应放在优化以实现更快的内存访问上。采用量化来表示 8 位或更低位格式的重新发送的数据可能特别有利,因为它减少了模型的内存占用,加速了数据传输,从而增强了模型推理。
2) 端到端分析:如图 4 所示,对各种图像大小的 ViT 的分析表明,就 FLOPs 和 MUP 而言,计算需求与图像大小成比例地增加。这种超线性增长的根本原因是与相对于序列长度 l 的激活多重性相关的二次复杂性。为了说明,对于特征维度 d 和多个头 h,'qk matmul' 的维度变为 l×d/h×l。
特别是,ViT-large 模型显示出增加的算术强度,这主要归因于其较大的特征维度 d(其中 ViT-large 有 1024 个,而 ViT small 有 384 个)。随着图像大小的增加,此模型往往会受到计算限制,尤其是在使用 FP16 等标准精度格式时。如图 3 所示,在RTX4090上的roofline模型上下文中,模型的性能与蓝线一致,表示计算受限条件。在这种计算受限的情况下,采用 INT8 精度成为一项至关重要的优化。这种方法不仅缓解了计算瓶颈,还利用了量化计算的更高效率和吞吐量,显著提高了整体性能。
3、 量化基础
在本节中,我们首先介绍常见的量化概念 [19]。之后,我们讨论了不同的量化方法,包括 PTQ (训练后量化)、QAT (量化感知训练)和 DFQ (无数据量化)。
A. 线性量化
线性量化将权重或激活值的连续范围线性映射到一组离散的级别。此过程涉及三个关键步骤:缩放、舍入和零点调整。正如 Jacob 等人 [35] 所描述的,线性量化函数与方程 6 相同。
其中 r 表示输入实数,q 表示输出量化整数,S 是实值比例因子,Z 是整数零点。此映射是线性的,这意味着量化级别是均匀分布的。uniform spac ing 简化了计算,并且在有利于 uniform 算术运算的硬件中特别有效。量化的整数可以转换回浮点表示形式,如 eq.7。
此操作称为 dequantization。但是,检索到的实数 ̃ r 与原始值 r 并不相同,因为舍入操作引入了固有的近似值。
B. 对称和非对称量化
方程 6 中的缩放因子 S 和零点 Z 是两个重要的超参数。比例因子将特定范围的输入实数值划分为多个刻度(见方程 8)。
其中 [rmin,rmax] 和 [qmin,qmax] 分别表示实数值和整数值的裁剪范围。校准是指确定剪辑范围的过程。如果比例因子 S 直接源自 rmin 和 rmax,则此方法称为非对称量化,因为定义的裁剪范围不会在零点周围表现出对称性。当范围不对称或偏斜时,非对称量化更合适。然而,对称量子将方程 8 的分子替换为绝对实值的最大值 rmax −rmin = 2max(|rmax|,|rmin|) = 2max(|r|)。如果剪切范围对称,则零点 Z 的值将变为 0。Equation.8 可以简化为 q = round(r/S),这有助于更简单的实现和更高效的推理。至于 qmin 和 qmax,我们可以选择使用 “full range” 或 “restricted range”。在 “full range” 模式下, S = 2max(|r|) 2n−1 ,其中 n 表示量化位宽,INT8 具有 [−128,127] 的全范围。在“受限范围”模式下,S = max(|r|) 2n−1−1 且 INT8 具有 [−127,127] 的完整范围。但是,直接使用 min/max 值来确定剪辑范围可能对异常值敏感,从而导致量化分辨率低。引入了百分位数 [36] 和 KL离散 [37] 策略来解决这个问题。
C. 静态和动态量化
权重的裁剪范围可以在推理之前静态计算。但是,激活可能会有所不同。根据何时确定激活范围,我们有动态量化和静态量化。
使用动态量化时,在 runtime 期间,每个激活映射的范围都是随机确定的。此方法需要即时计算输入指标(例如最小值、最大值、百分位数等),这可能会显著增加计算成本。尽管如此,动态量化通常可实现更高的精度,因为它可以精确确定每个单独输入的信号范围。
使用静态量化时,范围是在运行时之前预先计算和静态确定的。此方法不会增加计算成本,尽管它通常提供较低的准确性。预先计算范围的一种常用技术是处理一组校准输入以确定激活的平均范围 [35]。均方误差 (MSE) [38] 和熵 [39] 通常用作选择最佳范围的指标。此外,还可以在训练过程中学习裁剪范围 [40]。
D. 量化粒度
根据所采用的粒度级别,剪辑范围的确定可以分为分层、通道和分组量化。随着 gran ularity 变得更精细,计算开销会增加。
在逐层量化中,剪辑范围是通过考虑图层中整个参数的所有统计数据来确定的,并且相同的剪辑范围用于该图层中的所有权重。此方法很简单,但可能会导致精度损失。例如,由于存在范围更广的其他权重矩阵,因此参数范围更有限的权重矩阵可能会表现出降低的量化分辨率。
通道量化是一种常见的选择。在同一层中,由于对相应的通道使用了单独的缩放因子,因此不同的通道具有更合适的分辨率。这通常可以提高准确性。
在分组量化中,剪辑范围是根据 weights 或 activations 中的任何参数组来确定的。与逐层和逐通道量化相比,粒度可以更精细。此方法非常有用,因为单个层中的权重或激活可能会有很大差异,但这也可能会增加相当大的开销。
E. 训练后量化
训练后量化 (PTQ) 是一种将量化运算应用于预训练模型的权重和激活的技术,无需重新训练或微调。它使用预先训练的模型和校准数据来校准和确定超参数,例如裁剪范围和缩放因子。校准后,PTQ 执行量化操作以生成量化模型。由于 PTQ 只需要少量数据,因此它的开销相对较低。但是,这可能会导致准确性降低,尤其是对于低精度量化。
F. 量化感知训练
量化感知训练 (QAT) 是在训练过程中集成量化的过程。在此过程中,使用浮点计算执行向后传递(包括梯度累积),并在整个再训练期间保留高精度权重。这些权重将在前向传递期间量化为整数。在用数据对模型进行重新训练或微调后,可以得到一个量化的模型。尽管 QAT 可以恢复 PTQ 导致的精度下降,但它需要访问整个训练数据并且非常耗时,尤其是对于二进制量化等极低位。
G. 数据自由量化
无数据量化 (DFQ),也称为零点量化 (ZSQ),独立于实际数据进行量化。这种方法通过合成类似于原始训练数据的假数据,巧妙地规避了对真实世界数据集的传统需求。然后,这样生成的合成数据用于在 PTQ 期间校准模型,并在 QAT 中执行微调。DFQ 的核心优势在于它能够解决有关数据量、隐私和安全的问题。例如,在数据敏感的领域,例如医疗保健或金融,DFQ 提供了一个实用的解决方案。
4、VIT 的模型量化
本节批判性地评估了专注于提高量化 ViT 准确性的研究。它专门解决了 Sec.IV-A 中概述的挑战,为非线性运算的激活后量化过程中发现的精度下降问题提供了解决方案。此外,Sec.IV-B 和 IV-C 分别详细介绍了 PTQ 和 QAT 的优化技术。此外,Sec.IV-D 讨论了为 ViTs 中的复杂二进制量化任务量身定制的策略。
A. 激活量化优化
如图 5a 所示,与 softmax 函数相关的激活分布是高度不平衡的;大多数值集中在 0 附近,而少数值(以较暗的色调突出显示)接近 1。当使用单个缩放因子时,这带来了量化挑战,因为单独的异常值会不成比例地影响整个张量的统一量化精度 [41]。
图 5b 中的直方图显示了 GELU 激活后价值分布的类似不平衡,其中大部分值聚集在零附近。此外,由于分布的明显不对称性,特别是负值的范围有限(由较深的颜色表示),硬件适应对称量化的适用性会受到影响。
此外,Layernorm 层输出的逐层量化会导致性能大幅下降,如图 5c 所示的明显通道间可变性证明了这一点。这种可变性凸显了跨通道保持统一量化效果的挑战。
以下小节研究了在量化激活时解决上述挑战的各种方法,对应于不同的操作,例如 Post-Softmax、Post-LayerNorm 和 Post-GELU。
1) Softmax 后激活:如图 6 所示,PTQ4ViT [42] 引入了 Softmax 后激活的孪生均匀量化的概念。该方法将 Softmax 之后的激活值划分为两个不同的量化范围,表示为 R1 和 R2。每个范围都由一个唯一的缩放因子控制,R1 为 ∆R1,R2 为 ∆R2。这种双范围策略可实现更细致的量化过程,有效地区分较小和较大的激活值。
FQ-ViT [43] 采用 log2 量化(见方程 9),并为 softmax 后激活中经常出现的小值(注意力图)分配更多的 bin,而 4 位统一量化则只为这些值分配一个 bin。
APQ-ViT [44] 解决了先前 meth ods 的局限性,该 meth ods 主要关注互信息,而忽略了 Softmax 函数的马修效应。它实现了一个不对称的线性量化,为在量化过程中保持这种效果而定制,如等式 10 所示。该方法取决于与 Softmax 输出的最大值成比例的量化步长,从而促进量化误差在 Softmax 范围内的更均匀分布。
RepQ-ViT [45]、RepQuant [46] 和 LRP-QViT [47] 最初采用对数√2 量化。这种方法更适合于具有幂律分布的激活中注意力分数的属性。随后,对 scales 进行重新参数化,将基数更改为 2,从而在推理中实现移位操作,这对硬件更加友好。
TSPTQ-ViT [48] 利用非正态分布值中的位稀疏性,并为后 softmax 值的不同区域分配不同的比例因子。
I&S-ViT [49] 引入了“Shift-Uniform-Log2 Quan tizer” (SULQ),它在 log2 转换之前包含一个移位偏差。这种方法允许对输入域的整个范围进行综合表示,并有效地与 Softmax 后激活的长尾分布特征保持一致。
2) 后 LayerNorm 激活:FQ-ViT [43] 提出了 LayerNorm 前量子化的二幂因子 (PTF)。PTF 的核心思想是将不同的因子分配给不同的通道,而不是不同的量化参数。这种方法涉及量化输入激活 X 并应用逐层量化参数 s 和 zp,以及每个通道的 2 次幂因子 α。然后使用以下公式确定量化激活 XQ:
其中 s 和 zp 是根据 X 的最大值和最小值计算的,选择 αc 以最小化每个通道 c 的量化误差。
RepQ-ViT [45] 提出了用于 Post-LayerNorm 激活的 Scale Reparam 方法,涉及一个过程,该过程从应用通道量化开始,以准确捕获其严重的通道间变化。这个初始步骤之后是关键的重新参数化:将通道量化 scale 和零点转换为对硬件更友好的分层格式。根据此转换,该方法还修改了 LayerNorm 的仿射因子和下一层的权重。RepQuant [46] 扩展了这一概念,倡导每通道双削波策略,为每个通道建立特定的数字上限和下限,旨在实现准确的量化,同时最大限度地减少量化空间内的偏差。
TSPTQ-ViT [48] 引入了一种解决方案,通过识别数据中的异常通道并为它们分配一个独特的缩放因子,与其他通道的缩放因子不同。此过程涉及使用 K-means算法根据所有通道的 absolutemaximum值检测异常值。在确定异常值后,从一组线性划分的候选者中确定 Hessian 引导的缩放因子。然后,这些缩放因子与加权的缩放因子共同优化,以实现有效的数据处理。
I&S-ViT[49] 引入了“平滑优化策略”(SOS),它包含三个阶段来处理高变体激活。在第一阶段,模型在 LayerNorm 之后用全精度权重和激活进行微调,这些权重和激活在每通道基础上进行量化,而激活在每层基础上进行量化。在接下来的阶段,模型通过采用 scalereparame terization技术从通道量化转变为层量化。最后阶段涉及 extraalfine tuning,两者权重和激活均被量化,以恢复由权重量化引起的性能降级。
MPTQ-ViT [50] 遵循 Smoothquant [51] 对后 LayerNorm 值进行等效变换,并引入一个偏置项来移动分布,使其在零附近更加对称。
LRP-QViT [47] 提出了削波重新参数化,这涉及在每个通道的激活中削波异常值以减轻变化。这是通过调整从通道量化获得的 scale 和零点参数,然后重新参数化 LayerNorm 的仿射因子和后续层的权重和偏差来补偿由削波引起的分布偏移来实现的。
3) GELU 后激活:PTQ4ViT [42] 将孪生均匀量化应用于 GELU 后激活,类似于它在 Softmax 后场景中的实现(参见 Sec.IV A.1)。在这种情况下,量化过程根据激活值的符号来区分激活值:负值在 R1 范围内,并使用更精细的比例因子 (∆R1) 进行量化,而正值则归类在范围 R2 下,并使用相对较大的比例因子 (∆R2) 进行量化。
与后Softmax值的应用相比,TSPTQ-ViT [48]采用了类似的双区域策略,并对符号位的存在进行了明显的适应。
虽然传统的手工量化器难以准确表示 GELU 后分布,但 MPTQ-ViT [50] 提出了一种数据依赖性方法来自动确定特定区域的缩放因子,从而消除了手动校准的需要并增强了适应性。该方法涉及根据 GeLU 后值的大小将其划分为三个不同的区域:负值、小的正值和大的正值。然后为每个区域分配一个特定的 SF,该方法通过调整移位来确保硬件友好的对齐。
总结和比较分析:在回顾表 II 中概述的激活量化优化策略时,出现了一些见解。值得注意的是,每种量化技术都在 softmax 激活后进行了优化,强调了它在量化过程中的关键作用和敏感性。有趣的是,GELU 激活对量化没有显著影响,这表明存在一定程度的稳健性。此外,所有方法在量化到 8 位时都设法实现了接近原始的准确性,展示了他们为 ViTs 架构的独特方面量身定制的创新设计。
当位深度减少到4位时,I&S-ViT [49]实现了最优越的性能,这可能归因于利用了擅长处理softmax输出后的不平衡分布的log2量化器。这种策略,再加上在有限数据集上可行的微调过程,被证明是有效的,这表明即使在较低的位宽下,战略量化器设计和有针对性的微调也可以产生巨大的好处。
B. PTQ 的校准优化
PTQ 通过显著节省 GPU 资源、时间和数据要求,成为 QAT 的引人注目的替代方案。PTQ 的本质在于确定最佳量化比例因子,这取决于最小化全精度模型与其量化对应模型之间的差异。此过程有助于保持模型后量化后输出的保真度。在本小节中,我们回顾了在校准过程中为定义和利用不同优化距离而提出的各种方法,旨在确定量化 ViT 最合适的量化参数。
1) Pearson 相关系数和排序损失:Liu 等 [16] 利用 Pearson 相关系数来评估变压器模块内原始输出和量化输出之间的一致性。为了解决影响注意力分数顺序的量化问题,这对性能至关重要,他们引入了排名损失。这种损失是专门为保持 self attention layer的输出层次结构而制定的,从而保持 transformer 识别全局特征相关性的独特能力。如图 7 所示,校准过程的重点是微调权重和输入的量化区间,利用较小的校准数据集来增强原始输出和量化输出之间的相似性。
2) Hessian 指导度量:PTQ4ViT [42] 强调了 Hessian 指导度量在确定缩放因子方面的有效性,与其他可能与任务特定损失不一致的指标相比,这可以显著提高量化视觉转换器的性能。量化诱导的扰动可以通过泰勒级数展开来量化,如方程 12 所示。为了绕过需要二阶梯度计算的完整 Hessian 矩阵的广泛计算需求,采用了一种近似优化策略,如方程 13 中所述。在此基础上,APQ-ViT [44] 观察到,在超低位场景中,Hessian Guided Metric 可能会忽略关键误差。为了解决这个问题,该方法经过改进,以按块的方式解释量化误差,从而允许对相邻层的误差进行更细致的感知。此外,还采用了底部消除机制来优先考虑对模型输出产生重大影响的误差,而不是考虑整个误差情况。
3) 逐层重建误差:Evol-Q [52] 采用对比损失机制,从自我监督学习范式中汲取灵感,以确定最佳量化尺度。这种方法利用按块进化搜索策略迭代确定每层的最佳尺度。该过程包括在按顺序进行下一个区块之前完成对一个区块的搜索,以确保采用系统和有针对性的方法来优化规模。
通过简单的分层平方损失,COMQ [53] 利用坐标下降优化,其中每层的缩放因子和位码是按顺序优化的。这导致了无反向传播的迭代,主要涉及点积和舍入操作,而不使用任何超参数。
4) 带噪声偏差的量化误差:量化方法多种多样,EasyQuant [54] 建议的线性量化器使用余弦相似性,而 PTQ4ViT [42] 建议的非线性量化器则使用黑森度量指导。在一项新颖的贡献中,NoisyQuant [55] 引入了一种与量化器无关的方法,该方法通过在量化之前将 Noisy Bias 合并到输入操作中来增强量化过程。具体来说,噪声偏差 N 是从均匀分布 N ∼ U (−n,n) 中提取的,其中边界由 x≤n≤2b−x 确定。搜索最优 n 采用量化误差函数,该函数使用方程 14 和 方程 15 中定义的校准数据子集进行优化。
5) 无数据校准:PSAQ-ViT [56] 为ViT引入了一种创新的无数据量化方法,该方法在校准过程中避免了对真实图像的需求。利用 ViT 的自我注意力模块中补丁相似性固有的多样性,PSAQ-ViT 利用这种相似性的差分熵作为指导高斯噪声的优化。这个过程旨在近似真实图像的分布,如图 8 所示。为了增强这种方法,PSAQ-ViT V2 [57]采用了自适应师生模式,其中合成样本是在全精度(教师)模型的指导下生成的。这是通过旨在最小化模型差异的 minmax 游戏实现的。值得注意的是,此版本消除了对辅助类别指导的依赖,转而支持独立于任务和模型的先验,从而扩大了其在各种视觉任务和模型中的适用性
6) 浮点格式:Lee等[58]对定点和浮点格式的误差模型进行了全面分析,旨在确定校准过程中最合适的数字格式。
LLM-FP4 [59] 进一步深入研究了浮点量子化的领域,详细阐述了 f loating-point 变量的公式及其量化。该研究强调了仔细选择指数位和缩放参数以确保有效量化结果的重要性。研究人员引入了一种基于搜索的算法来确定每层的最佳格式和剪辑范围,专门解决了与浮点量化相关的独特挑战。此外,LLM-FP4 还提出了一种创新的预移位指数偏置方法。这种方法在管理 transformer 模型中经常遇到的高通道间方差方面特别有效,从而提高了激活量化的精度。
总结和比较分析:表 III 中展示的比较结果揭示了对 PTQ 性能的重要见解。很明显,大多数 PTQ 方法都针对 8 位量化进行了优化,这表明量化到小于 8 位可能会导致精度损失。在校准过程中应用逐层重建误差被证明是有效的。然而,这种技术需要延长校准时间才能确定合适的量化比例因子。
此外,LLM-FP4 [59] 在指数位和尾数位数量有限的情况下产生了令人鼓舞的结果。这凸显了在减小的位宽下实现浮点格式进行量化的实用性,表明在现有和即将推出的硬件架构上实现显著效率改进的前景。
C. QAT 的梯度基优化
QAT 已成为模型量化的一种有效方法,特别是在解决 PTQ 的约束方面。PTQ 从预先训练的全精度模型中确定量化参数,这通常会导致性能欠佳,而 QAT 则可在训练周期中无缝集成量化。事实证明,这种方法在缩减到超低位精度(例如 4 位或更低)时特别有用,因为 PTQ 往往会遭受明显的性能损失。
QAT 通过将量化整合到反向传播过程中,有效地减少了通常与量化相关的性能下降。然而,QAT 并非没有挑战。关键问题包括难以近似不可微分量化函数的梯度以及量化振荡的发生,这可能会阻碍优化过程。
本节深入探讨了通过创新的基于梯度的优化技术来提高量化 ViT 的效率和有效性而开发的各种策略。
1) 用于分组分配的可微搜索:量化前者 [60] 利用熵信息作为容量感知指标,通过最小化量化和全精度自我注意层之间的差异来保持自我注意力排名的一致性。这种方法以最小的计算成本有效地维护了自我注意的等级顺序。此外,[60] 引入了一种可微搜索机制,旨在对补丁特征维度进行最佳分组。这可确保同一组中的 patch 特征采用统一的量化方法,使用通用阈值和量化级别。因此,此策略可缓解可变分布的 patch 特征之间的舍入和裁剪不准确。
2) 蒸馏辅助训练:知识蒸馏 (KD) [61] 是迁移学习领域中一种突出的方法,其中知识从更广泛的“教师”模型转移到更紧凑的“学生”模型。这种方法在减轻通过 QAT [62]、[63] 压缩的模型中遇到的精度损失方面特别有效。
Q-ViT [64] 遵循 [6] 在量化的 ViT 框架中包含一个蒸馏令牌,用于直接监督分类输出。为了抵消量化注意力模块中改变的分布,引入了信息校正模块(IRM)。IRM 在正向过程中运行,战略性地最大化信息熵以优化这些分布。同时,后向过程采用分销引导蒸馏 (DGD) 策略。这种方法的重点是通过采用注意力相似性损失来减少分布中的差异,有效地弥合了量化的 ViT 与其全精度模拟之间的差距。
GPUSQ-ViT [65] 利用硬标签、软 logits 和特征图的校准损失以及相应的权重因子。
Huang等[66]提出了一种新的量化技术,该技术可以感知变化。这种方法结合了多作物知识蒸馏策略,有助于稳定训练过程并减少 QAT 期间遇到的变化的影响。此外,[66] 提出了一种依赖于模块的量化方案,该方案根据每个模块的特定特性自动调整每个模块的量化过程。此外,为了解决训练过程中可能导致进一步不稳定的重量振荡问题,本文提出了一种振荡感知 Bin 正则化技术。这种方法旨在稳定重量分布并抑制振荡,从而增强整个训练过程。
3) 渐进式训练:由于损失景观的杂乱和非凸性,将实值预训练模型量化为极低位表示带来了重大挑战。TerViT [67] 引入了一种创新方法,其中 8 位模型最初被量化和训练,然后转移到三重体重量训练。在此基础上,比特收缩 [68] 引入了一种新技术,该技术涉及控制与量化过程中引入的噪声密切相关的“锐度”项。这种方法有效地平滑了损失态势,这对于保持模型的准确性至关重要。这种更平滑的过渡是通过逐渐减小模型的位宽,同时调节锐化度的任何增加来实现的。这种策略可确保在整个量化过程中保持模型的准确性。
4) 异常值感知训练:PackQViT [69] 引入了一种异常值感知训练方法,与 [43] 中计算校准 ibration 期间 2 的幂因子的方法不同。在 PackQViT 的每次训练迭代中,该过程首先使用 l2 最小化搜索通道索引和每个异常值的 2 次幂系数。在此之后,它会更新量化参数以减轻异常值的不利影响。
5) 无振荡训练:QFQ [70] 研究了量化感知训练中的权重振荡如何对模型性能产生负面影响,强调了可学习比例因子在加剧这个问题中的作用。它提出了三种技术来缓解这个问题:用于稳健量化的统计权重量化 (StatsQ)、用于稳定振荡权重的置信度引导退火 (CGA) 和用于解决 ViT 自我注意力层中交织振荡的查询键重新参数化 (QKR)。
总结和比较分析:比较结果如表 III 所示。表 III 中提供的比较数据揭示了 PTQ 和 QAT 方法之间的不同性能趋势。值得注意的是,与 PTQ 相比,QAT 方法表现出卓越的结果,即使在量化到极低的位宽(如 4 位)时也能实现无损精度,尽管训练成本更高。尽管蒸馏感知训练对硬件的内存要求更高,但在所检查的方法中表现出最高的性能。
此外,保持 4 位精度的能力激发了人们对专用硬件加速器的兴趣,这些加速器可以在此位宽下进行高效计算。这反映了在不影响结果质量的情况下优化计算资源的日益增长的趋势。
D. 二进制量化
Vision Transformers (ViT) 中的二进制量化引入了超紧凑的 1 位参数,大大减小了模型大小,同时实现了高效的按位运算。这种方法显著降低了计算需求,但由于性能大幅下降而面临挑战,这主要归因于参数精度的明显降低。这种减少阻碍了 themodel 处理复杂信息的能力。本节深入探讨了为应对这些挑战而开发的一系列创新方法,重点是增强二进制量化过程以平衡效率和性能保留。
BiViT[71] 提出了 Softmax 感知二进制化,它对二进制化过程进行了物理调整,减少了在二进制化 softmaxattention 值时通常出现的 rors。
这使得 Xiaoet al. [72] 更准确地表示了注意力机制,包括一种新的梯度正则化方案 (GRS) 来减轻重量振荡二值化训练和激活转移模块 (ASM) 以最小化信息失真失活。
BinaryViT[73] 将 CNN 的关键架构特征集成到纯 ViTs 架构中,而无需引入 con 卷积。具体来说,它集成了诸如全局平均池化而不是 cls-token 池、multipl eaverage 池化分支、残差连接前的仿射变换和金字塔结构等功能,如图 9 所示。这些创新旨在显著提高 ViT 的代表能力和计算效率。
总结和比较分析:表的检查揭示了二进制量化方法的稀缺性,表明了该领域固有的实质性挑战。表格结果强调了明显的精度不足,相对于全精度模型,差距超过 10%。这描述了二进制量化固有的权衡:计算开销和存储的减少被模型保真度的降低所抵消。尽管如此,目前的研究轨迹是有希望的。将二进制量子化与辅助模块或小说建筑公式化相结合的整合方法[73],[72],具有潜在的催化进步。这些冒险重定向到调和二进制量化的效率与稳健模型准确性的保留。
5、 硬件加速量化VIT
在目标硬件上充分利用 Quantization 的优势,例如减少内存消耗和提高计算能力,这一点至关重要。在本节中,我们讨论了非线性运算的限制,并概述了 Sec.V A 中的优化。之后,我们在 Sec.V-B 中介绍了具有 ViTs 特定注意事项的硬件加速器。
A. 加速非线性运算
在量化 ViT 的背景下优化非线性运算至关重要,原因如下。首先,低位计算单元是量化的核心,在计算效率和减少内存占用方面具有显著优势。然而,这些单元主要针对线性运算进行了优化,并且通常缺乏对基本非线性运算的原生支持,例如 GELU、LayerNorm 和 Softmax,它们是 ViTs 架构不可或缺的一部分。这种差异带来了巨大的挑战,因为缺乏高效的非线性计算机制会抵消量化提供的优势,从而导致处理速度和能源效率的瓶颈。
此外,依赖 32 位浮点 (FP32) 算术单元来处理非线性运算会带来大量开销。ViT 模型中的大部分推理时间被浮点非线性激活、归一化以及相关的量化和反量化操作所消耗 [31]。这不仅降低了吞吐量,还增加了能耗,从而破坏了量化的潜在收益。
优化的主要思想是将浮点非线性运算替换为不必要的 Quantization 和 Dequantization 的整数近似值,以便它们在专用硬件加速器中实现起来更快、更便宜。
如表 IV 所示,我们在后续部分中介绍了旨在进一步提高 ViT 推理效率的优化技术。
FQ-ViT [43] 引入了“Log-Int-Softmax”,这是 softmax 函数的纯整数变体,它使用二阶多项式 [74] 近似指数分量。该方法与 Log2 量化相结合,以实现高效的计算。对于 LayerNorm,FQ-ViT 应用了 2 的幂次方比例因子来移动量化激活,然后使用整数算术计算平均值和方差,从而增强硬件兼容性。
PackQViT [69] 避免使用二阶多项式 ap 接近,而采用一种更直接的方法,即在 softmax 方程中用 2 替换自然常数 e。这种简化导致在重新训练后不会有明显的准确率损失。
I-ViT [20] 采用“shiftmax”,将 softmax 函数中的指数转换为以 2 为底,利用基数变化公式通过移位提高运营效率。此外,I-ViT 使用一种轻量级的、基于整数的迭代方法计算 LayerNorm 中的平方根,该方法的灵感来自牛顿方法,根据 [74],并通过移位增强功能进一步完善。对于 GELU 近似模拟,引入了 “ShiftGELU”,它使用基于 sigmoid 的近似,并将幂运算和除法简化为主要的移位运算。I-ViT 的概述如图 10 所示。
EdgeKernel [24] 通过仔细检查理想移位参数 M 的选择来解决 softmax 除法运算中固有的精度挑战,该参数对于主保留精度至关重要,同时避免了明显的位截断。它还实现了 uint16 数据类型的 LayerNorm 输入的非对称量化,从而平衡了计算效率和保持数据完整性的需求。
尽管避免了浮点和整数格式之间的数据类型转换,但以前的研究仍然依赖于高精度乘法和宽位宽数据存储(例如,INT32)。SOLE [23] 引入了 E2Softmax,它使用定点算术处理 8 位量化输入。这种方法采用 log2 量化、后幂和近似对数除法,避免了传统的高精度运算。此外,SOLE em通过2的幂数[43]对层归一化统计进行动态压缩,并创新性地设计了一个两阶段的LayerNorm单元。这种设计有助于流水线计算和灵活的批处理,具有强大的容错能力并减少缓冲和乘法。
B. 用于量化 ViT 的硬件加速器
为量化 ViT 设计特定的硬件加速器是必不可少的,因为它们具有独特的计算需求,例如复杂的注意力机制和不寻常的内存访问模式,而通用硬件无法有效地处理这些需求。这些加速器可以进行优化,以应对量化的挑战,在降低精度的同时保持模型性能,对于满足边缘设备严格的能效和低延迟要求至关重要。定制硬件解决方案支持在各种应用程序中扩展和节能地部署 ViT,确保实时处理能力并遵守边缘计算环境典型的资源限制。为了更深入地了解硬件加速器的基础架构,我们将读者引导至 [75]、[76]、[77]。在后续段落中,我们深入研究了加速量化 ViT 的现有硬件设计,并在表 V 中进行了总结。
VAQF [78] 讨论了优化 FPGA 实现的 Vision Transformer (ViT) 模型。这包括从使用 16 位定点表示的基线开始以减少计算和存储需求,实施数据打包技术以最大限度地减少块 RAM 使用和数据传输延迟,以及通过确定最佳平铺大小来最大化计算并行性。加速器可以处理量化和未量化计算,并未量化层设置特定参数。最后,对参数进行微调以满足所需的帧速率目标,编译步骤确定激活所需的精度。
Auto-ViT-ACC [79] 引入了一个包罗万象的框架,该框架具有探索设计空间的机制、用于建模 FPGA 资源利用的模块以及为视觉转换器 (ViT) 中的多头注意力机制量身定制的创新 FPGA 计算引擎。该框架旨在自主确定量化位宽和方案混合比的最佳组合,以实现指定的目标帧速率 (FPS),从而有效地指导量化过程和 FPGA 加速器的设计。
Huang等[22]为非线性运算实现了一种纯整数量化策略,以简化计算,增强与边缘设备的兼容性。他们方法的一个关键改进是多功能的群向量系统阵列,该阵列针对矩阵乘法任务的高效执行进行了优化。此外,该框架采用统一的数据打包策略,促进高效的数据移动和存储,以及动态片上/片外数据存储管理策略,这对于保持高吞吐量和低延迟至关重要。
SOLE [23] 设计定制硬件以实现高效的反式推理,优化 Softmax 和 LayerNorm 操作。如图 11 所示,它的 E2Softmax 单元避免了大型查找表和乘法运算,对指数函数输出使用 log2 量化,并以 4 位表示形式存储中间结果,从而减少了内存使用。该装置还集成了在线归一化和乒乓缓冲液,最大限度地提高了通量。另一方面,AILayerNorm Unit 使用低精度统计计算、动态压缩和双因子幂量化,em 为平方函数和移位运算提供了一个 16 个条目的查找表,并促进了数据通过乒乓缓冲区的平滑流动。
6、结论和未来方向
在本文中,我们系统地研究了 ViT 的量化和硬件加速方法,解决了它们部署的挑战。ViT 的特点是其独特的自我注意模块,特别需要定制的量化技术,可在不牺牲应用程序准确性的情况下实现最佳 Compension Rate。此外,高效计算、更高带宽、一组有限的操作和数据重用机会的集成指导了用于量化 ViT 的专用硬件加速器的开发。我们的调查涵盖了广泛的近期工作,为 ViT 的量化提供了全面的路线图。随后,我们进一步探索了各种方法之间的相互联系,为这一不断发展的领域的未来研究提出了方向。
Extremly Low-Bit:将 ViT 量化为低于 2 位表示的挑战,正如模型精度下降 10% 以上所强调的那样(在表 III 中引用),凸显了适应 ViT 的极低位量化的关键瓶颈。这种退化与在类似量化约束下在 CNN 中观察到的近乎无损的性能形成鲜明对比 [80],[81]。该领域的持续创新可以为实现高效的 ViTs 部署提供一条途径,同时将计算和内存占用降至最低。
低于 8 位的硬件:如表 V 所示,主流硬件环境主要面向 8 位计算。然而,即使在 PTQ 的上下文中,与 4 位量化算法相关的精度损失也很小,这凸显了开发为亚 8 位操作量身定制的加速器的可行性和潜在优势。设计这种低位加速器可以大大提高计算效率和吞吐量,降低能耗,并降低硬件成本。
与其他压缩方法的结合:将量化与其他压缩技术(如修剪)相结合,代表了一条未被充分开发但前景广阔的途径[15]。这种整体模型压缩方法可以显著减小大小和计算需求。
低级 ViT 量化:量化用于目标检测和图像生成等低级任务的 ViT 带来了明显的挑战 [82],[83],强调了保持性能的专用策略的重要性。这一领域需要进一步探索,以充分利用量化的效率,同时确保 ViT 在广泛应用中的有效性。
稳健性和泛化性:确保量化的 ViT 在不同任务和数据集中保持稳健性和泛化性至关重要。未来的研究应该调查量化对模型泛化能力的影响,并提出减轻任何不利影响的技术,从而提高模型在实际应用中的实用性。[81]