XYZNOT

论文 · arXiv 2106.09685

LoRA: 大语言模型的低秩自适应

LoRA: Low-Rank Adaptation of Large Language Models

发表于 cs.CLcs.AIcs.LG arXivPDF

用 XYZNOT 阅读(全文翻译与 AI 讲解)

三句话总结

  1. 🎯 像 GPT-3 175B 这样的海量语言模型在全量微调时,需要为每个下游任务重新训练并存储数十亿参数,带来了无法承受的存储、显存和部署瓶颈。
  2. 🔧 冻结预训练权重矩阵,并在 Transformer 密集层中注入可训练的低秩分解矩阵(),将乘积缩放 ,且支持部署时合并权重而无额外延迟。
  3. 📈 在 GPT-3 175B 上,LoRA 将可训练参数减少 10,000 倍,显存减少 3 倍(从 1.2TB 降至 350GB),同时在 GLUE、WikiSQL 和 SAMSum 上的表现媲美甚至超越全量微调。

摘要

自然语言处理的一个重要范式是对通用领域数据进行大规模预训练,并针对特定任务或领域进行适配。随着预训练模型规模的不断增大,对所有模型参数重新训练的全量微调变得愈发不可行。以 GPT-3 175B 为例——部署各自拥有 175B 参数的独立微调模型实例成本极其高昂。我们提出了低秩自适应(Low-Rank Adaptation, LoRA),该方法冻结预训练模型权重,并在 Transformer 架构的每一层注入可训练的秩分解矩阵,从而大幅减少下游任务的可训练参数量。与使用 Adam 微调的 GPT-3 175B 相比,LoRA 可将可训练参数量减少 10,000 倍,GPU 显存需求降低 3 倍。在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上,尽管 LoRA 的可训练参数量更少、训练吞吐量更高,且与 Adapter 不同,它不会引入额外的推理延迟,但在模型质量上表现出与全量微调相当或更好的性能。我们还对语言模型适配中的秩亏缺现象进行了实证研究,揭示了 LoRA 的有效性机制。我们发布了一个便于将 LoRA 与 PyTorch 模型集成的软件包,并在 https://github.com/microsoft/LoRA 提供了 RoBERTa、DeBERTa 和 GPT-2 的实现及模型权重。

英文原文摘要

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.

论文解读

问题与动机

将大规模预训练语言模型适配到多样化的下游应用,传统上依赖于全量微调(将所有参数 更新为 )。对于像 GPT-3 175B 这样的超大架构,存储和服务多个独立的 175B 参数模型副本在存储空间、GPU 显存和 I/O 开销方面都极其昂贵。先前的参数高效微调(PEFT)技术存在明显的缺陷:

  • 串联 Adapter 层(Series Adapter Layers):在 Transformer 模块中顺序插入瓶颈模块。由于这些顺序计算无法并行化,它们引入了显著的推理延迟——在单 GPU、小批量的在线服务场景下,前向传播速度最多会降低 。
  • Prefix / Prompt Tuning:优化添加到层激活前方的连续 prompt 向量。这些方法难以优化,其效果随 prompt 长度呈非单调缩放,并占用了本可用于上下文的序列长度预算。

基于下游迁移期间权重自适应更新 具有较低内在秩(intrinsic rank)的假设,LoRA 解决了这一效率与质量的权衡问题。

核心思想

  • 低秩重参数化(Low-Rank Reparametrization):对于冻结的密集矩阵 ,将自适应更新参数化为 ,其中 ,,且秩 。
  • 零额外推理延迟:由于该重参数化是线性的,训练好的低秩矩阵可以在部署时直接折叠(合并)到预训练权重中(),与微调相比具有完全相同的推理架构和零额外延迟开销。
  • 共享基础模型与热插拔:大型冻结模型在 GPU 显存中保持静态;切换任务只需更换低秩矩阵 和 ,将存储需求从数百 GB 骤降至数十 MB。
  • 选择性注意力层适配:仅对自注意力投影矩阵(特别是 query 和 value )应用秩分解,即可获得极具竞争力的性能,同时保持前馈 MLP 层处于冻结状态。

方法细节

对于输出为 的密集投影层,LoRA 将计算修改为:

关键实现细节:

  1. 初始化: 使用高斯随机分布 初始化, 初始化为零,确保在训练开始时 。
  2. 缩放因子:更新量 会乘以缩放因子 ,其中 是一个常数超参数。使用 Adam 优化时,将 设为初始秩 可以在尝试不同 值时避免重新调整学习率。
  3. 部署合并(Deployment Merging):在生产环境中,适配后的权重矩阵 可以显式实例化为 。当更换任务时,可通过减法恢复 (),并与新的 adapter 权重合并()。
  4. 目标层选择:尽管可应用于任何密集层,但实验主要集中在 Transformer 的注意力投影矩阵()上。将 的 LoRA 应用于 和 可获得最佳的下游效率。

实验结果

  • GPT-3 175B:LoRA 将可训练参数量从 175,255.8M 减少至 4.7M( 或 )或 37.7M(),检查点大小从 350GB 降至 35MB(减少了 10,000 倍),训练显存从 1.2TB 降至 350GB。训练吞吐量提升了 (单张 V100 GPU 上从 32.5 提升到 43.1 tokens/s)。
  • 下游准确率(GPT-3):
    • WikiSQL 逻辑形式验证准确率:全量微调达到 ;LoRA(37.7M)达到 。
    • MultiNLI 匹配验证准确率:全量微调达到 ;LoRA(4.7M)达到 。
    • SAMSum 对话摘要:全量微调得分为 52.0 / 28.0 / 44.5 ROUGE-1/2/L;LoRA(4.7M)达到 53.8 / 29.8 / 45.9。
  • RoBERTa 与 DeBERTa(GLUE 基准):在 RoBERTa Large 上,LoRA 仅用 0.8M 参数达到了与全量微调(355.0M 参数)相当的表现(平均得分 对比 )。在 DeBERTa XXL(1.5B)上,LoRA 以 4.7M 参数在 GLUE 上取得了 的平均分,而全量微调(1,500.0M 参数)为 。
  • 内在秩分析:子空间相似度分析表明, 和 时 的顶部奇异方向高度重叠(第 1 维归一化相似度 )。此外, 会放大 中存在但未被高度强调的方向,在 时放大因子 。

局限性与开放问题

  • 多任务批处理(Multi-Task Batching):当将低秩权重 合并到 中以消除推理延迟后,在单次前向传播中同时批处理多个不同任务的输入变得十分困难。
  • 启发式层选择:当前实践依赖于经验性启发式规则(如适配 和 ),而非基于严谨的理论框架来确定应在注意力层和 MLP 层中选择适配哪些矩阵。
  • 极端领域迁移:对于与预训练分布差异极大的下游任务(例如将英语 LLM 适配到完全不同的目标语言),低秩自适应与更高秩或全量微调相比可能表现不足。

关键术语

Low-Rank Adaptation (LoRA) (低秩自适应)
一种参数高效微调方法,冻结基础模型权重,并与密集层并行训练低秩分解矩阵。
Intrinsic Rank (内在秩)
在任务特定迁移过程中,捕捉有意义的参数自适应所需的低有效维度或奇异向量数量。
Adapter Layers (适配器层)
顺序插入到 Transformer 模块中的外部瓶颈模块,会引入不可并行的顺序计算和推理延迟。
Prefix Tuning (前缀微调)
一种自适应策略,将连续的可训练向量拼接到输入 token 或层隐藏状态的前部,会占用可用的序列上下文长度。
Weight Folding / Weight Merging (权重折叠 / 权重合并)
在推理期间将低秩矩阵 直接算术加到预训练权重矩阵 中,以消除运行时延迟开销。
Grassmann Distance Subspace Similarity (格拉斯曼距离子空间相似度)
一种衡量自适应更新的正交奇异向量矩阵列空间之间重叠程度的指标 。
Feature Amplification Factor (特征放大因子)
的 Frobenius 范数与 在 奇异子空间上的投影范数之比,用于衡量特定任务方向被强调的强度。

常见问题

为什么与 Adapter 相比,LoRA 不会引入额外的推理延迟?

因为 LoRA 是线性的(),在上线服务前可以显式计算低秩乘积 并直接累加到 中()。随后推理仅执行标准的矩阵乘法,而没有 Adapter 架构中导致延迟的顺序瓶颈层。

LoRA 应该应用于哪些 Transformer 权重矩阵?

在 GPT-3 上的实验表明,在固定的参数预算下,同时适配 query()和 value()投影权重可获得最佳性能。以较小的秩(例如 )适配多个注意力矩阵,其表现优于将所有参数分配给具有更高秩的单一类型矩阵。

适配大语言模型需要多大的秩 $r$?

通常极小的秩(例如 、 或 )对下游任务就已经足够。子空间相似度分析表明,小秩学到的顶部奇异向量与更高秩(例如 )学到的奇异向量高度重叠,而更高的秩大部分只是捕捉到了随机的优化噪声。

LoRA 是如何初始化其低秩矩阵的?

矩阵 使用随机高斯分布初始化,而矩阵 初始化为零。这确保了在训练开始时 ,模型的预训练前向传播输出保持不变。

本页解读由 AI 根据论文生成,可能有错误;细节请以原文为准。

用 XYZNOT 阅读(全文翻译与 AI 讲解)