LoRA:论文提出的低秩适配方法

论文提出 LoRA:冻结预训练模型权重,并向 Transformer 每一层注入可训练的秩分解矩阵。

核验日期

定义

LoRA 论文提出低秩适配(LoRA):它冻结预训练模型权重,并向 Transformer 架构的每一层注入可训练的秩分解矩阵,从而大幅减少下游任务的可训练参数数量。论文引言指出,适配预训练模型通常通过微调完成,微调会更新预训练模型的全部参数。论文称,微调的主要缺点是新模型包含的参数与原始模型一样多。

论文摘要指出,随着预训练模型变大,全量微调(重新训练所有模型参数)变得不太可行。论文称,作者假设模型适配期间的权重变化也具有较低的“内在秩”,由此提出了 LoRA 方法。

一图看懂

论文称,其方案与训练目标无关,并以语言建模作为推动该方案的使用场景。论文的问题设定考虑把预训练模型适配到下游条件文本生成任务,例如摘要、机器阅读理解(MRC)和自然语言转 SQL(NL2SQL)。

  • 论文称,LoRA 将可训练的秩分解矩阵对并行地加在现有权重矩阵旁。
  • 论文称,LoRA 通过优化稠密层变化量的秩分解矩阵来间接训练部分稠密层,同时保持预训练权重冻结。
  • 论文称,部署时可以把可训练矩阵与冻结权重合并,与完全微调的模型相比不引入推理延迟。
  • 论文称,部署后只需替换 LoRA 权重而不是全部参数,就能以低得多的成本在任务之间切换。
  • 论文称,LoRA 通过共享绝大部分模型参数,在作为服务部署时支持快速切换任务。
  • 论文称,LoRA 与许多已有方法正交,可以与其中许多方法组合,例如前缀调优。

原文没有明确这些要点的先后顺序,因此按要点列出,不画先后箭头。

工作原理

论文指出,神经网络包含许多执行矩阵乘法的稠密层,这些层中的权重矩阵通常是满秩的。论文假设模型适配期间的权重变化具有较低的“内在秩”,这是 LoRA 方法的出发点。论文指出,在 Transformer 架构中,自注意力模块有四个权重矩阵,MLP 模块有两个。

论文把研究限定在为下游任务只适配注意力权重,并冻结 MLP 模块(因此它们不在下游任务中训练),理由是为了简单和参数效率。论文称,也可以不合并权重,而在批次中为不同样本动态选择要使用的 LoRA 模块,适用于延迟不是关键的场景。论文称,适配器层是以串行方式加到预训练模型上的外部模块,而 LoRA 可以看作以并行方式加入的外部模块。

论文描述,Houlsby 等人(2019)提出的适配器调优把适配器层插入自注意力模块(及 MLP 模块)与随后的残差连接之间。论文称,它观察到前缀调优难以优化,其性能随可训练参数变化呈非单调变化。论文指出,为适配预留一部分序列长度,必然会减少可用于处理下游任务的序列长度。

例子

论文以 GPT-3 175B 为例指出,部署各自拥有 175B 参数的多个独立微调模型实例,成本高得令人望而却步。论文摘要报告,与用 Adam 微调的 GPT-3 175B 相比,LoRA 可以把可训练参数数量减少 10,000 倍,把 GPU 显存需求减少 3 倍;这是论文在该模型和该微调基线下的报告,不应推广到任意 LoRA 配置。论文还报告,在 GPT-3 175B 上,训练期间的显存消耗从 1.2TB 降到了 350GB。

论文在 r=4、仅适配 query 和 value 投影矩阵的配置下报告,检查点大小缩小约 10,000 倍(从 350GB 到 35MB);部署时仍需要 350GB 的基础模型。论文以 GPT-3 175B 为例指出,即使完整秩 d 高达 12,288,很低的秩(r 可以是一或二)也已足够。在 GPT-3 175B 的 WikiSQL 和 MultiNLI 实验中,同时适配 Wq 和 Wv 时秩为一就已足够,只训练 Wq 则需要更大的 r。

论文同时说明,并不预期小 r 对每个任务或数据集都有效。论文称,其实验覆盖从自然语言理解(NLU)到生成(NLG)的多种任务,并在 GLUE 基准上评估了 RoBERTa 和 DeBERTa。论文还对语言模型适配中的秩亏问题做了实证研究,并称这有助于说明 LoRA 的有效性。

来源

本页内容整理自以下官方来源,点击可核对原文。

核验日期 ·

本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。