改变LoRA的初始化方式,北大新方法PiSSA显著提升微调效果

简介: 【4月更文挑战第23天】北京大学团队提出的新方法PiSSA,基于SVD进行参数高效微调,降低计算成本。PiSSA通过聚焦低秩矩阵训练,实现与全参数微调相当甚至更好的性能,快于LoRA收敛且在五个基准测试中胜出。PiSSA继承LoRA的参数效率,初始化仅需几秒,适合快速适应不同下游任务。尽管有潜力,但其在更大模型和任务上的效果,以及与LoRA结合的可能优化,仍是未来研究课题。[链接](https://arxiv.org/pdf/2404.02948.pdf)

在大型语言模型(LLMs)的研究与应用中,如何高效地进行微调(fine-tuning)一直是研究者们关注的焦点。随着模型参数的不断增加,传统的全参数微调方法在计算成本上变得难以承受。为了解决这一问题,北京大学的研究团队提出了一种新的参数高效微调方法——PiSSA(Principal Singular values and Singular vectors Adaptation),该方法在大幅减少参数空间的同时,实现了与全参数微调相当甚至更优的性能。

PiSSA的核心思想是利用矩阵的奇异值分解(SVD)来提取模型权重矩阵的主要组成部分,并将其用于初始化微调过程中的适配器。这种方法的灵感来源于Intrinsic SAID理论,该理论认为预训练的、过度参数化的模型实际上存在于一个低维的内在空间。因此,PiSSA通过将权重矩阵分解为一个低秩矩阵和一个残差矩阵,只对低秩矩阵进行训练,而保持残差矩阵不变。这种策略使得PiSSA在微调开始时就能更好地逼近全参数微调的结果,同时冻结了“噪声”部分,从而加快了收敛速度并提高了最终性能。

与现有的LoRA(Low-Rank Adaptation)方法相比,PiSSA在初始化时使用了权重矩阵的主要奇异值和奇异向量,而不是像LoRA那样使用高斯噪声和零进行初始化。这种差异使得PiSSA在微调过程中能够更快地收敛,并且在最终性能上也超越了LoRA。实验结果表明,在五个常见的基准测试中,PiSSA在所有测试中都超越了LoRA,并且在GS8K数据集上,使用PiSSA微调的Mistral-7B模型达到了72.86%的准确率,比LoRA的67.7%高出5.16%。

PiSSA方法不仅在性能上表现出色,而且继承了LoRA的许多优点,如参数效率和与量化技术的兼容性。利用快速SVD方法,PiSSA的初始化过程只需要几秒钟,从LoRA切换到PiSSA的成本可以忽略不计。此外,PiSSA的线性结构使得在部署时能够轻松地将可训练矩阵与预训练权重结合起来,保持了完全微调模型的原始推理速度。对于存储效率,可以选择不存储密集的参数矩阵∆W,而是存储低秩矩阵{A, B}。在实际应用中,这意味着可以通过快速的SVD技术在预训练模型上进行PiSSA的初始化,然后将其分配给适配器,从而实现对不同下游应用的快速适应。

尽管PiSSA在多个方面展现了其优势,但仍有一些潜在的问题和挑战需要在未来的研究中加以探讨。例如,PiSSA在更广泛的任务和更大的模型上能否取得显著的改进?当LoRA的迭代步骤足够长(充分拟合数据)时,它是否能够匹配PiSSA的性能?将LoRA的后续方法与PiSSA结合是否能够进一步提升性能?如何从理论上解释PiSSA相对于LoRA的优势?这些问题都是未来研究的重要方向。

论文链接: https://arxiv.org/pdf/2404.02948.pdf

目录
打赏
0
7
7
2
391
分享
相关文章
一文尽览 | 开放世界目标检测的近期工作及简析!(基于Captioning/CLIP/伪标签/Prompt)(上)
人类通过自然监督,即探索视觉世界和倾听他人描述情况,学会了毫不费力地识别和定位物体。我们人类对视觉模式的终身学习,并将其与口语词汇联系起来,从而形成了丰富的视觉和语义词汇,不仅可以用于检测物体,还可以用于其他任务,如描述物体和推理其属性和可见性。人类的这种学习模式为我们实现开放世界的目标检测提供了一个可以学习的角度。
一文尽览 | 开放世界目标检测的近期工作及简析!(基于Captioning/CLIP/伪标签/Prompt)(上)
|
4月前
|
StableDiffusion-04 (炼丹篇) 15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(一)
StableDiffusion-04 (炼丹篇) 15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(一)
60 1
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
Diff-Instruct 是一种从预训练扩散模型中迁移知识的通用框架,通过最小化积分Kullback-Leibler散度,指导其他生成模型的训练,提升生成性能。
78 11
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
|
4月前
|
StableDiffusion-04 (炼丹篇) 15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(二)
StableDiffusion-04 (炼丹篇) 15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(二)
55 0
|
4月前
|
StableDiffusion-03 (准备篇)15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(二)
StableDiffusion-03 (准备篇)15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(二)
53 1
StableDiffusion-03 (准备篇)15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(一)
StableDiffusion-03 (准备篇)15分钟 部署服务并进行LoRA微调全过程详细记录 不到20张百变小樱Sakura微调 3090(24GB) 学不会你打我!(一)
53 0
Keras 高级教程:模型微调和自定义训练循环
我们在前两篇文章中介绍了如何使用 Keras 构建和训练深度学习模型的基础和中级知识。在本篇文章中,我们将探讨一些更高级的主题,包括模型微调和自定义训练循环。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等