Treasures in Discarded Weights for LLM Quantization阅读
摘要
近年来,大型语言模型(LLMs)快速发展,彻底改变了自然语言处理领域。然而,高存储开销和计算成本限制了LLM在资源受限环境中的部署。量化算法可以有效压缩LLM并加速推理,但在低位宽场景下往往会导致精度损失。本文中,我们发现量化过程中被丢弃的权重值实际上蕴含着提升LLM精度的宝贵信息。为了挖掘这些隐藏的“宝藏”,我们在这些被丢弃的权重及其邻近权重周围构建搜索空间,通过搜索空间中的权重,可以无缝地融合到原始量化权重中。为了确定哪些权重应当被合并,我们设计了一个即插即用的权重补偿框架,用以捕获全局信息并保留具有最高潜在效益的权重。该框架能够与多种LLM量化算法结合使用,在不增加推理开销的前提下,实现更高的精度。我们在广泛使用的LLM基准数据集上验证了该方法的有效性。
引言
近年来,预训练大型语言模型(LLMs)(Le Scao 等,2022;Touvron 等,2023;Zhang 等,2022),基于Transformer架构(Vaswani 等,2017),在许多复杂的自然语言处理(NLP)任务中取得了令人振奋的成果。LLMs已在学术界和工业界引起广泛关注。然而,这些模型的灵活性和可扩展性仍然面临许多限制。由于LLMs通常包含数十亿参数,其计算和存储成本都非常高,这给模型的部署和应用带来了巨大挑战。
模型量化将全精度(例如32位浮点)权重 ( W ) 和激活值 ( A ) 映射为低精度(例如8位整数)权重 ( W_q ) 和激活值 ( A_q )。量化能够有效减少参数存储并加速模型推理,同时不会显著影响精度。因此,量化算法被广泛用于LLM的部署。通常有两类典型的量化方法,即后训练量化(Post-Training Quantization,PTQ)和量化感知训练(Quantization-Aware Training,QAT)。PTQ算法直接对模型权重和激活进行量化,而QAT算法将量化作为模型训练过程的一部分。一般来说,研究人员会先对LLMs进行PTQ,然后在有足够计算资源时,基于PTQ模型进一步进行QAT。
尽管现有的LLM量化方法展现了很强的能力,但它们也存在一些固有的局限性。QAT算法可以显著减少量化导致的精度下降,有时甚至接近无损,但其需要对LLMs重新训练且计算资源消耗较大。相比之下,PTQ算法更快且应用更广泛,但通常会导致模型精度明显下降。此外,以往的LLM PTQ方法(Frantar 等,2022;Lin 等,2024)主要关注逐层调整权重或异常激活,仅考虑单个层或块的激活值,忽略了全局信息,可能导致量化误差的累积。PTQ和QAT通常都能实现INT8无损量化(Frantar 等,2022;Liu 等,2024),但进一步降低位宽(如INT4和INT2)很可能会引起显著的精度损失。
为克服现有LLM PTQ和QAT算法的这些缺陷,我们提出了一个即插即用的框架,用以提升低位宽量化LLM的精度。我们认为,对于LLM PTQ算法,被丢弃的权重(即 ( D = W - W_q ))仍然包含尚未被充分挖掘的宝贵信息。因此,我们提出了一种新策略,挖掘这些被丢弃权重 ( D ) 中的隐藏“宝藏”。具体地,基于低秩分解技术,我们设计了多个围绕 ( D ) 的小型搜索空间。这些搜索空间包含多个可被量化尺度整除的权重,能够无缝融入到原始量化权重中。因此,我们的框架不会增加额外的推理负担。为了确定哪些权重应该被合并,我们使用校准集上的全局困惑度(Perplexity,PPL)作为评估标准,而非单层激活变化。
我们的框架不依赖反向传播,但依然能捕获全局信息,因此只需少量样本和超参数,且量化模型不会对校准集过拟合。后续实验将表明,我们的框架对超参数具有鲁棒性,并且能通过多种搜索空间持续提升模型精度。该框架名为“丢弃权重回收”(Discarded Weight Recycling,DWR),可与多种现有LLM PTQ和QAT算法结合使用。即,在LLM PTQ算法后运行DWR框架,能够进一步提升量化模型的精度。此外,如果有足够的计算资源进行QAT,那么对DWR量化模型进行微调,效果优于直接微调PTQ模型。这表明DWR框架可以插入到PTQ和QAT算法之间,从而改进LLM量化效果。
我们的贡献如下:
- 针对现有LLM低位宽量化算法导致的精度下降问题,提出了一个统一的即插即用框架,回收被丢弃权重中的宝贵信息。
- 通过精心设计的搜索空间和评估指标,我们实用且高效的DWR框架有效利用了全局信息,优化了量化流程,在不增加推理负担的情况下减少了精度损失。
- 大量实验验证了我们方法的有效性。在三大典型LLM家族中,我们的框架能与多种PTQ和QAT算法结合,提升低位宽量化模型的精度,展示了DWR在不同场景中广泛的适用性和有效性。
相关工作
我们的工作涉及文献中的若干主题,以下是简要回顾。
大型语言模型(LLMs)
大型语言模型(Brown 等,2020;Le Scao 等,2022;Touvron 等,2023;Zhang 等,2022)旨在理解和生成自然语言。近年来,LLMs迅速发展,并在多种自然语言处理任务中持续展现出卓越的性能。其成功归因于模型规模和训练数据量的巨大增长,这些模型在来自不同来源的大规模数据上训练,参数量达到数十亿甚至数万亿。近年来提出了许多LLMs,我们的框架能够轻松适应不同规模的这些模型。
LLM的后训练量化(Post-Training Quantization,PTQ)
PTQ算法是在训练完成后对模型参数进行量化,能够简便高效地提升LLM的运行效率,而无需对模型进行大幅修改或耗费大量再训练资源。然而,现有PTQ算法可能引入一定程度的精度损失。一些LLM PTQ方法专注于权重的量化。例如,GPT3.int8()(Dettmers 等,2022)将异常特征维度隔离到16位矩阵乘法中,而大多数数值仍以8位乘法处理。GPTQ(Frantar 等,2022)基于近似二阶信息提出了一种新颖的组内量化技术。AWQ(Lin 等,2024)采用激活感知方法,根据与较大激活幅值对应的权重通道的重要性进行调整。SpQR(Dettmers 等,2024b)识别并分离异常权重,将其以更高精度存储,同时将其他权重压缩到3-4位。一些PTQ方法同时量化权重和激活。SmoothQuant(Xiao 等,2023)通过离线将量化难点从激活迁移到权重,平滑激活异常。OmniQuant(Shao 等,2023)优化截断阈值以调节极端值,也将量化挑战从激活转移至权重。LoWC(Yao 等,2024)利用奇异值分解(Singular Value Decomposition, SVD)(Golub 和 Van Loan,2013)对误差权重进行低秩分解,这与我们的思路类似,但引入了额外参数,会减慢模型推理速度。相比之下,在完成PTQ后应用我们的DWR框架,能够显著提升精度且不会带来额外推理负担。
LLM的量化感知训练(Quantization-Aware Training,QAT)
QAT算法使LLM在训练过程中适应低精度定点表示。这种适应确保经过微调的LLM在量化为较低位宽后仍能保持性能。LLM-QAT(Liu 等,2024)利用预训练模型生成的数据实现无数据蒸馏,不仅对权重和激活进行量化,还量化了键-值(KV)缓存。一些QAT工作仅微调部分权重参数。PEQA(Kim 等,2024)先量化全连接(FC)层,然后微调每个特定下游任务的量化尺度。QLoRA(Dettmers 等,2024a)通过冻结的4位量化预训练LLM反向传播梯度,调整LoRA低秩适配器(Hu 等,2021)。QA-LoRA(Xu 等,2024)将LLM与适配器集成到量化模型中,且无精度损失。总体而言,QAT通常在LLM执行PTQ之后进行。后续我们将展示,在应用DWR后进行QAT,比直接执行QAT效果更佳。
方法
下面我们介绍我们的框架。在本工作中,我们研究一种最常见的量化场景,即采用统一位宽的权重量化。我们先介绍相关的预备知识。基于被丢弃的权重,我们提出了三种潜在的搜索空间生成方法。随后介绍DWR(丢弃权重回收)框架。
预备知识
量化算法将浮点数映射到低位宽整数。假设有一个全连接(FC)层 ( y = Wx + b ),其中输入 ( x \in \mathbb{R}^{n \times c} ),输出 ( y \in \mathbb{R}^{m \times c} ),权重矩阵 ( W \in \mathbb{R}^{m \times n} )。量化算法将浮点权重 ( W ) 转换为 ( N ) 位整数权重 ( W_q ),伴随一个缩放因子 ( \alpha ) 和零点 ( \beta )。则全精度的伪量化权重为:
W ^ q = α ( W q − β ) . \hat{W}_q = \alpha (W_q - \beta). W^q=α(Wq−β).
这里为了简便,省略了如何将 ( W ) 量化为整数权重 ( W_q ) 的具体细节,因为不同LLM量化算法策略不同。也可以将 ( \hat{W}_q ) 还原为整数权重:
W q = clip ( ⌊ W ^ q α ⌉ + β , 0 , 2 N − 1 ) , W_q = \text{clip}\left(\left\lfloor \frac{\hat{W}_q}{\alpha} \right\rceil + \beta, 0, 2^N - 1\right), Wq=clip(⌊αW^q⌉+β,0,2N−1),
其中clip为截断操作,(\left\lfloor \cdot \right\rceil)表示四舍五入到最接近的整数,取值范围在0到 ( 2^N - 1 )之间。因此,使用 (\hat{W}_q) 和 ( W ) 之间会丢失部分信息,即存在丢弃权重:
D = W − W ^ q , D = W - \hat{W}_q, D=W−W^q,
这也是量化导致精度损失的重要原因。只要将 ( D ) 加回到 (\hat{W}_q),即可恢复原始权重 ( W ),从而保持LLM的精度。但直接将 ( D ) 补偿给 (\hat{W}_q) 会破坏量化结构,因此我们需要合适的方式将 ( D ) 与 (\hat{W}_q) 结合。
一种潜在方案是直接将 (\hat{W}_q) 与 ( D ) 相加后再除以缩放因子,即:
W ~ q = clip ( ⌊ W ^ q + D α ⌉ + β , 0 , 2 N − 1 ) , \tilde{W}_q = \text{clip}\left(\left\lfloor \frac{\hat{W}_q + D}{\alpha} \right\rceil + \beta, 0, 2^N - 1\right), W~q=clip(⌊αW^q+D⌉+β,0,2N−1),
这里的 (\tilde{W}_q) 是补偿后的伪量化权重。但是,这种操作(也称作“round-to-nearest”或RTN方法)通常表现不如最先进的量化算法(Gupta 等,2015)。基于此,我们认为直接合并 ( D ) 存在以下问题:
- 直接添加被丢弃权重 ( D ) 是否对每个FC层均有益尚存疑问,且缺乏可行的评估标准。
- 该操作仅允许与 (\hat{W}_q) 合并的变量为 ( D ),排除了其他潜在候选权重,限制了提升模型精度的可能。
为解决这些问题,我们提出了DWR框架。
搜索空间的生成
为缓解仅有一个候选合并权重的问题,我们设计了围绕被丢弃权重 ( D ) 的搜索空间。由于量化中的非线性计算(如clip操作),( D ) 很可能不是最优解。故我们提出在 ( D ) 周围生成搜索空间,搜索最优合并权重。具体提出三种可行策略。
1. 随机生成(Random Generation)
第一种策略是随机生成。随机生成一个正交矩阵 ( R \in \mathbb{R}^{m \times m} ),并对其做奇异值分解(SVD):
R = U S V ⊤ , R = U S V^\top, R=USV⊤,
其中 ( U \in \mathbb{R}^{m \times m} ) 是正交矩阵,( S \in \mathbb{R}^{m \times m} ) 是按降序排列奇异值的对角矩阵。假设仅保留前 ( k ) 个最大奇异值,对应矩阵为:
R k = U k S k V k ⊤ , R_k = U_k S_k V_k^\top, Rk=UkSkVk⊤,
其中 ( U_k, V_k \in \mathbb{R}^{m \times k} ) 是 ( U ) 和 ( V ) 的前 ( k ) 列,( S_k ) 是对应的奇异值对角矩阵。然后构造搜索空间:
W ~ q = clip ( ⌊ W q + R k D α ⌉ + β , 0 , 2 N − 1 ) . \tilde{W}_q = \text{clip}\left(\left\lfloor \frac{W_q + R_k D}{\alpha} \right\rceil + \beta, 0, 2^N - 1\right). W~q=clip(⌊αWq+RkD⌉+β,0,2N−1).
通过指定不同的 ( k ) 值,可以得到一组搜索空间。这里采用正交矩阵避免生成权重过大。
2. 奇异值分解生成(SVD Generation)
直接对 ( D ) 进行SVD分解:
D = U S V ⊤ , D = U S V^\top, D=USV⊤,
保持前 ( k ) 个奇异值,得到低秩近似:
D k = U k S k V k ⊤ , D_k = U_k S_k V_k^\top, Dk=UkSkVk⊤,
对应更新权重:
W ~ q = clip ( ⌊ W ^ q + D k α ⌉ + β , 0 , 2 N − 1 ) . \tilde{W}_q = \text{clip}\left(\left\lfloor \frac{\hat{W}_q + D_k}{\alpha} \right\rceil + \beta, 0, 2^N - 1\right). W~q=clip(⌊αW^q+Dk⌉+β,0,2N−1).
同样通过不同 ( k ) 值构建搜索空间。
3. AFM生成(AFM Generation)
AFM(Yu 和 Wu,2023)是压缩FC层的一种优于SVD的替代方法。其思想是利用主成分分析(PCA)对FC层进行低秩压缩,但AFM模仿的是模型输出而非权重。具体步骤如下:
假设
y ^ q = W ^ q x + b , Δ y = y − y ^ q = D x , \hat{y}_q = \hat{W}_q x + b, \quad \Delta y = y - \hat{y}_q = D x, y^q=W^qx+b,Δy=y−y^q=Dx,
对 (\Delta y) 计算协方差矩阵:
Cov ( Δ y ) = E [ Δ y Δ y ⊤ ] − E [ Δ y ] E [ Δ y ] ⊤ , \text{Cov}(\Delta y) = \mathbb{E}[\Delta y \Delta y^\top] - \mathbb{E}[\Delta y] \mathbb{E}[\Delta y]^\top, Cov(Δy)=E[ΔyΔy⊤]−E[Δy]E[Δy]⊤,
对其做SVD:
Cov ( Δ y ) = U S U ⊤ , \text{Cov}(\Delta y) = U S U^\top, Cov(Δy)=USU⊤,
提取前 ( k ) 列 ( U_k ),根据PCA理论:
Δ y − E [ Δ y ] ≈ U k U k ⊤ ( Δ y − E [ Δ y ] ) , \Delta y - \mathbb{E}[\Delta y] \approx U_k U_k^\top (\Delta y - \mathbb{E}[\Delta y]), Δy−E[Δy]≈UkUk⊤(Δy−E[Δy]),
进而有
Δ y ≈ U k U k ⊤ D x + E [ Δ y ] − U k U k ⊤ E [ Δ y ] . \Delta y \approx U_k U_k^\top D x + \mathbb{E}[\Delta y] - U_k U_k^\top \mathbb{E}[\Delta y]. Δy≈UkUk⊤Dx+E[Δy]−UkUk⊤E[Δy].
因此可近似表示输出为:
y ≈ ( W ^ q + U k U k ⊤ D ) x + b + E [ Δ y ] − U k U k ⊤ E [ Δ y ] . y \approx (\hat{W}_q + U_k U_k^\top D) x + b + \mathbb{E}[\Delta y] - U_k U_k^\top \mathbb{E}[\Delta y]. y≈(W^q+UkUk⊤D)x+b+E[Δy]−UkUk⊤E[Δy].
对应更新权重和偏置为:
W ~ q = clip ( ⌊ W ^ q + U k U k ⊤ D α ⌉ + β , 0 , 2 N − 1 ) , \tilde{W}_q = \text{clip}\left(\left\lfloor \frac{\hat{W}_q + U_k U_k^\top D}{\alpha} \right\rceil + \beta, 0, 2^N - 1\right), W~q=clip(⌊αW^q+UkUk⊤D⌉+β,0,2N−1),
b ~ = b + E [ Δ y ] − U k U k ⊤ E [ Δ y ] . \tilde{b} = b + \mathbb{E}[\Delta y] - U_k U_k^\top \mathbb{E}[\Delta y]. b~=b+E[Δy]−UkUk⊤E[Δy].
由于在推理阶段收集 (\Delta y) 需要较大内存,实践中我们采用流式方法自适应更新协方差矩阵和均值。
需要说明的是,我们采用低秩技术设计三种搜索空间生成策略,是因为低秩分解易于实现,能快速获得对 ( D ) 的近似且不破坏模型输出。虽然还可能存在其他生成算法,但正如后续结果所示,提升量化精度的关键是搜索思想及DWR框架本身,而非具体搜索空间——即使是随机生成的搜索空间,DWR也能超越原始LLM量化算法的精度。
丢弃权重回收(Discarded Weight Recycling,DWR)
获得搜索空间后,我们提出DWR框架。具体流程是先执行PTQ算法,然后运行DWR框架。先前的LLM PTQ算法会采样小规模校准集以辅助模型输出修正,我们同样沿用该校准集运行DWR,算法流程见算法1。
如算法所示,DWR首先计算原量化模型的困惑度(Perplexity,PPL)。随后,基于预先设计的搜索空间,逐层更新LLM的所有FC权重,并计算更新后模型在校准集上的困惑度。最终选择搜索空间中表现最优的权重进行替换,并将更新后的模型与原量化模型比较。如果更新模型困惑度更低,则接受该更新,否则保持原权重。该过程层层迭代直至最后一层。
为简化操作,使用随机生成策略时,固定每层对应的 ( R ) 矩阵。例如,不同LLM注意力块中的QKV FC层共享同一 ( R ) 矩阵,其他FC层同理。使用AFM生成时,先更新前一层权重,再计算下一层各FC权重的 (\text{Cov}(\Delta y))。计算 (\text{Cov}(\Delta y)) 时,补偿量化模型与原模型的输入 ( x ) 并不相同,但此处仅为生成权重搜索空间,故忽略此差异,采用原模型输入。
因此,DWR框架能灵活集成各种搜索空间生成方法,只要提供合理的潜在更新即可,体现了高度的灵活性。DWR不依赖具体量化算法,我们将证明三种策略均能超越原始量化模型性能。我们以量化模型的困惑度作为评价标准,引入全局信息,解决了是否接受丢弃权重这一决定性问题,是提升LLM量化精度的关键。如果计算资源充足,还可以在DWR之后进一步进行QAT训练,效果优于直接微调PTQ模型。
当然,以下是你提供的“Experiments”及“Conclusion, Limitation, and Future Work”部分的中文翻译:
实验
本节我们对所提方法进行评估。首先介绍实验设置,然后展示主要实验结果,最后进行若干分析。所有实验均基于PyTorch进行。
实验设置
基础模型
我们在BLOOM-7B1(Le Scao 等,2022)、LLaMA2的7B、13B、70B版本(Touvron 等,2023),以及LLaMA3-8B(Dubey 等,2024)上评估框架效果。
量化方案
针对PTQ方法,我们在BLOOM、LLaMA2和LLaMA3系列模型上采用GPTQ(Frantar 等,2022)进行INT4和INT3的权重量化。由于GPTQ不支持仅权重的INT2量化,我们在LLaMA2系列上采用OmniQuant(Shao 等,2023)实现仅权重INT2量化。我们的方法同样兼容其他PTQ方法,如AWQ(Lin 等,2024)和SPQR(Dettmers 等,2024b)。PTQ实验中采用组内非对称量化,组大小为128。GPTQ和OmniQuant分别从C4和WikiText2数据集中采样128个样本作为校准集,每个样本长度为2048个token。执行DWR时使用相同校准集。默认搜索空间方法为AFM生成。值得注意的是,LLaMA2的线性层无偏置,因此应用AFM时不更新偏置。实际中,我们会跳过前1/6层的补偿,因为这些层的误差积累非常小。