基础模型的快速发展已经彻底改变了人工智能领域,其在自然语言处理,计算机视觉和科学发现等领域取得了前所未有的进步。然而,这些模型的大量参数(通常达到数十亿或数万亿)使其在适应特定下游任务方面构成了重大挑战。
低秩自适应(LoRA)已经成为缓解这些挑战的一种非常有前途的方法,它提供了一种参数高效的机制,以最小的计算开销来微调基础模型。
本文全面回顾了LoRA技术,从大型语言模型到一般基础模型,包括最新技术基础、新兴前沿和多个领域的低级别适应应用。最后,本文讨论了在理论理解,可扩展性和鲁棒性方面的关键挑战和未来的研究方向。
论文地址:[2501.00365] Low-Rank Adaptation for Foundation Models: A Comprehensive Review
-
简介
基础模型代表了人工智能的范式转变,其采用大尺寸,在广泛的数据集上进行预训练,可适用于广泛下游应用。这些模型跨越多个领域,包括自然语言处理,计算机视觉,语音处理,多模态学习和科学应用。这些架构已经成为现代人工智能系统的基本构建部分,使不同领域的突破性性能成为可能。
虽然这些模型表现出广泛、强大的能力,但通过微调进行特定任务的优化,实现定制化仍然至关重要。然而,它们的规模带来了重大的计算挑战,特别是在训练和微调所需的计算资源方面。尽管涉及完整参数更新的传统微调方法已在各种任务中证明了有效性,但其计算需求通常不切实际。
参数有效微调(Parameter-efficient fine-tuning,PEFT)方法已经成为这些计算挑战的解决方案。这些方法通过最小化可训练参数的数量来实现模型自适应,从而在不影响任务性能的情况下大幅降低计算要求。在这些方法中,低秩自适应(LoRA)及其变体由于其简单性,经验有效性以及在不同模型架构和领域的广泛适用性而受到广泛关注,如图所示。
LoRA基于两个关键见解,即微调期间的权重更新通常位于低维子空间,并且可使用低秩矩阵有效捕获特定任务的自适应信息。通过优化每个任务的低秩矩阵,同时冻结原始模型参数,LoRA实现了有效的自适应,并在不增加推理延迟的情况下实现了多个任务特定自适应的组合更新。
-
-
基础
LoRA虽然最初是为LLM开发的,但随后的研究已经证明了其在各种基础模型中的有效性。
LoRA的数学公式核心在于在微调期间将更新矩阵约束为低秩矩阵,如图所示,这是通过矩阵分解实现的:
,其中
,秩
。通过将
限制为低秩,LoRA最大限度地减少了微调过程中需要学习的参数量,从而提高了计算和存储效率。
这里,B和A的维度分别为d×r和r×d,其中r远小于d,d是原始权重矩阵的维度。因此,微调的参数量从原来的d×d减少到了2×r×d,显著降低了参数量和计算成本。
对于预训练权重矩阵W0,LoRA在微调过程中将其更新方式限制为W0+BA。在训练时,原始参数W0被冻结,即虽然W0会参与前向传播和反向传播,但不会计算其对应的梯度,更不会更新其参数。这样,模型在微调过程中主要学习的是低秩矩阵B和A,而不是直接更新原始的权重矩阵W0。在推理时,可以直接将BA合并到W0中,因此相比原始LLM不存在推理延时。
LoRA的这种设计不仅减少了参数量,还保持了模型的原有结构和性能。由于原始模型参数保持不变,只是通过添加少量的可训练参数来适应新的任务,因此LoRA可以在不同的任务上进行灵活应用,而不会对模型的原有能力造成影响。
参数初始化策略:LoRA采用特定的初始化策略来确保稳定和有效的训练。矩阵A通常用从随机高斯分布中提取的值初始化,而矩阵B用零初始化,这确保了在训练开始时,矩阵实际上是零矩阵。
微调过程:在LoRA中,微调过程遵循以下关键原则:
- 原始的预训练权重
保持冻结,并且在训练期间不接收梯度更新。
- 低秩矩阵A和B包含唯一可训练的参数,并针对特定任务进行调整。
- 将
和
分别应用于输入向量x,并将其输出组合起来。
- 输出
按α/r进行缩放。
- 其中,α/r是控制低秩更新幅度的比例因子。当使用Adam进行优化时,调整比例因子α大致类似于调整学习速率,前提是初始化被适当缩放。实际上,α的值可以根据秩r来设置,从而无需进行大量的超参数调整。
- 将生成的输出向量按元素求和:
-
LoRA相对于完全微调的优势。
LoRA在应用于大型基础模型时,与完全微调相比具有以下几个关键优势:
- 参数效率:LoRA通过低秩分解引入最小的可训练参数集,通常将任务特定参数的数量减少几个数量级。这种方法在资源受限的环境和需要对基本模型进行多次调整的多任务场景中尤其有利。
- 提高训练效率:与更新所有模型参数的传统全调不同,LoRA仅优化低秩自适应矩阵。该方法显著降低了计算成本和存储器需求,尤其是对于具有数十亿个参数的模型。减小的参数空间通常导致训练期间的更快收敛。
- 无延迟推理:LoRA不会引入额外的推理延迟,因为更新矩阵
可以并入原始冻结权重W。这种集成确保了适应的模型在部署和推理期间保持效率。
- 灵活的模块化适配:LoRA支持创建轻量级、特定任务的适配器,这些适配器无需修改基础模型架构即可互换。与为每个任务维护单独的模型实例相比,这种模块化便于高效的多任务学习和任务切换,同时最小化存储需求。
- 强大的知识保留:通过保持预训练的权值,LoRA有效地减轻了灾难性遗忘,这是传统微调中常见的挑战。这种方法在获取特定于任务的功能的同时,保持了模型的基础知识。
- 多功能部署:LoRA的紧凑特性有助于高效部署和系统集成。多个lora矩阵可以跨不同的任务或领域轻松地组合或交替使用,与传统的微调方法相比,提供了更高的灵活性。
-
-

基本技术细节
在本节中,我们将从四个关键方面研究LoRA的基本技术细节:参数效率提高、秩自适应策略、训练过程改进和理论基础。这些组成部分构成了LoRA有效性的技术基础。
参数效率提高
尽管通过LoRA及其向下投影A和向上投影B矩阵实现了参数效率增益,但该方法仍然需要大量的可训练参数。例如,将LoRA应用于LLaMA-270 B模型需要更新超过1600万个参数,超过了某些BERT架构的总参数。
目前的研究主要通过四种方法来解决这一问题:参数分解、修剪、冻结和共享以及量化。下图展示出了这些技术的示例。
参数分解
参数分解方法通过以更紧凑的形式分解矩阵来实现参数效率,同时保持任务性能。除了减少可训练参数之外,这些方法还能够在微调期间实现更精细的控制。目前的方法可以分为两种主要方法:更新矩阵分解和预训练权重分解。
更新矩阵分解:在更新矩阵分解方法中,出现了两种主要的分解策略:基于奇异值分解(SVD)的方法和基于张量训练(TT)的分解。
- 基于SVD的方法:AdaLoRA 以SVD的形式参数化更新权重:
,其中
和
分别表示矩阵W的左、右奇异向量,对角矩阵
包含奇异值。AdaLoRA根据重要性评分动态调整Δ W的秩,以在微调期间实现自适应参数效率。在此基础上,BiLoRA通过两级优化扩展了该框架,在不同的数据子集上分离奇异向量和值训练,以减轻过度拟合。
- 基于TT的方法。LoRETTA采用TT分解,将矩阵表示为一系列低秩、小的三维张量,通常称为核。给定一个矩阵
,首先将它整形为一个张量
,其中
.W的TT表示可以用公式表示为:
,其中
表示核张量,[r0,· · ·,rd]表示TT秩,其中r0 = rd = 1。这种分解将参数数从d × k减少到
。
预训练的权重分解:DoRA 通过归一化方法将预训练的权重W0分解为幅度和方向分量: