LoRA(Low-Rank Adaptation,低秩适配)是一种参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)方法,由微软研究院 Edward J. Hu 等人在 2021 年提出。其核心思想是冻结预训练模型的原始权重,仅在 Transformer 各层旁注入可训练的低秩分解矩阵,从而在下游任务中大幅减少可训练参数与显存占用,同时保持与全参数微调相当甚至更优的模型质量。LoRA 因训练高效、可热插拔、推理零额外开销等特点,已成为大语言模型与扩散模型微调的主流方案之一。
LoRA 建立在"模型微调时的权重更新具有低内在秩"这一假设之上。研究发现,预训练大模型的权重更新矩阵虽然维度很高,但其携带的有效信息可以用一个远小于原始维度的低秩子空间来近似表达,因此无需更新全部参数即可完成适配。
在微调过程中,预训练模型的所有原始权重被完全冻结,不参与梯度更新。这样做保留了模型在大规模数据上学到的通用知识,避免因小数据集全量更新而导致的灾难性遗忘,也免去了为每个下游任务保存一份完整模型副本的开销。
对于原始权重矩阵 W,LoRA 不直接学习更新量 ΔW,而是将其分解为两个小矩阵的乘积,即 ΔW = B·A,其中 A 与 B 的秩 r 远小于原始维度。训练时只优化 A 和 B,可训练参数量因此下降数个数量级。
在训练开始时,矩阵 A 通常采用随机高斯分布初始化,为优化提供非零的初始梯度方向,使低秩分支能够从第一步开始参与学习。
矩阵 B 一般初始化为全零。这样在训练初始时刻,ΔW = B·A 恒为零,模型行为与原始预训练模型完全一致,保证训练从一个稳定的起点平滑出发,不会因随机扰动破坏预训练权重。
结合缩放系数后,初始时低秩分支对输出的贡献为零,随着训练进行逐步学习有效更新,有助于稳定收敛过程。
Transformer 的自注意力机制包含查询(Q)、键(K)、值(V)和输出(O)等投影矩阵。LoRA 在这些投影层旁并联低秩分支,对注意力的计算过程进行轻量级适配。
原始 LoRA 论文中,在 GPT 等模型上效果最佳的配置是仅适配 Q 和 V 投影矩阵。这一设置以极少的参数获得了与全参数微调相当的效果,是实践中最常用的起点配置。
LoRA 分支并联在原有权重之外,不修改原始 Transformer 结构,也不引入额外的串行计算层,因此推理时可与原权重合并,不增加前向传播延迟。
实践中可选择适配注意力层的 Q、K、V、O 投影,以及前馈网络(MLP)中的线性层。原始论文以适配 Q、V 为默认推荐,多数场景下已足够有效。
对于需要更强拟合能力的任务,可扩展到全部注意力投影乃至 MLP 层,以换取更好的效果,但可训练参数也会相应增加。目标模块的选择需在效果与效率之间权衡。
不同模型架构的层命名与组织方式不同,配置目标模块时需对应到实际模型中的线性层名称,确保低秩分支正确挂载到预期位置。
缩放因子 alpha 用于调节低秩分支对最终输出的贡献比例。其作用相当于一个可手动调节的"微调强度"旋钮,取值越大,LoRA 更新对模型行为的影响越明显。
在常见实现中,实际缩放比例通常为 alpha 与秩 r 的比值(alpha / r)。这种设计使得在调整秩时,可通过同步调整 alpha 保持更新幅度的相对稳定。
在图像生成等场景中,alpha 还可在推理阶段动态调节,用于在原始模型与微调效果之间做插值,实现风格强度的连续控制,而无需重新训练。
由于 ΔW = B·A 与原权重 W 具有相同的矩阵形状,训练完成后可直接将二者相加,得到新的权重 W' = W + B·A,形成一个与原模型结构完全一致的常规权重矩阵。
合并后的模型是一个普通权重矩阵,前向传播时不再需要额外的低秩分支计算,因此推理速度与原始模型完全相同,不引入任何额外延迟。
在合并之前,LoRA 权重也可作为独立的小文件保存与加载。这使得同一基础模型可搭配多个不同的 LoRA 权重,通过切换或组合实现快速的任务切换与多概念融合。
相比全参数微调,LoRA 可显著减少可训练参数与显存占用。以 GPT-3 175B 为例,原始论文指出 LoRA 可将可训练参数减少约一万倍、GPU 显存需求减少约三倍,使大模型微调的硬件门槛大幅下降。
可训练参数减少意味着更快的训练吞吐,研究者可以在相同时间内完成更多实验迭代,降低大模型适配的时间成本。
与 Adapter 等会引入串行计算层的微调方法不同,LoRA 可与原权重合并,推理时不增加任何额外开销,部署友好。
每个任务的 LoRA 权重体积极小,可 alongside 单一基础模型存储大量适配版本,任务切换时只需替换或合并对应的小权重文件。
LoRA 微调对数据质量较为敏感,高质量、与目标任务高度相关的数据集往往比单纯扩大数据量更重要。在指令微调等场景中,少量高质量样本即可获得良好效果。
训练数据需组织为与下游任务一致的输入输出格式,例如指令-回答对、文本续写样本等,确保模型在微调时学习到目标的行为模式。
在图像生成等视觉任务中,通常准备数十张清晰、角度多样的目标图片,并为其生成对应的文本描述(打标),用于训练特定风格或概念的 LoRA 模型。
由于可训练参数远少于全参数微调,LoRA 通常可以采用比全参数微调更高的学习率,以便在较少的参数空间中快速收敛。
学习率需与秩 r、缩放因子 alpha 协同考虑。调整秩或缩放比例时,往往需要同步调整学习率,以维持训练稳定性。
实践中常配合学习率调度器(如常数调度、带预热的调度等)与优化器(如 AdamW)使用,通过预热与衰减策略提升收敛的稳定性与最终效果。
由于每个任务的 LoRA 权重相互独立且体积极小,同一基础模型可为不同任务分别训练并保存多个 LoRA 权重,实现一对多的任务适配。
多个 LoRA 权重可通过加权合并的方式组合,使单一模型同时具备多种能力或融合多种风格,为多任务、多概念生成提供了灵活的基础。
部署时无需为每个任务加载完整模型副本,只需切换对应的 LoRA 权重即可完成适配,显著降低了多任务部署的存储与调度成本。
LoRA 现已成为 Hugging Face PEFT(Parameter-Efficient Fine-Tuning)库的核心方法之一。开发者可通过 LoraConfig 指定秩、目标模块、缩放因子等参数,再用 get_peft_model 快速为任意预训练模型注入 LoRA 层。
PEFT 封装了低秩层的注入、可训练参数筛选与检查点保存等细节,开发者只需在标准训练流程中调用相应接口,即可基于 transformers 生态完成 LoRA 微调。
除 PEFT 外,LoRA 也被 diffusers 等库集成,用于扩散模型的微调,并得到多家云与算力平台的支持,便于在云端 GPU 环境中开展训练与部署。
LoRA 被广泛应用于 Stable Diffusion 等扩散模型的微调。通过冻结原模型、注入低秩分支,用户可用少量图片训练出特定风格、角色或概念的 LoRA 模型。
相比 Dreambooth 等全量微调方式,LoRA 训练出的模型文件通常只有数 MB,训练时间可缩短至数分钟到十几分钟,便于分享、存储与多概念组合使用。
在推理阶段,LoRA 权重可与基础模型搭配,并通过缩放因子调节风格强度,实现画风的连续控制,已成为 AI 绘画社区中流行的自定义风格方案。
QLoRA 由 Dettmers 等人在 2023 年提出,它在 LoRA 的基础上,将冻结的基础模型权重量化为 4 位精度存储,使原本需要多卡的大模型可在单张 GPU 上完成微调。
QLoRA 引入了 4 位 NormalFloat(NF4)数据类型,这是一种针对正态分布权重信息论最优的编码方式,相比常规整型量化在存储效率上更优。
QLoRA 还采用双重量化(对量化常数再次量化)与分页优化器(利用统一内存在显存紧张时卸载优化器状态)等技术,进一步压低显存占用。原始论文表明,QLoRA 可在单张 48GB GPU 上微调 65B 参数模型,且性能接近 16 位全量微调。
全参数微调会更新模型的全部参数,而 LoRA 仅训练注入的低秩分支,原始权重保持冻结。这是二者最根本的差异。
全参数微调需要为每个任务保存完整的模型副本,存储与显存开销巨大;LoRA 只需保存极小的适配权重,资源占用大幅下降。
原始论文在 RoBERTa、DeBERTa、GPT-2、GPT-3 等模型上的实验表明,LoRA 在可训练参数更少、训练吞吐更高的前提下,模型质量与全参数微调相当甚至更优,且无额外推理延迟。
LoRA 在常规精度(如 FP16/BF16)下训练低秩分支,基础模型仍以完整精度加载;QLoRA 则进一步将冻结的基础模型量化到 4 位,在此基础上训练 LoRA 分支。
QLoRA 通过 4 位量化显著降低了基础模型的显存占用,使大模型微调的硬件门槛进一步下降,可在消费级 GPU 上完成原本难以承载的大模型适配。
当显存充足、追求训练速度时,标准 LoRA 更为直接;当显存受限、需要在有限硬件上微调大模型时,QLoRA 是更可行的选择,其质量损失通常较小。
DoRA(Weight-Decomposed Low-Rank Adaptation)由 NVIDIA 研究团队在 2024 年提出。它将预训练权重分解为"幅值"与"方向"两个分量进行微调,其中方向分量使用 LoRA 进行高效更新。
通过这种分解,DoRA 试图更接近全参数微调的学习能力,在提升 LoRA 学习能力与训练稳定性的同时,不引入额外的推理开销。
DoRA 论文(ICML 2024 Oral)指出,在 LLaMA、LLaVA、VL-BART 等模型的常识推理、视觉指令微调、图文理解等任务上,DoRA 一致性地优于标准 LoRA。
尽管 LoRA 在多数任务上表现接近全参数微调,但在部分对拟合能力要求较高的任务中,仍可能存在一定的性能差距,这通常与秩的选择和任务特性有关。
标准 LoRA 虽然减少了可训练参数,但基础模型本身仍需以完整精度加载,显存占用依然较高,这也是 QLoRA 等后续方法试图解决的问题。
秩、缩放因子、目标模块、学习率等超参数的选择会显著影响最终效果,实践中往往需要针对具体任务进行调优,存在一定的经验门槛。
在图像生成等场景中,LoRA 在风格迁移上表现较好,但在人脸等精细特征的还原上可能不及全量微调方案,需结合具体需求权衡使用。