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

【论文笔记】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)方法通过两个矩阵的乘积近似模型变化,其中 和,且。 用高斯噪声初始化,而 用零初始化。LoRA 冻结原始模型 并更新“Noise & Zero”适配器,这可能导致收敛缓慢。
为克服这一限制,我们引入了主奇异值和奇异向量适应(Principal Singular values and Singular vectors Adaptation, PiSSA)。
PiSSA 具有与 LoRA 相同的架构,但使用原始矩阵 的主成分初始化适配器矩阵 和,并将剩余成分放入残差矩阵,该矩阵在微调过程中被冻结。
与 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 几乎没有成本。
简介
在全微调、使用LoRA训练和PiSSA训练之间的比较。在此可视化中,蓝色模块代表在训练过程中参数被冻结的模型部分,而橙色模块表示需要更新的组件。QLoRA将LoRA中的预训练矩阵量化为4位,而QPiSSA将PiSSA中的残差矩阵量化。
我们展示了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)层中计算矩阵 的奇异值分解(SVD)。
矩阵 的SVD 表示为,其中, 是具有正交归一化列的奇异向量,而 是 的转置。
,其中操作 将 转换为对角矩阵,且 表示按降序排列的奇异值。
当前 个奇异值 显著大于剩余奇异值 时,我们表示 的内在秩为。
因此, 沿同 和 可以分为两组:主奇异值和向量—,以及残差奇异值和向量—,其中矩阵切片符号与 PyTorch 中相同, 表示前 维。
主奇异值和向量用于初始化注入适配器,该适配器由 和 组成:
剩余的奇异值和向量用于构建残差矩阵,该矩阵在微调过程中被冻结:
将 与残差矩阵集成也保留了预训练模型在微调开始时的全部能力:
类似于LoRA, 和 的梯度也由下式给出: 和。由于,可训练适配器 包含了 中最重要的方向。在理想情况下,训练 模拟了微调整个模型的过程,尽管使用的参数较少。能够直接微调模型中最重要部分的能力使PiSSA能够更快更好地收敛。相比之下,LoRA使用高斯噪声和零初始化适配器 和,同时保持 冻结。因此,在微调的早期阶段,梯度很小或方向随机,可能引入大量的梯度下降步骤浪费。此外,较差的初始化可能导致找到次优的局部最小点,导致泛化性能更差。
由于PiSSA与LoRA具有相同的架构,因此它继承了LoRA的大部分优点。这些优点包括但不限于使用较少的可训练参数微调模型的能力、量化残差模型以减少训练期间前向传播的记忆消耗以及易于部署。适配器的简单线性结构便于在部署时将可训练矩阵与预训练权重集成,从而保持完全微调模型的原始推理速度。采用快速SVD技术使PiSSA能够在几秒钟内完成初始化,这是一个可以忽略的成本。
为了提高存储效率,我们可以选择不存储密集参数矩阵,而是存储低秩矩阵 和。仅利用 和 可以方便地与原始预训练模型无缝集成。最后,一个预训练模型可以容纳多个,通过不同的PiSSA或LoRA程序进行微调,这使得预训练模型能够快速适应不同的下游应用。
QPiSSA: PiSSA with Quantization
量化将矩阵的值范围划分为几个连续的区域,并将所有落在一个区域内的值映射到相同的“量化”值。这是一种有效的技术,可以减少前向传播的记忆消耗,但在反向传播时会失效。同时,LoRA大大减少了反向内存需求,使其非常适合与量化结合使用,其中基模型被量化以实现高效的前向传播,而LoRA适配器则保持全精度以进行准确的反向参数更新。一个具有代表性的先前工作,QLoRA,将基模型量化为 Normal Float 4-bit(NF4),并使用高斯零初始化初始化全精度 和。因此,总体误差由下式给出:
其中 表示核范数(也称为迹范数),定义为:
其中 是 的第 个奇异值。正如我们所见,QLoRA 的量化误差与直接量化基模型的误差相同。然而,我们的QPiSSA 不量化基模型而是残差模型。因此,其误差由下式给出:
由于残差模型已经去除了大奇异值成分,因此 的分布比 更窄,如图3a和3b所示(比较 和 的奇异值分布),以及图3c和3f所示(比较 和 的值分布),这对减少量化误差是有益的。此外,由于NF4针对正态分布数据进行了优化,我们分别为 和 的值拟合了一个高斯分布。如图3c和3f所示, 更像高斯分布,并且标准差更小,这使得将NF4应用于 而不是 更为合适。上述两点使QPiSSA相比QLoRA显著降低了量化误差,如图3d和3e所示。
除了减少量化误差的优势外,QPiSSA的梯度方向与PiSSA相似,与QLoRA相比,显著提高了微调性能。
实验
总结
本文提出了一种PEFT技术,将奇异值分解(SVD)应用于预训练模型的权重矩阵。从SVD中获得的特征值用于初始化一个低秩适配器PiSSA,而残差值则保持冻结,以同时实现有效的微调和参数效率。通过大量实验,我们发现PiSSA及其4位量化版本QPiSSA在NLG和NLU任务中,在不同训练步骤、各种模型大小和类型以及不同数量的可训练参数下,都显著优于LoRA和QLoRA。PiSSA通过识别和微调模型内的主成分,为PEFT研究提供了新的方向,类似于切割并重新烘烤披萨中最丰富的部分。由于PiSSA与LoRA具有相同的架构,它可以无缝地用于现有的LoRA管道,作为一种高效的初始化方法。