MPTQ-ViT: Mixed-Precision Post-Training Quantization for Vision Transformer

在ViT模型中,量化参数主要包括:

  • 权重(Weights):模型中的卷积核、自注意力模块的查询、键、值权重等参数。
  • 激活值(Activations):模型在前向传播过程中产生的中间结果,它们在每次前向传播后通常需要存储在内存中,因此量化激活值可以减少内存使用。

量化过程中通常涉及计算缩放因子(scaling factors),用于保持量化前后模型的输出在一定误差范围内保持一致,同时也会涉及到阈值(thresholds)的选择,以便在量化过程中对激活值进行裁剪和调整。

MPTQ-ViT(Mixed-Precision Post-Training Quantization for Vision Transformer)致力于解决Vision Transformer(ViT)在实际应用中面临的几个关键问题,主要包括:

  1. 非对称激活分布问题:ViT中的激活分布往往是非对称的,这对于对称量化方法来说是一个挑战。非对称分布可能导致大量大幅度值在量化过程中被截断,从而带来较大的精度损失。

  2. 非正态分布问题:ViT中的某些激活值(如经过GeLU激活函数后的值)呈现出非正态分布的特性,这使得直接应用现有的量化方法难以准确表示这些值,尤其是在低位宽量化(low-bit quantization)的情况下。

  3. 层间敏感度不均问题:ViT的不同层对量化的敏感度不同,但现有的量化方法往往忽略了这种层间差异,采用了统一的量化策略,这可能无法充分利用模型的冗余性,导致压缩效率不高。

为了解决这些问题,MPTQ-ViT提出了以下几个主要的技术方案:

  • SmoothQuant with Bias Term (SQ-b):通过引入偏置项来缓解激活值的非对称性问题,使得数据分布更加均匀,更适合对称量化。

  • Optimal Scaling Factor Ratio Search (OPT-m):采用数据驱动的方法自动确定量化参数,通过分析数据分布来确定不同区域的量化比例因子(Scaling Factors, SFs),以适应非正态分布的激活值。

  • Greedy Mixed-Precision Quantization (Greedy MP):设计了一个考虑模型性能和压缩性的贪心策略,用于有效确定权重和激活的层间位宽分配。这种方法可以根据不同层的敏感度和重要性来分配不同的位宽,从而在保持模型性能的同时提高压缩效率。

通过这些技术的结合,MPTQ-ViT能够在保持ViT模型性能的同时,显著提高模型的压缩率和量化后的精度,使得ViT模型更适合部署在资源受限的边缘设备上。

激活值(Activation Values)是深度学习模型中神经元在计算过程中的中间输出结果。

在神经网络中,每个神经元接收到输入信号后,会通过一个非线性函数(通常称为激活函数)对其进行处理,生成一个输出值。这个输出值就是激活值。 激活值的计算流程如下:

  1. 输入信号:神经元接收前一层神经网络的输出,或者对于输入层来说,直接接收原始数据(如图像像素值、文本特征等)。这些输入信号通常会与对应的权重(Weights)相乘,并累加偏置项(Bias)形成加权和。

  2. 激活函数应用:加权和作为激活函数的输入,经过激活函数的非线性变换得到输出。常见的激活函数包括Sigmoid、ReLU、Tanh、GeLU等。激活函数的作用是引入非线性特性,使神经网络能够学习和表达复杂的数据关系。

  3. 生成激活值:经过激活函数处理后的输出值即为激活值。这些激活值随后作为下一层神经元的输入,继续参与后续的计算过程。在反向传播过程中,激活值也是计算梯度的重要依据。

在Vision Transformer(ViT)模型中,激活值同样遵循上述产生过程,但具体的计算细节可能会有所不同。例如,ViT中的自注意力机制会产生特定形式的激活值(如查询、键、值向量),这些激活值用于计算注意力分数并更新特征表示。在量化过程中,研究者关注的就是如何有效地处理这些复杂的激活值分布,以减小量化带来的信息损失。MPTQ-ViT提出的SQ-b、OPT-m等技术就是针对这些激活值的非正态分布和不对称性进行优化,以提高量化模型的性能。

层间敏感度不均衡是指在深度神经网络中,不同层对量化过程的敏感度不同,即某些层对量化操作的响应强烈,量化后性能下降显著,而另一些层则对量化相对不敏感,性能影响较小。这种现象在ViT(Vision Transformer)模型中尤为明显,其原因可能包括以下几个方面:

  1. 层功能差异:不同层在网络中承担的功能和角色不同。例如,靠近输入层的层通常负责捕获底层特征,对细节和精度要求较高,量化可能对其造成较大影响。而高层可能更侧重于抽象和全局信息整合,对量化有一定的容忍度。这种功能差异导致了对量化敏感度的不均衡。

  2. 激活值分布差异:不同层的激活值分布特性各异,有些层的激活值可能较为集中,量化后信息损失较小;而其他层的激活值可能分布较广、存在较多极端值,量化后信息损失较大。激活值分布的差异直接影响了量化对该层性能的影响程度。

  3. 权重分布差异:类似地,不同层的权重分布也可能存在显著差异。权重分布紧密、动态范围较小的层在量化后可能保持较好的性能,而权重分布分散、动态范围大的层在量化后可能遭受较大的精度损失。

  4. 计算复杂度差异:不同层的计算复杂度不同,某些层可能包含大量的乘法和加法操作,这些操作在量化后可能导致累积误差增大,从而加剧了敏感度的不均衡。

MPTQ-ViT(Mixed-Precision Post-Training Quantization for Vision Transformer)通过引入Greedy Mixed-Precision Quantization (Greedy MP)策略,针对不同层的敏感度差异进行精细化的比特宽度分配。Greedy MP根据模型性能和压缩性要求,逐层贪婪地选择合适的比特宽度,以优化模型在不同比特精度下的性能表现。通过这种策略,MPTQ-ViT能够更好地适应不同层对量化敏感度的差异,从而提高整体量化效果。

激活值不对称性是指深度学习模型中,特别是ViT(Vision Transformer)模型中,激活值的分布呈现出显著的正负值范围不均衡的现象。这种不对称性主要由以下几个因素造成:

  1. 模型结构与计算特性:ViT模型基于自注意力机制,其内部计算过程(如注意力得分计算、加权求和等)可能导致某些通道或位置的激活值倾向于积累在正向或负向一侧,形成不对称分布。此外,ViT中可能存在的残差连接、Layer Normalization等组件也可能对激活值分布产生影响。

  2. 数据特性与输入特征:输入图像或数据本身的特性,如色彩、纹理、形状等,经由ViT模型的处理后,可能在某些通道或位置上产生偏向正或负的激活响应。特别是在处理复杂、非均匀分布的视觉数据时,激活值的不对称性更容易出现。

  3. 训练过程与初始化:模型训练过程中的参数更新、优化算法的选择、学习率策略、权重初始化方法等因素,都可能影响最终激活值的分布形态,包括产生不对称性。特别是在训练初期或收敛不稳定阶段,模型参数的变化可能导致激活值分布的剧烈波动和不对称现象。

  4. 非线性激活函数:ViT模型中使用的非线性激活函数(如ReLU、GELU等)对输入的响应是非对称的,即对正负输入的处理方式不同。这种非对称响应可以进一步加剧激活值的不对称分布。

MPTQ-ViT提出的SmoothQuant with Bias Term (SQ-b)技术正是为了解决激活值不对称性问题而设计的。SQ-b通过引入偏置项来调整激活值分布,使其更接近对称,从而更适应对称量化处理,有利于后续量化过程。这种调整有助于减少量化过程中因激活值不对称性导致的信息损失,提高量化模型的性能。

MPTQ-ViT并没有对原始Vision Transformer(ViT)的架构进行改动,而是专注于优化ViT模型在量化过程中的性能表现和内存效率。

它通过以下三个关键技术改进了ViT模型的量化过程:

  1. SmoothQuant with Bias Term (SQ-b):在后训练量化阶段,MPTQ-ViT引入了带有偏置项的SmoothQuant技术(SQ-b),以减轻激活值的不对称性问题,从而更精确地量化ViT内部的激活值分布,有助于在低比特量化环境下保持模型的精度。

  2. Optimal Scaling Factor Ratio Search (OPT-m):针对GeLU激活函数之后的值,MPTQ-ViT提出了基于数据依赖机制的最优缩放因子搜索方法(OPT-m),自动确定合适的量化参数,免去了人工设定,使模型在量化过程中能够根据数据自身特点动态调整缩放因子,提高量化性能。

  3. Greedy Mixed-Precision Quantization (Greedy MP):MPTQ-ViT设计了一种贪婪的混合精度量化策略,该策略根据模型每一层的性能和压缩性,采用贪心方法逐层减少比特宽度。通过这种方式,MPTQ-ViT能够充分利用每一层的冗余,同时最小化对模型性能的影响,从而实现更为激进且有针对性的量化策略。

通过集成上述三项技术,MPTQ-ViT不仅提升了ViT在低比特量化条件下的准确率,而且在保证模型压缩比的同时,实现了对ViT模型的混合精度后训练量化,使其更适合于资源受限环境下的部署和运行。

SQ-b技术(SmoothQuant with Bias Term)是为了解决ViT模型量化过程中激活值不对称性问题而提出的一种量化策略。它通过以下方式改进上述问题:

  1. 引入偏置项:SQ-b在量化前对激活值进行调整,通过添加一个偏置项来改变激活值的分布,使其更接近对称。这样做有助于缓解量化过程中由于激活值不对称性导致的信息损失。

  2. 调整量化范围:通过对激活值施加偏置项,SQ-b可以有效地调整量化过程中的量化范围,使得量化后的数据更接近原始浮点模型的分布,从而减少量化误差。

  3. 减少钳制损失:激活值的不对称性可能导致量化后的数据被强制“钳制”在量化间隔的边界上,导致信息损失。通过引入偏置项,SQ-b能够缓解这种现象,降低钳制损失,提高量化精度。

  4. 保持模型等价性:在添加偏置项的同时,SQ-b确保了量化前后模型的等价性,即量化模型在功能上与浮点模型相同,只是参数表示形式发生了变化。这有助于保持模型的预测性能,避免因量化而引入的额外误差。

SQ-b技术通过引入偏置项、调整量化范围、减少钳制损失和保持模型等价性等方式,有效地改进了ViT模型量化过程中激活值不对称性问题,提高了量化模型的性能。

OPT-m技术(Optimal Scaling Factor Ratio Search)旨在改进ViT模型量化过程中激活值非正态分布和不对称性的问题。具体改进措施如下:

  1. 自适应缩放:针对ViT模型中GeLU激活函数输出的非正态分布特性,OPT-m自动搜索并确定适用于这些激活值的最优缩放因子比例。这意味着,对于不同分布特性的数据,OPT-m能够灵活地调整缩放参数,确保量化过程中对数据的表示更为精确。

  2. 精细化处理:传统量化方法可能对所有激活值采用统一的量化策略,无法精细处理非正态分布和不对称性。而OPT-m通过数据依赖的方式,针对GeLU输出的不同区域(如负值区、小正值区、大正值区)分别设置不同的缩放因子,实现精细化量化,有效减少了量化误差。

  3. 减少信息损失:由于GeLU激活函数输出的非正态分布和不对称性可能导致量化时的信息丢失,OPT-m通过搜索最优缩放因子比例,确保在量化过程中尽可能保留更多的原始信息,从而提高量化模型的精度和性能。

  4. 硬件友好性:为了便于硬件实现,OPT-m设计的缩放因子可以通过快速对齐操作(如左移位)来实现,使得量化后的模型在硬件上执行更加高效,同时避免了不必要的计算开销。

OPT-m技术通过自适应缩放、精细化处理、减少信息损失以及硬件友好的实现方式,有效改进了ViT模型量化过程中激活值非正态分布和不对称性的问题,提升了量化模型的性能。

Greedy MP技术(Greedy Mixed-Precision Quantization)旨在改进ViT模型量化过程中存在的激活值不对称性问题。具体改进措施如下:

  1. 逐层优化:Greedy MP采取逐层递归的方式,逐步降低模型权重和激活值的比特宽度,以达到预定的总比特宽度目标。这样可以针对每一层的具体情况,精细化调整量化参数,适应各层对量化敏感度的差异,从而改善整体模型的量化效果。

  2. 量化优先级选择:在量化过程中,Greedy MP通过计算每一层的量化选择指标αl,该指标结合了模型性能(如信号与量化噪声比SQNR)和压缩效益(如层元素数量),以评估进一步量化该层的潜在影响。这样可以优先对量化敏感度较低、对模型性能影响较小的层进行量化,从而减少对模型整体性能的影响。

  3. 比特宽度分配:在逐层量化过程中,Greedy MP根据每一层的量化优先级,贪婪地选择合适的比特宽度。这种策略能够在满足模型性能要求的同时,根据每一层的特性和敏感度智能地分配不同的比特宽度,从而实现模型的压缩和性能的优化。

  4. 综合性能考虑:Greedy MP在量化过程中不仅关注模型的精度,还考虑了模型的压缩效率。通过结合模型性能和压缩性要求,Greedy MP能够找到在特定资源约束下最优的量化策略,从而在保证模型性能的同时,尽可能减小模型的存储和计算需求。

综上所述,Greedy MP技术通过逐层优化、量化优先级选择、比特宽度分配以及综合性能考虑等手段,有效地改进了ViT模型量化过程中存在的激活值不对称性问题,提高了量化模型的精度和压缩效率。

L2 distance,也被称为欧氏距离(Euclidean Distance),是一种常用的度量两个向量或点之间距离的方法。

在数学和机器学习领域,对于两个向量 xy,它们的L2距离定义为:

$$ \text{L2 distance}(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2} $$

其中,x = (x1, x2, ..., xn) 和 y = (y1, y2, ..., yn) 分别代表两个 n 维向量,xi 和 yi 表示各自向量在第 i 维上的分量。L2距离计算的是这两个向量对应分量之差的平方和,然后取平方根,得到的结果是一个非负实数,表示了向量 xy 在几何意义上的距离。

在MPTQ-ViT一文中,提到的L2距离可能用于衡量:

  • 量化前后模型输出之间的差异:量化过程会导致模型参数和激活值从全精度(FP)变为低精度(如INT8、INT4),可能会引入一定的误差。通过计算量化模型和FP模型在相同输入下的输出向量之间的L2距离,可以量化评估量化带来的精度损失。

  • 特征向量或参数向量的变化:在模型训练、优化或量化过程中,可能需要比较同一模型在不同阶段或不同设置下的特征表示或参数向量。使用L2距离可以衡量这些向量在空间上的变化程度,反映模型内部状态的变化。

  • 量化参数与理想值的偏差:在量化技术中,可能需要调整某些参数(如缩放因子、阈值等)以优化量化效果。L2距离可以用来度量调整后的参数向量与理论最优或期望值之间的差距,评估参数优化的成效。

总之,L2距离是一种通用的距离度量工具,在MPTQ-ViT一文中,具体应用可能需要结合上下文理解,但其核心作用是定量描述两个向量之间的相似度或差异。

在MPTQ-ViT一文中,FP值通常指的是“Full Precision”(全精度),即未经过量化处理的原始浮点数值。

在深度学习模型中,模型参数(如权重)和中间计算结果(如激活值)通常以32位或64位浮点数形式存储和计算,这就是所谓的全精度表示。全精度数值可以提供非常高的数值精度和动态范围,但相应的存储和计算成本也较高。

在模型量化过程中,FP值作为参考或基准,用于衡量量化模型(如8-bit、4-bit量化模型)与原始未量化模型(即FP模型)在性能上的差距。例如,当报告量化模型的Top-1准确率与FP模型的Top-1准确率之比时,FP模型的准确率即为FP值,用于体现量化对模型精度的影响。因此,FP值在量化研究中常用来作为评估量化效果的重要参照点。

Q.E.D.