【论文笔记】PiSSA: Principal Singular Values and Singular Vectors Adaptation of Large Language Models

基本信息

标题: PiSSA: Principal Singular Values and Singular Vectors Adaptation of Large Language Models
作者: Fanxu Meng, Zhaohui Wang, Muhan Zhang
发表: NeurIPS 2024
arXiv: https://arxiv.org/abs/2404.02948

基本信息

摘要

为了参数高效地微调(PEFT)大型语言模型(LLMs),低秩适应(LoRA)方法通过两个矩阵的乘积近似模型变化ΔWRm×n\Delta W \in \mathbb{R}^{m \times n},其中ARm×rA \in \mathbb{R}^{m \times r}BRr×nB \in \mathbb{R}^{r \times n},且rmin(m,n)r \ll \min(m, n)AA 用高斯噪声初始化,而BB 用零初始化。LoRA 冻结原始模型WW更新“Noise & Zero”适配器,这可能导致收敛缓慢。

为克服这一限制,我们引入了主奇异值和奇异向量适应(Principal Singular values and Singular vectors Adaptation, PiSSA)。

PiSSA 具有与 LoRA 相同的架构,但使用原始矩阵WW 的主成分初始化适配器矩阵AABB,并将剩余成分放入残差矩阵WresRm×nW^{res} \in \mathbb{R}^{m \times n},该矩阵在微调过程中被冻结。

与 LoRA 相比,PiSSA 更新主成分同时冻结“残差”部分,允许更快的收敛和增强的性能。

对 12 种不同模型进行的比较实验,范围从 184M 到 70B,包括 5 个 NLG 和 8 个 NLU 任务,表明 PiSSA 在相同的实验设置下始终优于 LoRA。

在 GSM8K 基准测试中,使用 PiSSA 微调的 Mistral-7B 达到了 72.86% 的准确率,超过了 LoRA 的 67.7%,提高了 5.16%。

由于具有相同的架构,PiSSA 还兼容量化以进一步减少微调所需的内存需求。

与 QLoRA 相比,QPissA(带有 4 位量化的 PiSSA)在初始阶段表现出更小的量化误差。在 GSM8K 上微调 LLaMA-3-70B 时,QPissA 达到了 86.05% 的准确率,超过了 QLoRA 的 81.73%。

利用快速 SVD 技术,PiSSA 可以在几秒钟内初始化,从 LoRA 转换到 PiSSA 几乎没有成本。

简介

The comparison among Full Fine-tuning, training with LoRA, and PiSSA. In this visualization, blue modules represent parts of the model where parameters are frozen during training, while orange modules indicate components that require updates. QLoRA quantizes the pretrained matrix in LoRA to 4-bit, whereas QPiSSA quantizes the residual matrix in PiSSA

在全微调、使用LoRA训练和PiSSA训练之间的比较。在此可视化中,蓝色模块代表在训练过程中参数被冻结的模型部分,而橙色模块表示需要更新的组件。QLoRA将LoRA中的预训练矩阵量化为4位,而QPiSSA将PiSSA中的残差矩阵量化。

We illustrate the two key advantages of PiSSA: converging faster and better, and reducing quantization error. In the left figure, we use a toy example to show PiSSA’s faster convergence, where we first train a two-layer MLP classifying odd numbers of MNIST, and then fine-tune the model on even numbers. PiSSA finds the right direction more quickly and achieves a lower loss with the same number of steps. In the right figure, we show the quantization error reduction of PiSSA compared to directly quantizing the base model. PiSSA can reduce more quantization error than the baselines.

我们展示了PiSSA的两个关键优势:更快、更好地收敛,以及减少量化误差。在左图,我们用一个玩具示例来展示PiSSA的更快收敛,其中我们首先训练一个两层的MLP来分类MNIST的奇数,然后对偶数进行模型微调。PiSSA能更快地找到正确方向,并在相同步数下实现更低的损失。在右图,我们展示了与直接量化基模型相比,PiSSA的量化误差降低。PiSSA能比基线减少更多的量化误差。

PiSSA: Principal Singular Values and Singular Vectors Adaptation

这部分正式介绍了我们的 Principal Singular values and Singular vectors Adaptation (PiSSA) 方法。

PiSSA 在自注意力层和多层感知机(MLP)层中计算矩阵WRm×nW \in \mathbb{R}^{m \times n} 的奇异值分解(SVD)。

矩阵WW 的SVD 表示为W=USVTW = U S V^T,其中URm×min(m,n)U \in \mathbb{R}^{m \times \min(m, n)}VRn×min(m,n)V \in \mathbb{R}^{n \times \min(m, n)} 是具有正交归一化列的奇异向量,而VTV^TVV 的转置。

S=diag(s)Rmin(m,n)×min(m,n)S = \text{diag}(\mathbf{s}) \in \mathbb{R}^{\min(m, n) \times \min(m, n)},其中操作diag(s)\text{diag}(s)ss 转换为对角矩阵SS,且sR0min(m,n)\mathbf{s} \in \mathbb{R}_{\geq 0}^{\min(m, n)} 表示按降序排列的奇异值。

当前rr 个奇异值s[1:r]\mathbf{s}_{[1:r]} 显著大于剩余奇异值s[r:]\mathbf{s}_{[r:]} 时,我们表示WW 的内在秩为rr

因此,SS 沿同UUVV 可以分为两组:主奇异值和向量—{U[:,r],S[r:,r],V[:,r]}\{U_{[:, r]}, S_{[r:, r]}, V_{[:, r]}\},以及残差奇异值和向量—{U[:,r:],S[r:,r:],V[:,r:]}\{U_{[:, r:]}, S_{[r:, r:]}, V_{[:, r:]}\},其中矩阵切片符号与 PyTorch 中相同,[:r][:r] 表示前rr 维。

主奇异值和向量用于初始化注入适配器,该适配器由ARm×rA \in \mathbb{R}^{m \times r}BRr×nB \in \mathbb{R}^{r \times n} 组成:

A=U[:,r]S[r:,r]1/2Rm×rA = U_{[:, r]} S_{[r:, r]}^{1/2} \in \mathbb{R}^{m \times r}

B=S[r:,r]1/2V[:,r]TRr×nB = S_{[r:, r]}^{1/2} V_{[:, r]}^T \in \mathbb{R}^{r \times n}

剩余的奇异值和向量用于构建残差矩阵,该矩阵在微调过程中被冻结:

Wres=U[:,r:]S[r:,r:]V[:,r:]TRm×nW^{res} = U_{[:,r:]} S_{[r:,r:]} V_{[:,r:]}^T \in \mathbb{R}^{m \times n}

ABAB 与残差矩阵集成也保留了预训练模型在微调开始时的全部能力:

Y=XW=X(Wres+Wpri)=X(Wres+AB)Y = XW = X(W^{res} + W^{pri}) = X(W^{res} + AB)

类似于LoRA,AABB 的梯度也由下式给出:LA=XT(LY)BT\frac{\partial L}{\partial A} = X^T \left( \frac{\partial L}{\partial Y} \right) B^TLB=ATXT(LY)\frac{\partial L}{\partial B} = A^T X^T \left( \frac{\partial L}{\partial Y} \right)。由于s[:,r]s[r:]s_{[:,r]} \gg s_{[r:]},可训练适配器Wpri=ABW^{pri} = AB 包含了WW 中最重要的方向。在理想情况下,训练ABAB 模拟了微调整个模型的过程,尽管使用的参数较少。能够直接微调模型中最重要部分的能力使PiSSA能够更快更好地收敛。相比之下,LoRA使用高斯噪声和零初始化适配器AABB,同时保持WW 冻结。因此,在微调的早期阶段,梯度很小或方向随机,可能引入大量的梯度下降步骤浪费。此外,较差的初始化可能导致找到次优的局部最小点,导致泛化性能更差。

由于PiSSA与LoRA具有相同的架构,因此它继承了LoRA的大部分优点。这些优点包括但不限于使用较少的可训练参数微调模型的能力、量化残差模型以减少训练期间前向传播的记忆消耗以及易于部署。适配器的简单线性结构便于在部署时将可训练矩阵与预训练权重集成,从而保持完全微调模型的原始推理速度。采用快速SVD技术使PiSSA能够在几秒钟内完成初始化,这是一个可以忽略的成本。

为了提高存储效率,我们可以选择不存储密集参数矩阵ΔW\Delta W,而是存储低秩矩阵ΔA\Delta AΔB\Delta B。仅利用ΔA\Delta AΔB\Delta B 可以方便地与原始预训练模型无缝集成。最后,一个预训练模型可以容纳多个ΔA,ΔB\Delta A, \Delta B,通过不同的PiSSA或LoRA程序进行微调,这使得预训练模型能够快速适应不同的下游应用。

QPiSSA: PiSSA with Quantization

量化将矩阵的值范围划分为几个连续的区域,并将所有落在一个区域内的值映射到相同的“量化”值。这是一种有效的技术,可以减少前向传播的记忆消耗,但在反向传播时会失效。同时,LoRA大大减少了反向内存需求,使其非常适合与量化结合使用,其中基模型被量化以实现高效的前向传播,而LoRA适配器则保持全精度以进行准确的反向参数更新。一个具有代表性的先前工作,QLoRA,将基模型量化为 Normal Float 4-bit(NF4),并使用高斯零初始化初始化全精度AABB。因此,总体误差由下式给出:

Quantization Error of QLoRA=W(nf4(W)+AB)=Wnf4(W)\text{Quantization Error of QLoRA} = ||W - (nf4(W) + AB)||_* = ||W - nf4(W)||_*

其中M||M||_* 表示核范数(也称为迹范数),定义为:

M=trace(MM)=i=1min{m,n}σi(M)||M||_* = \text{trace}\left(\sqrt{M^* M}\right) = \sum_{i=1}^{\min\{m,n\}} \sigma_i(M)

其中σi(M)\sigma_i(M)MM 的第ii 个奇异值。正如我们所见,QLoRA 的量化误差与直接量化基模型的误差相同。然而,我们的QPiSSA 不量化基模型而是残差模型。因此,其误差由下式给出:

Quantization Error of QPiSSA=W(nf4(Wres)+AB)=Wresnf4(Wres)\text{Quantization Error of QPiSSA} = ||W - (nf4(W^{res}) + AB)||_* = ||W^{res} - nf4(W^{res})||_*

由于残差模型已经去除了大奇异值成分,因此WresW^{res} 的分布比WW 更窄,如图3a和3b所示(比较WWWresW^{res} 的奇异值分布),以及图3c和3f所示(比较WWWresW^{res} 的值分布),这对减少量化误差是有益的。此外,由于NF4针对正态分布数据进行了优化,我们分别为WWWresW^{res} 的值拟合了一个高斯分布。如图3c和3f所示,WresW^{res} 更像高斯分布,并且标准差更小,这使得将NF4应用于WresW^{res} 而不是WW 更为合适。上述两点使QPiSSA相比QLoRA显著降低了量化误差,如图3d和3e所示。

Figures (a), (b), (d) and (e) visualize the singular values in descending order for W , W res, W − nf 4(W ) and W res − nf 4(W res) of LLaMA 2-7B’s “layers[0].self_attn.q_proj” matrix. Figures (c) and (f) show the data value distributions of W and W res.

除了减少量化误差的优势外,QPiSSA的梯度方向与PiSSA相似,与QLoRA相比,显著提高了微调性能。

实验

Comparing PiSSA and LoRA on NLG tasks

Comparing PiSSA and LoRA on NLU tasks. Details can be found in Appendix I.

The loss, grad norm, and evaluation accuracy over the training steps of LoRA (indicated in blue), PiSSA (in orange), and full parameter fine-tuning (in green).

The quantization error reduction ratio of QLoRA, LoftQ, and PiSSA across different layers

The loss, grad norm, and evaluation accuracy over the training steps of (Q)LoRA, (Q)PiSSA, LoftQ and full parameter fine-tuning.

Comparison of (Q)PiSSA and (Q)LoRA across models from 7B to 70B

The comparison among (Q)LoRA, (Q)PiSSA, LoftQ, and full fine-tuning across ranks.

总结

本文提出了一种PEFT技术,将奇异值分解(SVD)应用于预训练模型的权重矩阵。从SVD中获得的特征值用于初始化一个低秩适配器PiSSA,而残差值则保持冻结,以同时实现有效的微调和参数效率。通过大量实验,我们发现PiSSA及其4位量化版本QPiSSA在NLG和NLU任务中,在不同训练步骤、各种模型大小和类型以及不同数量的可训练参数下,都显著优于LoRA和QLoRA。PiSSA通过识别和微调模型内的主成分,为PEFT研究提供了新的方向,类似于切割并重新烘烤披萨中最丰富的部分。由于PiSSA与LoRA具有相同的架构,它可以无缝地用于现有的LoRA管道,作为一种高效的初始化方法。