Effective Interplay Between Sparsity and Quantization: From Theory to Practice
Effective Interplay Between Sparsity and Quantization: From Theory to Practice
作者/机构: Simla Burcu Harma (EcoCloud, EPFL), Ayan Chakraborty (EcoCloud, EPFL), Elizaveta Kostenok (EcoCloud, EPFL), Danila Mishin (EcoCloud, EPFL), Dongho Ha (MangoBoost Inc.), Babak Falsafi (EcoCloud, EPFL), Martin Jaggi (EcoCloud, EPFL), Ming Liu (Google), Yunho Oh (Korea University), Suvinay Subramanian (Google), Amir Yazdanbakhsh (Google DeepMind)
A1 主要贡献
本文系统性地研究了深度神经网络(DNNs)中稀疏性(Sparsity)与量化(Quantization)这两种主流模型压缩方法之间的相互作用。
-
核心问题:随着DNN模型规模的指数级增长,其部署和高效服务面临着计算密度、内存占用和内存带宽的巨大挑战。稀疏性和量化是解决这些问题的关键压缩技术,但学术界和工业界普遍默认这两种方法是正交的(Orthogonal),即它们的组合使用不会引入超出各自独立使用时产生的额外误差。本文旨在挑战这一假设,并深入探究它们之间的相互作用机制。
-
研究目标与假设:本文的研究目标是系统性地分析稀疏性与量化的相互作用,并确定最佳的应用顺序以在最大化硬件资源效率的同时不损害模型精度。作者基于以下两点洞察提出假设:稀疏性与量化是非正交的。
- 先量化后稀疏(Q→S)可能会破坏张量元素的相对重要性,导致本应保留的重要元素被错误地剪枝,从而严重影响模型精度。
- 先稀疏后量化(S→Q)虽然是更优的顺序,但由于点积计算受到元素幅值和精度的双重影响,其复合误差仍需仔细研究。
-
创新点与主要贡献:
- 稀疏性与量化的非正交性证明:本文首次从数学上证明了稀疏性与量化是非正交操作。逐层误差分析表明,两者的结合会引入复合误差,导致模型精度下降,这挑战了传统观念中认为这两种方法可以无缝结合的看法。
- 确证最佳压缩顺序:尽管“先稀疏后量化”(S→Q)是常见的做法,但其最优性并未在文献中得到正式证明。本文首次提供了数学证明,证实S→Q是最佳顺序。此外,文章还推导出了在张量级别上,采用次优顺序(Q→S)所导致误差的上限,并表明该上限与张量中的元素数量和量化区间的尺寸呈线性关系。
- 非正交性的经验证:通过在包括大型语言模型(OPT、LLaMA,参数量从1.25亿到80亿)和视觉模型(ViT、ResNet)在内的多种模型上进行实验,本文验证了其数学发现。实验结果证实了稀疏性与量化的非正交性以及S→Q为最佳应用顺序。实验表明,即使采用最佳顺序,稀疏性与量化的结合仍可能导致困惑度(perplexity)额外增加高达13%。
A2 方法细节
3 稀疏性与量化的非正交性
数学分析框架。本节对稀疏性和量化之间的相互作用进行了数学分析,形式化了这些压缩方法,并分别在张量(tensor)和点积(dot-product)两个层面考察了它们的组合(在数学上称为复合)。本文中,“张量层面”指同时包含权重和激活张量的结构;“点积层面”则指这些张量内部的内积计算,例如前向传播过程中的权重与激活的矩阵乘法。分析重点是使用分块数值格式(block-wise numerical formats)降低模型权重和激活位宽的量化方法,这些方法在实际应用中非常普遍【索引6,Bita Darvish Rouhani et al. Pushing the limits of narrow precision inferencing at cloud scale with microsoft floating point+2020+NeurIPS】,【索引13,Mario Drumond et al. Training DNNs with Hybrid Block Floating Point+2018+arXiv】,【索引103,Sai Qian Zhang et al. Fast: Dnn training under variable precision block floating point with stochastic rounding+2022+HPCA】,【索引83,Bita Darvish Rouhani et al. With shared microexponents, A little shifting goes a long way+2023+ISCA】,【索引63,Paulius Micikevicius et al. FP8 formats for deep learning+2022+arXiv】。这些格式根据块内最大绝对值元素来确定缩放因子。本文将任何采用这些数值格式的量化方法称为最大值缩放的分块量化(max-scaled block-wise quantization)。稀疏性方面,本文采用了基于幅值的稀疏化方法,涵盖了非结构化和N:M结构化稀疏。
最大值缩放的分块量化定义。定义3.1(最大值缩放的分块量化):令 $x \in R^n$ 为一个包含 n 个数值的块,m ∈ N 表示量化位宽。最大值缩放的分块量化 $q : R^n \rightarrow R^n$ 是对块 $x$ 的一种转换,使得:
$$x_i \xrightarrow{q} Q_m(x_i, scale)$$其中 scale = max(|x1|, . . . , |xn|) 是缩放因子。$Q_m(\cdot, \text{scale})$ 使用缩放因子 scale 和尾数位数 m 对给定元素进行量化。$Q_m$ 的具体形式取决于数值格式,可在附录K中找到。例如,INTm量化转换为:
$Q_m(x_i, \text{scale}) = s \cdot \lfloor \frac{x_i}{s} \rceil_m$,其中 $s = \frac{\text{scale}}{2^{m-1} - 1}$,且 $\lfloor\cdot\rceil$ 是四舍五入到最近整数的操作。
基于幅值的稀疏性定义。定义3.2(基于幅值的稀疏性):令 $x \in R^n$ 为一个包含 n 个数值的块。假设 n 可以被 M 整除,我们考虑块中每 M 个元素为一组。基于幅值的N:M稀疏性变换可以表示为:
$$\begin{aligned} \tilde{x}_i := \begin{cases} 0 & \text{if } |x_i| < \xi \\ x_i & \text{otherwise} \end{cases}, \text{for } i = 1, 2, ..., M \end{aligned}$$其中 $\xi$ 是集合 ${|x_1|, \dots, |x_M|}$ 中第 N 大的元素。同样的公式可以通过定义 $\xi$ 为张量中第 N 大的元素来表示 p% 的非结构化稀疏,其中 N = $\lfloor M \cdot p/100 \rceil$,M 是张量中的元素总数,$\lfloor\cdot\rceil$ 是四舍五入到最近整数的操作。
分析层次。在本节的后续部分,我们将从两个不同层面深入探讨稀疏性与量化的复合。首先,我们在张量层面考察不同顺序应用这种复合操作的影响,观察单个张量是如何被改变的。然后,我们探讨这种复合操作如何影响点积运算的结果。
3.1 张量层面分析
误差与正交性定义。稀疏性和量化变换通过降低精度或剪枝张量元素,本质上会引入误差。为了研究张量层面稀疏性和量化变换的复合,我们引入了变换误差和压缩中正交性的正式定义。我们证明了稀疏性和量化之间的压缩正交性在这种复合中并不成立。
变换误差的定义。以下定义在块级别(由张量元素子集构成)上形式化了特定变换的误差。定义3.3(变换误差):令 $x \in R^n$ 为一个包含n个数的块,它是变换 $f: R^n \rightarrow R^n$ 的输入。我们定义 $\epsilon_f(x) := x - f(x)$ 为变换f的误差。
块级分析到张量级的扩展。定义3.3虽然是在块级别定义的,但可以扩展到张量级别。张量的累积误差可以看作是其所有构成块的单个误差的总和。因此,在块级别分析的定理对于扩展到张量级别的行为具有指示意义。
复合误差的引入。复合两种压缩方法(变换)预计会引入额外的误差。第一个变换引入的任何误差都会成为第二个变换输入的一部分,可能会放大初始误差并导致更大的总误差。
张量层面正交性的定义。定义3.4(张量层面正交性):如果两个变换 $f$ 和 $g$ 的任意复合顺序都不会引入任何额外误差,我们称它们在压缩中是正交的。因此,以下不等式成立:
$\forall x \in R^n, |\epsilon_{g \circ f}(x)| \le |\epsilon_f(x)| + |\epsilon_g(x)|$ 且 $|\epsilon_{f \circ g}(x)| \le |\epsilon_f(x)| + |\epsilon_g(x)|$,其中 $|\cdot|$ 是 $L_p$ 范数,$p \in [1, +\infty)$。
先稀疏后量化(S→Q)的误差分析。定理3.5:令 $q$ 为最大值缩放的分块量化,s 为基于幅值的稀疏性变换。先应用稀疏性再应用量化不会引入任何额外误差:
$$\forall \mathbf{x} \in \mathbb{R}^{n},\|\varepsilon_{q \circ s}(\mathbf{x})\| \leq\|\varepsilon_{q}(\mathbf{x})\|+\|\varepsilon_{s}(\mathbf{x})\|$$此外,等式是可以达到的。
定理3.5的证明思路。定理3.5的证明可在附录J中找到。证明背后的主要思想是,由于稀疏性变换不会剪枝块中的最大元素,量化的缩放参数保持不变。因此,非零分量在稀疏化前后的量化误差保持相同。
先量化后稀疏(Q→S)的误差分析。定理3.6:令 $q$ 为最大值缩放的分块量化,s 为基于幅值的稀疏性变换。先应用量化再应用稀疏性可能会引入额外误差:
$$\exists \mathbf{x} \in \mathbb{R}^{n},\|\varepsilon_{s \circ q}(\mathbf{x})\|>\|\varepsilon_{q}(\mathbf{x})\|+\|\varepsilon_{s}(\mathbf{x})\|$$Q→S顺序下额外误差的上界。此外,对于这种特定变换顺序(Q→S)产生的额外误差存在一个全局上界。这个上界仅由量化方法和稀疏类型的参数决定,与输入数据无关。下面的定理精确地量化了这个额外误差的大小。
Q→S顺序下额外误差的具体上界。定理3.7:令 $q$ 为最大值缩放的分块量化,s 为基于幅值的N:M稀疏性变换。令 step 为单个元素量化误差幅值的最小上界:step = sup{$|\epsilon_q(x)_i| | x \in R^n, i \in {1 \dots n}$}。那么,对于 L1 范数,复合 $s \circ q$ 的误差有如下上界:
结论:最优顺序与非正交性。定理3.7对所有Lp范数的一般形式以及定理3.6和3.7的证明可在附录J中找到。作为定理3.5、3.6和3.7的推论,可以得出变换的最佳顺序是先稀疏后量化,因为这个序列不会引入任何额外的误差。此外,根据定义3.4,稀疏性和量化在张量层面上是非正交的。
3.2 点积层面分析
点积误差分析的背景。在本节中,我们深入研究与点积操作相关的误差,这是DNN中的主要操作。我们的分析侧重于权重张量经历稀疏性和量化,而激活张量仅经历量化的场景。我们首先将变换误差的定义扩展到点积层面。
点积变换误差的定义。定义3.8(点积上的变换误差):令 $x, w \in R^n$ 表示变换 $f : R^n \rightarrow R^n$ 和点积操作 $\langle \cdot, \cdot \rangle : R^n \times R^n \rightarrow R$ 的输入。我们定义 $\epsilon_f^D(x, w) := \langle x, w \rangle - \langle f(x), f(w) \rangle$ 为变换 $f$ 在点积上的误差。类似地,当对 x 和 w 应用不同变换时,我们定义 $\epsilon_{f,g}^D(x, w) := \langle x, w \rangle - \langle f(x), g(w) \rangle$ 为点积上的误差。
点积层面正交性的定义。在点积层面,我们定义两种压缩方法为正交的,如果它们的任意顺序复合不引入额外误差,这与定义3.4类似。
点积层面正交性的形式化定义。定义3.9(点积层面正交性):令 $x, w \in R^n$ 表示变换 $f : R^n \rightarrow R^n$ 和 $g : R^n \rightarrow R^n$ 以及点积操作 $\langle \cdot, \cdot \rangle : R^n \times R^n \rightarrow R$ 的输入。假设变换 f 应用于 x 和 w,而变换 g 仅应用于 w。令 c 表示 f 和 g 的任意顺序复合,即 $c := f \circ g$ 或 $c := g \circ f$。如果对第二项 w 应用的任意顺序复合不引入任何额外误差,我们定义变换 f 和 g 在点积层面上是正交的:
$$\forall \mathbf{x}, \mathbf{y} \in \mathbb{R}^{n},\left|\varepsilon_{f, c}^{D}(\mathbf{x}, \mathbf{w})\right|<\left|\varepsilon_{I, g}^{D}(\mathbf{x}, \mathbf{w})\right|+\left|\varepsilon_{f}^{D}(\mathbf{x}, \mathbf{w})\right|$$任意复合顺序下均产生额外误差的证明。在下面的定理中,我们证明稀疏性和量化的任何复合都会产生额外误差,使得这两种方法非正交。
点积层面非正交性定理。定理3.10:令 $q$ 为最大值缩放的分块量化,s 为基于幅值的稀疏性变换,c 为 $s \circ q$ 或 $q \circ s$ 的复合,I 为恒等函数。在仅对第二个操作数(即权重)进行剪枝的情况下,最大值缩放量化 q 和稀疏性 s 的任意顺序复合都会产生额外误差:
$$\exists \mathbf{x}, \mathbf{w} \in \mathbb{R}^{n}, |\varepsilon_{q, c}^{D}(\mathbf{x}, \mathbf{w})| > |\varepsilon_{I, s}^{D}(\mathbf{x}, \mathbf{w})| + |\varepsilon_{q}^{D}(\mathbf{x}, \mathbf{w})|$$此外,
$$|\varepsilon_{q,c}^{D}(\mathbf{x}, \mathbf{w})| \leq|\varepsilon_{I,s}^{D}(\mathbf{x}, \mathbf{w})|+|\varepsilon_{q}^{D}(\mathbf{x}, \mathbf{w})|+\overbrace{|\langle q(\mathbf{x}), \tilde{\varepsilon}_{c}(\mathbf{w})\rangle|}^{\varepsilon_{t}}+\overbrace{|\langle\varepsilon_{q}(\mathbf{x}), \varepsilon_{s}(\mathbf{w})\rangle|}^{\varepsilon_{i}}$$其中 $\tilde{\epsilon}_c(x)$ 定义为复合的校正误差向量:
$$\varepsilon_{c}(\mathbf{x})=\varepsilon_{q}(\mathbf{x})+\varepsilon_{s}(\mathbf{x})+\tilde{\varepsilon}_{c}(\mathbf{x})$$定理3.10的证明位置。定理3.10的证明可在附录J中找到。
额外误差分析。作为定理3.10的推论,最大值缩放的稀疏性与量化的复合是非正交的,会导致两个额外的误差项。
- 误差项 $\epsilon_t$:该项包含了复合的校正向量 $\tilde{\epsilon}_c$,它将张量层面的额外误差带到了点积层面。$\epsilon_t$ 的值取决于复合的顺序。当先进行量化时,块内的某些元素可能因量化而变得相等,导致稀疏步骤剪枝的元素与在原始张量上不同。这会引入额外误差,因为之前重要的元素可能被无意中剪枝。如果先进行稀疏,校正向量 $\tilde{\epsilon}_c$ 仅包含被剪枝元素的量化误差。因此,额外误差的幅值通常小于相反顺序。
- 误差项 $\epsilon_i$:该项也对额外误差有贡献,它编码了误差向量 $\epsilon_q(x)$ 和 $\epsilon_s(w)$ 之间的相互作用。然而,由于量化和稀疏误差的范数通常小于量化块的范数,该项没有 $\epsilon_t$ 重要。
附录中的详细分析。我们在附录M中提供了对额外误差的更详细分析。
正交性阈值的定义。最后,为了实验性地验证我们的数学发现,我们定义了一个度量标准,即正交性阈值,以评估变换是否正交。
正交性阈值的计算公式。定义3.11(正交性阈值):令 M 为所考虑的DNN模型,$E_M(M)$ 是衡量模型 M 性能的评估指标(例如,困惑度或交叉熵损失),$E_{M_C}(M)$ 是对模型 M 应用变换 C(稀疏 S 或量化 Q)后的评估指标。此外,令 $Err_C(M) = E_{M_C}(M) - E_M(M)$ 为模型 M 上变换 C 的评估指标误差。我们定义正交性阈值为:
$$\text{Orthogonality Threshold} = \text{EM}(M) + \text{Err}_{Q}(M) + \text{Err}_{S}(M)$$正交性阈值的解释。如果压缩方法是非正交的,并且评估指标值越低越好(例如困惑度),我们预期由于复合误差,压缩模型的评估指标(例如困惑度)会恶化,从而超过正交性阈值。类似地,如果压缩方法是非正交的,并且评估指标值越高越好(例如准确率),我们预期压缩模型的评估指标(例如准确率)会下降,从而低于正交性阈值。
A4 实验环境
-
模型架构与数据集:
- 语言模型:使用了广泛采用的基于Transformer的模型,包括OPT【索引104,Susan Zhang et al. OPT: open pre-trained transformer language models+2022+arXiv】和LLaMA【索引95,Hugo Touvron et al. Llama 2: Open foundation and fine-tuned chat models+2023+arXiv】模型家族。在WikiText2【索引60,Stephen Merity et al. Pointer sentinel mixture models+2017+ICLR】数据集上对预训练的基础模型(非指令微调版本)进行微调,并评估其困惑度(Perplexity)。
- 视觉模型:在ImageNet-1k【索引9,Jia Deng et al. Imagenet: A large-scale hierarchical image database+2009+CVPR】数据集上评估了ViT【索引12,Alexey Dosovitskiy et al. An image is worth 16x16 words: Transformers for image recognition at scale+2021+ICLR】和ResNet【索引32,Kaiming He et al. Deep residual learning for image recognition+2016+CVPR】的非正交性,使用交叉熵损失作为主要指标。
-
硬件与软件配置:
- 硬件:实验在四块NVIDIA A100 GPU(80GB显存)和四块NVIDIA V100 GPU(32GB显存)上进行。
- 软件:所有实验中,基线配置为密集的FP32模型。
-
压缩与微调配置:
- 数值格式:实验涵盖了多种最大值缩放格式,如INT8(per-channel scaling)【索引10,Tim Dettmers et al. Llm.int8(): 8-bit matrix multiplication for transformers at scale+2022+arXiv】、HBFP8/6【索引13,Mario Drumond et al. Training DNNs with Hybrid Block Floating Point+2018+arXiv】和MXFP8/6【索引84,Bita Darvish Rouhani et al. Microscaling data formats for deep learning+2023+arXiv】。
- 稀疏性:主要研究了带稀疏感知微调的50%非结构化和2:4结构化稀疏。对于ViT-B/16和ResNet-50,还应用了更高的压缩率,包括75%非结构化稀疏、1:4结构化稀疏和HBFP4。
- 压缩范围:只对包含可训练参数的层进行稀疏化和/或量化,包括LLM中的所有线性层(不含lm-head或embedding层)以及ViT和ResNet中的所有线性和卷积层,这些层约占总参数的99%。
- 微调策略:
- S→Q(先稀疏后量化):对经过稀疏微调的模型应用一次性量化(one-shot quantization)。
- Q→S(先量化后稀疏):直接以量化和稀疏的方式微调模型,在每次迭代中都对权重和激活进行量化,并对权重进行稀疏化。
- 每次迭代都会重新计算稀疏掩码。所有配置的超参数保持一致以确保公平比较(详见附录B)。
A4 实验结果
4.1 经验性研究1:稀疏性与量化的顺序
实验内容:本节通过经验性证据表明,先应用稀疏性再进行量化(S→Q)比相反顺序(Q→S)能获得更优的困惑度。实验在OPT-125M和LLaMA-2-7B模型上,针对多种数值格式和稀疏类型(50%非结构化和2:4结构化)比较了S→Q和Q→S两种顺序的性能。
实验结果:如表1所示,S→Q顺序在所有数值格式和稀疏类型下都一致地获得了更好的困惑度。例如,在OPT-125M模型和HBFP6格式下,S→Q的困惑度为32.51,而Q→S则高达40.86。
结论分析:实验结果与3.1节的数学分析一致。在Q→S顺序中,量化操作可能改变张量中元素的相对大小顺序。如果基于幅值的稀疏性剪枝了量化后张量中那些在量化前本应保留的较大元素,那么组合误差可能会超过两种变换单独误差之和。这种复合误差会通过后续的点积和向量运算进一步传播,最终损害整体模型性能。
4.2 经验性研究2:稀疏性与量化之间的非正交性
实验内容:本节证明了结合稀疏性与量化会产生额外的误差,其总误差超过了它们各自独立误差的总和。实验在OPT-125M、OPT-6.7B、LLaMA-2-7B、LLaMA-3-8B和ViT-B/16上进行,采用最优的S→Q顺序。实验计算了每种组合的正交性阈值(公式12),并将模型的实际性能(困惑度或交叉熵损失)与该阈值进行比较。
实验结果:如表2所示,在绝大多数配置中,模型的困惑度和交叉熵损失值都超过了正交性阈值,从而验证了稀疏性与量化的非正交性。
- 误差放大效应:额外误差的大小受量化误差影响较大。例如,对于OPT-125M,HBFP6本身导致困惑度增加2.26,但与50%非结构化稀疏结合后,增量达到4.86,远超阈值32.2。这种效应在误差较大的稀疏类型(如2:4)上更为明显。
- 模型规模与压缩率的影响:较大的模型(如OPT-6.7B)对压缩方法的容忍度更高,产生的额外误差较小。量化误差较小的格式(如MXFP8)和稀疏化误差较小的类型(如非结构化稀疏)也能减轻额外误差。
- 视觉模型的表现:对于ViT-B/16,在常规压缩率下,交叉熵损失虽然超过阈值,但差异较小。作者假设这是因为视觉模型对误差更具鲁棒性。通过提高压缩率(如75%稀疏和HBFP4),非正交性效应变得非常显著,证明了假设(详见附录G和O)。
结论分析:实验结果支持了3.2节的数学分析,即结合稀疏性和量化会因量化的激活张量值与稀疏化权重的量化误差之间的相互作用而引入额外误差。尽管存在少数性能优于阈值的“正交”情况,但这并不与数学分析(其关注误差上界和非正交性的存在性)相矛盾,且这些情况下组合误差仍大于单一方法的误差。这表明在共同应用这两种压缩方法时需要谨慎。
4.3 消融实验:跨层误差传播
实验内容:为了探究误差在网络层间的传播情况,本节对预训练的OPT-125M模型进行了逐层经验分析。在零样本(zero-shot)设置下,对模型的所有线性层应用量化和基于幅值的稀疏性。通过向压缩模型和全精度密集模型输入相同的测试样本,测量并比较每个Transformer块中前馈网络(FeedForward)输出的L2误差。实验对比了S→Q和Q→S两种顺序。
实验结果:如图1所示,无论采用何种变换顺序,逐层误差都随着层索引的增加而持续累积,并在最后一层达到峰值。然而,S→Q顺序在每个中间层产生的误差都显著低于相反的Q→S顺序。
结论分析:这一模式表明,Q→S顺序引入的误差随着网络深度的增加而累积得更快,凸显了先量化后稀疏的有害影响。这证实了压缩顺序的选择不仅影响单层误差,还通过误差累积显著影响模型的最终性能,从而验证了数学分析的结论。
A7 补充细节
对ML实践者的启示。我们的数学分析和实验结果为机器学习模型从业者提供了多重见解。首先,我们的分析展示了一种无风险的方法,即通过为任何最大值缩放的数值格式和基于幅值的剪枝方案选择最佳的压缩操作顺序,来提高模型性能(以更低的困惑度和/或更高的准确率衡量)。在当前机器学习领域,稀疏性和量化是降低最先进大语言模型内存占用和带宽需求的关键方法,因此这一贡献尤为重要。其次,我们表明,计算正交性阈值可以为稀疏和量化条件下的模型性能(如准确率、困惑度等)提供一个足够接近的估计。这个界限可以通过有效地缩小搜索空间,简化寻找最优稀疏-量化模型配置的过程。
硬件效益与模型性能的权衡。各种稀疏-量化配置的硬件效益与所达到的模型性能之间存在固有的权衡。量化位宽和稀疏度是影响模型服务时内存和带宽需求的关键因素。例如,在50%的稀疏度下,8位和6位量化分别能使内存占用和带宽需求总共减少8倍和10.7倍。
实践指南。理想情况下,从业者希望最大化压缩(提高稀疏率和/或降低每个元素的平均位宽)。我们的分析阐明了这些因素在一系列近期大型模型上的个体和组合影响,为实现最高压缩率而不牺牲模型性能提供了实用指南。通常情况下,当以最佳顺序(S→Q)与任何形式的稀疏性结合时,使用任何最大值缩放数值格式的8位量化可以直接替代FP32。如第4节所述,某些模型即使在以最佳顺序应用时,也对次8位数值格式和结构化稀疏性组合表现出敏感性。在某些场景下,例如在边缘设备上部署大型模型时,如果算术密度(TOPS/mm²)和内存占用的提升可以证明模型性能的轻微下降是合理的,那么这些组合可能仍然是可行的。
未来工作的展望。在这项工作中,我们没有考虑异构的稀疏和量化方案,即稀疏比例和量化位宽在不同层之间变化,并且在激活和权重张量之间也不同。这类方法【索引84,Bita Darvish Rouhani et al. Microscaling data formats for deep learning+2023+arXiv】,【索引58,Shuming Ma et al. The era of 1-bit llms: All large language models are in 1.58 bits+2024+arXiv】,【索引28,Simla Burcu Harma et al. Accuracy boosters: Epoch-driven mixed-mantissa block floating-point for dnn training+2022+arXiv】,【索引16,Utku Evci et al. Rigging the lottery: Making all tickets winners+2020+ICML】已被证明在保持模型准确性或困惑度的同时能有效提高压缩率。然而,这些方案可能对硬件不友好,会引入明显的开销,并且在现成的硬件平台(如GPU、TPU)上实现不切实际。我们将对这些异构稀疏和量化方案之间相互作用的调查留作未来工作。
A5 结论
本文对深度神经网络中的稀疏性与量化之间的相互作用进行了全面分析,结果表明,先应用稀疏性再进行量化(S→Q)可以最小化额外误差并产生更好的模型精度。此外,我们的数学分析以及在大型语言模型(OPT、LLaMA)、视觉Transformer(ViT)和卷积神经网络(ResNet)上的广泛实证研究表明,稀疏性与量化是非正交的,它们的组合使用可能对模型精度产生负面影响。我们的研究结果为优化大型模型的压缩同时保持其精度提供了宝贵的见解。
A6 附录
B 超参数
微调设置。我们进行全参数微调,同时应用基于幅值的稀疏性方法。我们通过网格搜索为每个模型和稀疏类型找到最优超参数,并在所有数值格式(包括FP32)中应用相同的超参数。我们观察到,以Q→S顺序进行微调(即在每次迭代中对张量进行量化和稀疏化)会导致训练过程高度不稳定,尤其是在结构化稀疏性下。因此,我们限制了训练迭代次数和学习率。这样,我们优先确保所有数值格式之间的结果具有可复现性和可比性,而不是为每个特定配置都达到完全收敛。
具体超参数。OPT-125M和OPT-6.7B模型的微调块大小分别为512和1024,而LLaMa模型使用2048的块大小。所有配置均采用线性学习率调度,不设预热期。
C 计算资源和运行时间
硬件资源。我们在四块拥有80GB内存的NVIDIA A100 GPU上进行实验,对于小型模型,我们使用四块拥有32GB内存的NVIDIA V100 GPU。
运行时间。我们实验中使用的超参数,包括微调轮数,详见附录B。总的来说,在这些硬件平台上,每个微调实验的预计运行时间如下:(a) OPT-125M为20分钟,(b) OPT-6.7B为5-6小时,(c) LLaMA-2-7B和LLaMA-3-8B为2-3小时,(d) ViT-B/16为40小时。
D 微调策略
背景。基于幅值的稀疏性若一次性应用,会导致显著的困惑度下降,因此需要额外的微调来恢复性能。与量化结合时,存在几种可能的微调策略:
1. 对FP32模型进行稀疏微调,然后进行训练后量化,稀疏掩码应用于FP32权重张量。
2. 以稀疏化和量化的方式进行微调,即在每次迭代中先稀疏化再量化张量。
3. 对FP32模型进行稀疏微调,然后进行训练后量化,稀疏掩码应用于量化后的权重张量。
4. 以量化和稀疏化的方式进行微调,即在每次迭代中先量化再稀疏化张量。
策略对应关系与消融实验。前两种策略对应S→Q的变换顺序,后两种对应Q→S的顺序。我们为OPT-125M进行了消融实验来比较这些微调策略。结果呈现在表5中。根据我们的结果,在S→Q顺序中,训练后量化(策略1)优于稀疏-量化同步微调(策略2)。相反,在Q→S顺序中,量化-稀疏同步微调(策略4)比训练后量化(策略3)更能恢复困惑度。
E 实验设置总结
设置概览。表6总结了我们的实验设置。
F 训练后一次性稀疏方法
Wanda和SparseGPT的剪枝策略。其他稀疏方案,如Wanda和SparseGPT,采用不同的剪枝策略,它们使用激活值来评估权重的重要性,并只剪除最不重要的权重。Wanda和SparseGPT中的剪枝度量分别是:
$$S_{i j}=|\mathbf{W}_{i j}| \cdot\|\mathbf{X}_j\|_2 \quad \text{and} \quad S_{i j}=[|\mathbf{W}|^2 / \operatorname{diag}((\mathbf{X}^T \mathbf{X}+\lambda \mathbf{I})^{-1}]_{i j}$$顺序对Wanda和SparseGPT影响较小的原因。如果先应用量化,输入值会改变,这可能也会改变被置零的权重集合。然而,这些权重的重要性不会发生显著变化。因此,校正向量 $t_c$ 由最不重要的权重组成,这些权重与 $q(x)$ 中值最低的元素相乘,这是由所选的剪枝度量决定的。因此,对于这些稀疏方案,$\epsilon_t$ 的幅值以及改变操作顺序的影响远小于基于幅值的稀疏方法。
实验结果。我们进一步探讨了训练后一次性稀疏方法(特别是SparseGPT和Wanda)的有效性,这些方法利用基于权重和激活幅值乘积的选择标准。我们的结果报告在表7中。我们观察到,由于进行了微调,基于幅值的稀疏性仍然能获得更好的困惑度。然而,由于其选择标准,SparseGPT和Wanda不受操作顺序的影响。即使量化改变了权重张量内部的相对幅值,相应的激活值在相乘时也可以补偿,从而保留原始的重要性排序。因此,这些方法在S→Q和Q→S之间的困惑度差异很小,并且在少数情况下,Q→S能产生更好的困惑度。
G ViT的正交性阈值
ViT的鲁棒性分析。表8显示了ViT-B/16在ImageNet-1k上执行图像分类任务时,各种稀疏和量化方案组合下的交叉熵损失结果。首先,我们注意到计算出的正交性阈值在大多数配置中都作为正确的下界,支持了我们的数学分析。其次,与本文研究的其他LLM相比,ViT-B/16对稀疏和量化方案的组合表现出显著更强的鲁棒性。当使用中等稀疏水平(50%和2:4)和8位/6位数值格式时,实际的交叉熵损失接近计算出的正交性阈值,显示了ViT-B/16的鲁棒性。
高压缩率下的非正交性效应。只有在通过使用75%或1:4稀疏以及像HBFP4这样的4位数值格式实现更高压缩率时,我们才看到稀疏和量化误差对最终交叉熵损失的影响,使其显著高于计算出的正交性阈值。
H 鲁棒性分析
随机种子实验。为了证实我们关于最佳压缩操作顺序的结论,我们进行了跨三个不同随机种子的有限实验。我们在表9中报告了平均困惑度和误差棒。鉴于微调的计算成本,我们将鲁棒性分析限制在OPT-125M模型和HBFP8/6数值格式上。对于两种稀疏类型,我们都观察到稳定的结果,一致地证实了S→Q顺序的更高效率。请注意,由不同种子引起的偏差不会损害我们结论的完整性。
I 逐层误差传播
误差持久性分析。我们还检查了误差传播,以确保在早期层中引入的误差不会在后续层中消失。图2展示了压缩误差如何在预训练的OPT-2.7b模型中持续存在并传播。在此分析中,我们单独量化每一层,并测量相应的传播误差到其他保持全精度的层。我们观察到,在早期层引入的相对较大的误差,尽管有小幅波动,但在通过网络时仍保持在同一水平。因此,即使是单层误差也可能显著降低模型性能,这凸显了由于压缩技术的非正交性或以次优顺序应用它们所带来的潜在威胁。
J 数学分析的证明
定理3.5的证明。令 $n_s$ 表示稀疏变换从块中剪枝的元素数量。不失一般性,我们假设块中最后 $n_s$ 个元素被剪枝,因为排列元素不影响块的范数。由于稀疏变换不剪枝块中的最大元素,量化的缩放参数保持不变。因此,非零分量在稀疏化前后的量化误差保持相同:
$$\begin{aligned} \begin{aligned} \left\|\varepsilon_{q \circ s}(\mathbf{x})\right\| & =\left\|\left(\begin{array}{c} x_{1} \\ \vdots \\ x_{n-n_{s}} \\ x_{n-n_{s}+1} \\ \vdots \\ x_{n} \end{array}\right)-q\left(\begin{array}{c} x_{1} \\ \vdots \\ x_{n-n_{s}} \\ 0 \\ \vdots \\ 0 \end{array}\right)\right\|=\left\|\left(\begin{array}{c} \varepsilon_{q}(\mathbf{x})_{1} \\ \vdots \\ \varepsilon_{q}(\mathbf{x})_{n-n_{s}} \\ x_{n-n_{s}+1} \\ \vdots \\ x_{n} \end{array}\right)\right\| \leq \\ \leq & \left\|\left(\begin{array}{c} \varepsilon_{q}(\mathbf{x})_{1} \\ \vdots \\ \varepsilon_{q}(\mathbf{x})_{n-n_{s}} \\ 0 \\ \vdots \\ 0 \end{array}\right)\right\|+\left\|\left(\begin{array}{c} 0 \\ \vdots \\ 0 \\ x_{n-n_{s}+1} \\ \vdots \\ x_{n} \end{array}\right)\right\|=\left\|\left(\begin{array}{c} \varepsilon_{q}(\mathbf{x})_{1} \\ \vdots \\ \varepsilon_{q}(\mathbf{x})_{n-n_{s}} \\ 0 \\ \vdots \\ 0 \end{array}\right)\right\|+\left\|\left(\begin{array}{c} \varepsilon_{s}(\mathbf{x})_{1} \\ \vdots \\ \varepsilon_{s}(\mathbf{x})_{n-n_{s}} \\ \varepsilon_{s}(\mathbf{x})_{n-n_{s}+1} \\ \vdots \\ \varepsilon_{s}(\mathbf{x})_{n} \end{array}\right)\right\| \leq \\ \leq & \left\|\left(\begin{array}{c} \varepsilon_{q}(\mathbf{x})_{1} \\ \vdots \\ \varepsilon_{q}(\mathbf{x})_{n-n_{s}} \\ \varepsilon_{q}(\mathbf{x})_{n-n_{s}+1} \\ \vdots \\ \varepsilon_{q}(\mathbf{x})_{n} \end{array}\right)\right\|+\left\|\left(\begin{array}{c} \varepsilon_{s}(\mathbf{x})_{1} \\ \vdots \\ \varepsilon_{s}(\mathbf{x})_{n-n_{s}} \\ \varepsilon_{s}(\mathbf{x})_{n-n_{s}+1} \\ \vdots \\ \varepsilon_{s}(\mathbf{x})_{n} \end{array}\right)\right\|=\left\|\varepsilon_{s}(\mathbf{x})\right\|+\left\|\varepsilon_{q}(\mathbf{x})\right\| \end{aligned} \end{aligned}$$对于Lp范数($p \in (1, +\infty)$),上界在以下两种情况之一可达到:要么x中被剪枝的元素原本为零,要么x中所有元素的量化误差为零。在第一种情况下,第一个不等式变为等式,因为 $\forall i \in {n - n_s + 1, \dots, n} : x_i = 0$。在第二种情况下,第一个不等式也变为等式,因为 $\forall i \in {1, \dots, n - n_s} : \epsilon_q(x)_i = 0$。同样,第二个不等式也变为等式,因为量化将零映射为零。因此,${n - n_s + 1, \dots, n}$ 中元素的量化误差为零,要么是因为x中所有元素的量化误差为零,要么是因为这些元素原本为零:$\forall i \in {n - n_s + 1, \dots, n} : \epsilon_q(x)_i = 0$。
对于L1范数,存在一个非平凡的情况。我们考虑浮点数块 $x = (4.0, 4.1)^T$,INT4量化和1:2稀疏性。
$$\begin{aligned} s(\mathbf{x})=\left(\begin{array}{l}0.0 \\ 4.1\end{array}\right) \quad q(\mathbf{x})=\left(\begin{array}{l}4.0 \\ 4.0\end{array}\right) \quad q(s(\mathbf{x}))=\left(\begin{array}{l}0.0 \\ 4.0\end{array}\right) \end{aligned}$$变换误差的L1范数如下:
$$\begin{aligned} \left\|\varepsilon_s(\mathbf{x})\right\|_1=\left\|\begin{pmatrix}4.0 \\ 0.0\end{pmatrix}\right\|_1=4.0 \quad \left\|\varepsilon_q(\mathbf{x})\right\|_1=\left\|\begin{pmatrix}0.0 \\ 0.1\end{pmatrix}\right\|_1=0.1 \quad \left\|\varepsilon_{q \circ s}(\mathbf{x})\right\|_1=\left\|\begin{pmatrix}4.0 \\ 0.1\end{pmatrix}\right\|_1=4.1 \end{aligned}$$因此,$|\epsilon_{q \circ s}(x)| = |\epsilon_q(x)| + |\epsilon_s(x)|$ 是可以达到的。
定理3.6的证明。考虑浮点数块 $x = (3.9, 4.0)^T$,INT4量化q和1:2稀疏性s。对该块应用量化变换后,其元素之间的初始关系 $x_i < x_j$ 不再保持,两个元素被稀疏变换置零的概率相等。如果稀疏性将原本较大的元素置零,则产生的误差可能超过每个变换单独引起的误差之和:
$$\begin{aligned} s(\mathbf{x})=\begin{pmatrix}0.0\\4.0\end{pmatrix} \quad q(\mathbf{x})=\begin{pmatrix}4.0\\4.0\end{pmatrix} \quad s(q(\mathbf{x}))=\begin{pmatrix}4.0\\0.0\end{pmatrix} \end{aligned}$$ $$\begin{aligned} \|\varepsilon_{s}(\mathbf{x})\|=\left\|\left(\begin{array}{l}3.9 \\ 0.0\end{array}\right)\right\| \quad\|\varepsilon_{q}(\mathbf{x})\|=\left\|\left(\begin{array}{c}-0.1 \\ 0.0\end{array}\right)\right\| \quad\|\varepsilon_{s \circ q}(\mathbf{x})\|=\left\|\left(\begin{array}{c}-0.1 \\ 4.0\end{array}\right)\right\| \end{aligned}$$我们考虑Lp范数,其中 $p \in [1; +\infty)$。在这些范数中,$\forall a \in R : |(a, 0)^T| = |a| \cdot |(1, 0)^T| = |a|$。因此:
$$\begin{aligned} \begin{aligned} \left\|\varepsilon_{q}(\mathbf{x})\right\|+\left\|\varepsilon_{s}(\mathbf{x})\right\| & =\left\|\left(\begin{array}{c} -0.1 \\ 0.0 \end{array}\right)\right\|+\left\|\left(\begin{array}{c} 3.9 \\ 0.0 \end{array}\right)\right\|=|-0.1|+|3.9|=4.0= \\ & =\left\|\left(\begin{array}{c} 0.0 \\ 4.0 \end{array}\right)\right\|<\left\|\left(\begin{array}{c} -0.1 \\ 4.0 \end{array}\right)\right\|=\left\|\varepsilon_{s \circ q}(\mathbf{x})\right\| \end{aligned} \end{aligned}$$因此,对于这个特定的输入x,不等式 $|\epsilon_{s \circ q}(x)| > |\epsilon_q(x)| + |\epsilon_s(x)|$ 成立。
定理 J.1(次优顺序误差上界,一般情况)。令 q 为最大值缩放的分块量化,s 为基于幅值的N:M稀疏性变换。令 step 为单个元素量化误差幅值的最小上界:step = sup{$|\epsilon_q(x)_i| | x \in R^n, i \in {1 \dots n}$}。令 $\vec{1}(n, N, M) \in R^n$ 是一个向量,包含 $\frac{M-N}{M} \cdot n$ 个1和 $\frac{N}{M} \cdot n$ 个0,顺序任意。则误差为:
定理J.1的证明。为简化起见,不失一般性地假设稀疏操作将向量中的最后几个元素置零。
当先应用量化时,两个不同的数可能变得相同:$x_i < x_j \rightarrow q(x)_i = q(x)_j$。当我们对量化后的数进行稀疏化时,原本较小的数可能被置零,如图3所示。因此,上界的最后一个分量s不等于s。然而,在这种情况下,我们可以得到它们之间距离的上界:
$$\begin{aligned} \left\{\begin{array}{l}x_{i}<x_{j} \\ q(\mathbf{x})_{i} \geq q(\mathbf{x})_{j}\end{array} \Leftrightarrow\left\{\begin{array}{l}x_{i}<x_{j} \\ x_{i}-q(\mathbf{x})_{i} \geq x_{j}-q(\mathbf{x})_{j}\end{array} \Leftrightarrow\left\{\begin{array}{l}x_{j}-x_{i}>0 \\ x_{j}-x_{i} \leq q(\mathbf{x})_{j}-q(\mathbf{x})_{i}\end{array} \Rightarrow\right.\right.\right. \end{aligned}$$对于每个在量化后稀疏化被置零的$x_i$,我们定义$x_{ti}$为如果未应用量化会被置零的元素。那么向量s(x)由所有且仅由这样的元素$x_{ti}$组成。
存在向量s(x)的一个排列W,将s(x)中的元素xi映射到s(x)中的元素$x_{ti}$。因此,$|s(x)|$ 的一个上界是:
$$\|\widetilde{\boldsymbol{s}}(\mathbf{x})\|=\|\widetilde{\boldsymbol{s}}(\mathbf{x})-W \boldsymbol{s}(\mathbf{x})+W \boldsymbol{s}(\mathbf{x})\| \leq\|W \boldsymbol{s}(\mathbf{x})\|+\|\widetilde{\boldsymbol{s}}(\mathbf{x})-W \boldsymbol{s}(\mathbf{x})\|=$$在N:M稀疏的情况下,块内被置零的元素数量为 $\frac{M-N}{M} \cdot n$。因此:
因此,复合误差的上界如下:
定理3.7的证明。作为定理J.1的推论,对于L1范数,最后一个误差项可以评估如下:
$$\begin{aligned} 2 \cdot step \cdot\|\vec{\mathbf{1}}(n, N, M)\|_{1}=2 \cdot step \cdot\left\|\left(\begin{array}{c}0 \\ \vdots \\ 0 \\ 1 \\ \vdots \\ 1\end{array}\right)\right\|_{1}=2 \cdot step \cdot \frac{M-N}{M} \cdot n \end{aligned}$$定理3.10的证明。复合误差可以写成如下形式:
加上范数后,我们得到:
其中 $\epsilon_t$ 和 $\epsilon_i$ 是额外误差项。
为了证明非正交性,考虑浮点数块 $x = (1.0, 1.0)^T$, $w = (0.6, 1.3)^T$,HBFP4量化q和1:2稀疏性s。我们假设q不影响x: $q(x) = x$。另一方面,块w的变换如下:
复合的点积误差等于:
量化的点积误差等于:
稀疏性的点积误差等于:
因此,对于这些特定的x和w值,不等式 $|\epsilon^D_{q,c}(x, w)| > |\epsilon^D_q(x, w)| + |\epsilon^D_{I,s}(x, w)|$ 成立。
定理J.2。令 q 为最大值缩放的分块量化,s 为基于幅值的N:M稀疏性变换。则:
证明。如果先应用稀疏性,则根据定理3.5的证明:
如果先应用量化,则有两种情况。
情况1:没有新的重复值。 量化不能重排元素,只能使它们变成重复值。因此,如果没有新的重复值,量化后被稀疏化的元素与之前相同,因为元素的顺序没有改变,误差向量也将相同:
情况2:有新的重复值。 令 $x_i$ 和 $x_j$ 是这样的元素,使得 $|x_i| < |x_j|$ 且 $q(x)i = q(x)_j =: y$,并且第j个元素被稀疏化而不是第i个。在这种情况下:
$\varepsilon)}(\mathbf{x{i}=\varepsilon)}(\mathbf{x{i} \text { and } \varepsilon)}(\mathbf{x{j}=\varepsilon)}(\mathbf{x{j}=x$
因此,
如果我们考虑 $x_i < y < x_j$ 且 $y = 0$ 的情况,则
否则,我们假设 $x_i, x_j$ 和 $y$ 有相同的符号。这里有三个子情况:
- $|y| > |x_j|$。则...
- $|y| < |x_i|$。则...
- $|x_i| < |y| < |x_j|$。则...
因此,
最终,
K Q对于数值格式的定义
-
INTm (对称版本) 【索引10,Tim Dettmers et al. Llm.int8(): 8-bit matrix multiplication for transformers at scale+2022+arXiv】
$$Q_m(x_i, scale) = s \cdot \left \lfloor \frac{x_i}{s} \right \rceil, \text{where } s = \frac{scale}{2^{m-1} - 1},$$
-
HBFPm 【索引13,Mario Drumond et al. Training DNNs with Hybrid Block Floating Point+2018+arXiv】
$$Q_{m}(x_{i}, scale) = s \cdot \left\lfloor \frac{x_{i}}{s} \right\rfloor, \text{where } s = 2^{\lceil log_{2}(scale) \rceil - (m-1)}$$
-
MXFPm 【索引8,Bita Darvish Rouhani et al. OCP Microscaling (MX) Specification+2023+Open Compute Project】,【索引65,Microsoft. MicroXcaling: A Library for Microservices Autoscaling+2024+URL】
$$Q_m(x_i, scale) = scale \cdot (-1)^S \cdot 2^E \cdot (1 + 2^{-m} \cdot M)$$
$$\begin{aligned} \begin{aligned} \text{where } S &= \operatorname{sign}(x_s) \\ E &= \lfloor \log_2(|x_s|) \rfloor - bias \end{aligned} \end{aligned}$$$$M = \left\lfloor \left( \frac{|x_s|}{2^E} - 1 \right) \cdot 2^m \right\rfloor$$$$x_{s}=\frac{x}{2^{\lceil\log_{2}(scale)\rceil}}$$
bias 的值取决于所选的配置【索引64,Paulius Micikevicius et al. OCP 8-bit Floating Point Specification (OFP8)+2023+Open Compute Project】。
- MXINTm 【索引8,Bita Darvish Rouhani et al. OCP Microscaling (MX) Specification+2023+Open Compute Project】,【索引65,Microsoft. MicroXcaling: A Library for Microservices Autoscaling+2024+URL】
$$Q_{m}(x_{i}, scale) = s \cdot \left \lfloor \frac{x_{i}}{s} \right \rceil, \text{where } s = 2^{\lceil \log_{2}(scale) \rceil - (m-1)}$$
L 点积误差上界的分析
L.1 上界是可达的
实验验证。为了测试定理3.10中推导出的上界在实践中是否可达,我们从标准正态分布N(0, 1)中随机抽取了1000个大小为64的块,并应用了2:4稀疏性和HBFP6量化。然后,我们计算了复合的总误差和上界的各个误差项。随后,我们使用以下公式量化了上界与实际复合误差的偏离程度:
$$ \text{Deviation} = \frac{|\varepsilon_{I,s}^D(\mathbf{x}, \mathbf{w})| + |\varepsilon_q^D(\mathbf{x}, \mathbf{w})| + |\varepsilon_t| + |\varepsilon_i|}{|\varepsilon_{q,c}^D(\mathbf{x}, \mathbf{w})|} $$根据定理3.10的推论,偏差的最小值为1。
结果分析。图4显示了样本的偏差分布。大多数值落在第一个区间内,表明上界经常被达到。也可以看出,偏差值可能很大,几乎达到10,这表明上界在某些情况下也可能过于悲观。定理3.10并未排除大的偏差值,因为它应用了三角不等式来获得上界,这导致忽略了每个误差项的符号。如果误差项的值为负,它们可能使复合的总误差低于上界,从而导致偏差值大于1。
L.2 额外误差项的贡献
假设。第3.2节描述了每个额外误差项如何对复合的总误差做出贡献。我们假设,在应用稀疏性后跟量化的情况下,误差项 $\epsilon_t$ 的贡献要小于先应用量化的情况。我们还假设误差项 $\epsilon_i$ 的幅值远小于 $\epsilon_t$ 的幅值。为了检验我们的假设,我们对上界的每个项的值进行了归一化,以比较它们对误差的贡献。我们考虑了应用变换的两种顺序,并且只关注偏差值较低(< 1.05)的样本,以增加上界的解释力。
结果验证。图5和图6描绘了实验结果。如果我们考虑图5中的Q→S顺序,可以看到项 $\epsilon_t$ 占了复合误差的近一半。然而,在S→Q顺序中,项 $\epsilon_t$ 的影响要小得多,这证明了我们的第一个假设。我们还可以看到,在两种顺序的大多数情况下,$\epsilon_i$ 的值都远低于 $\epsilon_t$ 的值。这证明了我们的第二个假设。
M 额外误差的分析
额外误差项的来源。作为定理3.10的推论,最大值缩放的稀疏性和量化的复合是非正交的,这导致了两个额外的误差项。
误差项 $\epsilon_t$ 的分析。项 $\epsilon_t$ 包含了复合的校正向量 $\tilde{\epsilon}c$,它将张量层面的额外误差带到了点积层面。$\epsilon_t$ 的值取决于复合的顺序。如果先稀疏后量化,校正向量 $\tilde{\epsilon}(w)$ 仅包含由稀疏变换剪枝的元素的负量化误差:
$$\begin{aligned} \tilde{\varepsilon}_{q \circ s}(\mathbf{w})_{i}=\begin{cases}-\varepsilon_{q}(\mathbf{w})_{i}, & s(\mathbf{w})_{i}=0 \\ 0, & \text { otherwise }\end{cases} \end{aligned}$$然而,如果先应用量化,块中的某些元素可能会变得相等,导致稀疏操作移除了一个不同的元素集。形式上,如果 $w_i$ 被 s 剪枝但未被 $s \circ q$ 剪枝,则存在一个 $w_j$,$j \neq i$,使得 $q(w)i = q(w)_j$。在这种情况下,$\tilde{\epsilon}(w)i = -\epsilon_s(w)_i$ 且 $\tilde{\epsilon}(w)_j = \epsilon_s(w)_j - \epsilon_q(w)_j$。否则,它只包含被剪枝元素的量化误差。因此,$s \circ q$ 复合的校正向量的幅值通常大于相反顺序的。除了量化误差,校正向量还包含被剪枝的元素,这些元素在数量级上通常更大,除非在一些不太可能的边缘情况下。这导致 $\epsilon_t$ 的总值更大,意味着先应用稀疏性再量化的顺序对于点积是最优的。
误差项 $\epsilon_i$ 的分析。项 $\epsilon_i$ 也对额外误差有贡献,它编码了误差向量 $\epsilon_q(x)$ 和 $\epsilon_s(w)$ 之间的相互作用。然而,$\epsilon_i$ 不如 $\epsilon_t$ 重要,因为它包含量化误差,其范数通常比原始块的范数低几个数量级。此外,$\epsilon_i$ 包含稀疏误差,这涉及最小的权重,从而削弱了这一额外误差的重要性。
N 结合GPTQ与稀疏性
基于幅值的稀疏性与GPTQ。尽管我们的数学分析没有具体涵盖GPTQ,我们进行了受控实验来评估其在本文背景下的性能。我们将50%的非结构化稀疏性与GPTQ结合应用于OPT-125M模型。
实验设置与公平性考虑。当应用GPTQ→S时,微调需要在每次迭代中同时对权重张量进行量化和稀疏化。然而,GPTQ通过量化一列并更新剩余权重来补偿引入的误差。在这种情况下,由于误差补偿量的不同,比较带微调的GPTQ→S和S→GPTQ是不公平的。为确保公平比较,我们决定取消微调步骤,并且只对一部分层进行稀疏化,以将稀疏误差控制在合理范围内。我们通过设定一个与SparseGPT达到的困惑度相当的阈值来确定要压缩的层数。
实验结果。表10显示,即使在这种情况下,基于幅值的稀疏性在量化之前应用时效果最佳(S→GPTQ: 30.93 vs. GPTQ→S: 35.59)。
SparseGPT与GPTQ。GPTQ和SparseGPT都是逐列进行压缩,并假设当前列右侧的元素保持未压缩状态。这是因为密集的更新通过这些未压缩的元素传播,以补偿引入的误差。如果后续的列被压缩,它们在第一次更新后将不再保持压缩状态。
实验流程与结果。在这种背景下,我们使用了原生支持S→Q的SparseGPT代码库,并按照其说明应用了这种压缩顺序。我们还联系了SparseGPT的作者,并采纳了他们应用Q→S的建议。我们用4位GPTQ量化和不同版本的OPT模型进行了实验。表11总结了我们的结果,支持了我们对二阶方法最佳压缩顺序的假设。对二阶方法中最佳压缩顺序的数学研究超出了我们工作的范围,我们将其留作未来工作。
O 卷积网络
框架适用性。我们的数学框架旨在适用于任何矩阵乘法,无论具体的模型架构如何。这使我们能够研究各种模型的最佳压缩顺序,包括CNN。
ResNet50实验。因此,我们将实验扩展到在ImageNet数据集上的ResNet50,使用了与ViT相同的所有配置。结果呈现在表12中。这些额外的结果进一步验证了我们关于最佳压缩顺序和正交性阈值的发现。
P 无微调情况下的最优顺序
无微调的挑战。基于幅值的稀疏性,如果不进行进一步的重新训练,会导致显著的准确性下降【索引33,Torsten Hoefler et al. Sparsity in deep learning: Pruning and growth for efficient inference and training in neural networks+2021+ArXiv】,【索引20,Elias Frantar and Dan Alistarh. Sparsegpt: Massive language models can be accurately pruned in one-shot+2023+ICML】。在我们的案例中,没有稀疏感知微调,稀疏误差比量化误差大几个数量级,导致S→Q和Q→S都主要产生稀疏误差。表13显示了没有稀疏感知微调的FP32稀疏模型在WikiText2上的困惑度。
受控实验。由于准确性的显著下降使得没有稀疏感知微调的场景不切实际,我们复现了表1中的配置,但只对一部分层进行稀疏和量化。通过对大约三分之一的层(特别是位于模型开头和结尾的层)应用压缩,我们可以实现可接受的困惑度增加。这些结果支持了S→Q顺序的最优性。
Q 碰撞分析
理论背景。在定理J.1的证明中,我们证明了在次优顺序下,当一个较大的值和一个较小的值在量化后发生碰撞,导致原本较大的元素被剪枝时,可能会产生额外的误差。在本节中,我们提供了这些碰撞确实发生的经验证据。
张量级碰撞分析。我们提取了OPT-1.3b模型所有层的权重,并计算了应用量化(HBFP6)后唯一元素平均减少的数量。每层唯一元素的减少量计算如下:
$\Delta unique = unique(W) - unique(\hat{W})$
其中 unique(X) 返回X中唯一元素的数量。平均而言,∆unique(W, Wˆ) = 24230,而量化前唯一元素的总数平均为24419。因此,量化引入了显著的碰撞,这可能导致额外的误差。
块级碰撞分析。为了进一步验证我们的发现,我们在块级别而不是整个张量级别分析了唯一元素的减少情况。具体来说,我们检查了OPT-1.3B的第6层,选择了块大小为64的随机块。如图7所示,一个块中唯一元素的减少量可以达到41个,约占块中元素的64%。这些结果证实了量化引入了大量的重复值。
R OpenLLM评估
零样本任务评估。为了进一步验证我们的发现并扩展我们的实验设置,我们在零样本任务【索引23,Leo Gao et al. A framework for few-shot language model evaluation+2024+zenodo】上评估了两种压缩顺序(S→Q和Q→S)下的模型。OPT-125M和Llama-3-8B的结果分别呈现在表15和表16中。结果显示,在所有情况下,最优的压缩顺序(S→Q)在所有模型和任务中都取得了更好的性能,验证了我们的理论结论。
S 微调期间稀疏性与量化的顺序
理论与实践的桥梁。我们的稀疏性和量化数学分析假设模型权重是固定的。然而,在我们的经验研究中,压缩层的主权重在微调期间会发生变化。为了弥合我们数学分析中的静态情况和实验设置中的动态情况之间的差距,我们证明了最佳压缩顺序与确切的模型权重无关,并且量化在稀疏感知微调期间对模型权重的影响最小。
零样本稀疏与量化。为了表明最佳压缩顺序与模型权重无关,我们对OPT-125M模型在WikiText2上的中间密集FP32检查点应用了零样本压缩。表17展示了在密集微调的不同检查点应用HBFP6量化和50%非结构化稀疏性后,S→Q和Q→S顺序下的最终困惑度。随着密集微调的进行,困惑度增加,这是预期的,因为在密集FP32微调过程中,权重对稀疏性的容忍度降低。对于每个检查点,S→Q始终优于Q→S,相对差距高达7%。这证实了最佳压缩顺序与模型的特定权重无关,验证了我们的数学分析。
微调期间的权重分布。在我们的实验中,我们采用稀疏感知微调来减轻稀疏引起的误差。我们的实验设置的详细总结见表6。在微调期间,我们为每层以全精度存储主权重,遵循了先前的工作【索引84,Bita Darvish Rouhani et al. Microscaling data formats for deep learning+2023+arXiv】。这种方法使得在前向和后向阶段可以压缩矩阵乘法,同时保留全精度进行权重更新。因此,在前向和后向阶段的量化对权重的学习动态影响最小。
权重分布对比。为了证明量化在微调期间的影响微乎其微,我们比较了S→Q和Q→S微调期间不同迭代次数下主权重的分布。图8、9、10显示,两种方案的主权重几乎相同,在小的幅值范围[−0.2, 0.2]内差异可以忽略不计。尽管分布尾部的权重值差异更明显,但重新排序稀疏性和量化仅影响每个块内的最小值,而这些值位于分布几乎相同的范围内。
差异量化。为了进一步量化这些差异,图11展示了单个权重分量差异的分布。权重值之间的绝对差异保持在0.02以下,这在张量和模型层面上是微不足道的。因此,即使在微调期间,数学分析仍然有效。
💬 评论讨论
欢迎在这里分享您的想法和见解!