LoRA - 大模型的低秩适应方法
人工智能咨询培训老师叶梓 转载标明出处
大规模预训练模型,如GPT-3,拥有高达1750亿参数,全参数微调不仅计算成本高昂,而且部署和维护多个微调实例变得非常困难。而且全参数微调需要大量的GPU内存,限制了同时训练的模型数量和并行实验的能力。表1为GPT-2中型模型使用不同方法进行推理时的延迟(以毫秒计)。表格中列出了不同批量大小、序列长度和可训练参数数量下的推理时间。
LoRA是一种新颖的参数高效适应方法,主要针对深度学习模型中的全连接层,其核心思想是在保持预训练模型权重不变的同时,通过在每个Transformer层中注入可训练的低秩分解矩阵来适应下游任务。这种方法显著减少了可训练参数的数量,降低了GPU内存需求,并提高了训练吞吐量。
论文链接:https://arxiv.org/pdf/2106.09685
代码地址:https://github.com/microsoft/LoRA
方法
LoRA的核心在于利用低秩分解来近似表示预训练模型在特定任务上的权重更新。这种方法的灵感来源于Aghajanyan等人(2020)的研究,他们发现即使是在随机投影到较小子空间的情况下,预训练语言模型仍然可以高效学习。基于此,LoRA假设在模型适应过程中权重更新具有低“内在秩”。图1展示了低秩适应(LoRA)方法的参数重参数化过程。
方法实现:对于一个预训练的权重矩阵 ,LoRA通过低秩分解 ΔW=BA 来约束其更新,其中 ,,并且 r≪min(d,k)。在训练过程中, 被固定,不接收梯度更新,而 A 和 B 包含可训练参数。注意,和 ΔW=BA 与相同的输入相乘,并且它们的输出向量按坐标相加。
公式:
初始化和缩放:在训练开始时,A 使用随机高斯初始化,B 初始化为零,使得ΔW=BA 初始为零。然后按 α/r 缩放 ΔWx,其中 α 是一个常数。使用Adam优化器时,调整α 大致等同于调整学习率,如果初始化适当缩放,我们简单地将 α 设置为首次尝试的 r 值,并且不进行调整。
适用性:原则上,我们可以将LoRA应用于神经网络中的任何权重矩阵子集,以减少可训练参数的数量。在Transformer架构中,自注意力模块有四个权重矩阵(),MLP模块有两个。在本研究中,选择只适应注意力权重,冻结MLP模块,以简化问题并提高参数效率。
实际优势和局限性:
- 优势:最显著的优势是减少了内存和存储使用。对于使用Adam训练的大型Transformer,如果 ,可以将VRAM使用量减少多达2/3,因为不需要为冻结的参数存储优化器状态。在GPT-3 175B上,将训练期间的VRAM消耗从1.2TB减少到350GB。通过仅适应查询和值投影矩阵,并且 r=4,检查点大小减少了约10,000倍(从350GB减少到35MB)。这使我们能够使用显著较少的GPU进行训练,并避免I/O瓶颈。另一个好处是,可以在部署时以更低的成本在任务之间切换,只需交换LoRA权重,而不是所有参数。这允许创建许多可以即时交换的定制模型。
- 局限性:例如,如果选择将A 和 B 合并到 W 中以消除额外的推理延迟,那么将不同任务的输入批量处理在单个前向传递中并不直接。尽管在延迟不关键的情况下,不合并权重并为批量中的样本动态选择LoRA模块是可能的。
通过上述方法,LoRA不仅提高了模型的参数效率,还保持了与传统全参数微调相当的性能,同时在实际应用中具有显著的优势。
想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。
加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。
实验
研究者们将LoRA与其他几种模型适应方法进行了比较,包括全参数微调(Fine-Tuning, FT)、仅训练偏置向量的BitFit、前缀嵌入调整(Prefix-embedding tuning, PreEmbed)、前缀层调整(Prefix-layer tuning, PreLayer)以及适配器调整(Adapter tuning)。这些方法被用作基线,以便展示LoRA在不同配置下的性能。
实验结果:
- RoBERTa base/large 和 DeBERTa XXL:在GLUE基准测试中,LoRA在保持较少可训练参数的同时,展现出了竞争力或更好的性能。
- GPT-2 medium/large:在E2E NLG Challenge上,LoRA同样表现出色,超越了多个基线方法。
实验数据:
- RoBERTa base (FT):125.0M 可训练参数,平均准确率为 86.4%
- RoBERTa large (LoRA):0.8M 可训练参数,平均准确率为 89.0%
- DeBERTa XXL (LoRA):4.7M 可训练参数,平均准确率为 91.3%
研究者们采用了预训练的RoBERTa base(125M)和RoBERTa large(355M)模型,并在GLUE基准测试的任务上评估了不同高效适应方法的性能。为了确保与适配器方法的公平比较,研究者们对LoRA的评估方式做了两个关键性的调整:首先,对所有任务使用相同的批量大小,并使用128的序列长度以匹配适配器基线;其次,对于MRPC、RTE和STS-B任务,模型初始化采用预训练模型,而不是像微调基线那样采用已经适应MNLI的模型。表2为RoBERTa基础版、RoBERTa大型版和DeBERTa XXL使用不同适应方法在GLUE基准测试上的性能。表格中列出了不同模型和方法在多个NLU任务上的平均准确率。
研究者们还评估了LoRA在DeBERTa XXL(1.5B参数)上的性能,这是一种在更大规模数据上训练的BERT变种,在GLUE和SuperGLUE等基准测试中表现出色。
研究者们进一步探索了LoRA在自然语言生成(NLG)模型上的表现,例如GPT-2中型和大型模型。他们尽量保持与Li & Liang (2021)的设置接近,以便进行直接比较。表3为GPT-2中型和大型模型使用不同适应方法在E2E NLG Challenge上的性能。表格中列出了不同模型和方法在NLG任务上的性能指标,如BLEU、NIST、METEOR、ROUGE-L和CIDEr。
研究者们将LoRA扩展到具有1750亿参数的GPT-3模型,作为对其有效性的最终压力测试。由于训练成本高昂,他们只报告了给定任务在随机种子上的典型标准偏差,而不是为每个条目提供一个。表4展示了不同适应方法在GPT-3 175B模型上的性能。表格中列出了在WikiSQL、MultiNLI-matched和SAMSum数据集上的验证准确率和ROUGE分数。
在WikiSQL、MultiNLI-matched和SAMSum数据集上,LoRA匹配或超过了全参数微调的基线。
并非所有方法都从拥有更多可训练参数中受益,如图2所示。使用超过256个特殊标记进行前缀嵌入调整或超过32个特殊标记进行前缀层调整时,性能显著下降。
图2 展示了在WikiSQL和MultiNLI-matched上,GPT-3 175B的验证准确率与可训练参数数量之间的关系。LoRA显示出更好的可扩展性和任务性能。
通过这些实验,研究者们证明了LoRA不仅能够有效减少模型的参数数量和内存需求,而且在多种自然语言处理任务中保持或提升了性能,是一种有效的模型适应方法。