96SEO 2026-02-23 15:20 9
相比模型的全微调#xff0c;作者提出固定预训练模型参数不变#xff0c;在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数#xff0c;用以模拟参数的变化量。

相比模型的全微调作者提出固定预训练模型参数不变在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数用以模拟参数的变化量。
hW0x△WxW0xBAx,B∈Rd×r,A∈Rr×k,r≪min(d,k)
为了简单和参数效率我们将研究限制为仅适应下游任务的注意力权重并冻结MLP模块(因此它们不接受下游任务的训练)
自然语言处理的一个重要范例是对一般领域数据进行大规模预训练并适应特定的任务或领域。
当我们预训练更大的模型时重新训练所有模型参数的完全微调变得不太可行。
以GPT-3
175B为例部署独立的微调模型实例每个实例都有175B参数这是非常昂贵的。
我们提出了低秩自适应(Low-Rank
LoRA)它冻结了预训练的模型权重并将可训练的秩分解矩阵注入到Transformer架构的每一层从而大大减少了下游任务的可训练参数的数量。
与经过Adam微调的GPT-3
175B相比LoRA可以将可训练参数的数量减少10,000倍GPU内存需求减少3倍。
在RoBERTa、DeBERTa、GPT-2和GPT-3上LoRA在模型质量方面的表现与调优相当或更好尽管具有更少的可训练参数、更高的训练吞吐量并且与适配器不同没有额外的推理延迟。
我们还对语言模型适应中的等级缺陷进行了实证研究从而揭示了LoRA的有效性。
我们发布了一个包来促进LoRA与PyTorch模型的集成并在https://github.com/microsoft/LoRA上为RoBERTa、DeBERTa和GPT-2提供我们的实现和模型检查点。
自然语言处理中的许多应用依赖于将一个大规模的预训练语言模型适应多个下游应用。
这种适应通常是通过微调来完成的微调会更新预训练模型的所有参数。
微调的主要缺点是新模型包含与原始模型一样多的参数。
由于每隔几个月就会训练更大的模型对于GPT-2
(Liu等人2019)来说这仅仅是一个“不便”而对于具有1750亿个可训练参数的GPT-3
(Brown等人2020)来说这是一个关键的部署挑战许多人试图通过调整一些参数或学习外部模块来缓解这种情况。
这样除了每个任务的预训练模型外我们只需要存储和加载少量的特定于任务的参数大大提高了部署时的运行效率。
然而现有的技术经常引入推理延迟(Houlsby等人2019;Rebuffi等人2017)通过扩展模型深度或减少模型的可用序列长度(Li
2021;Lester等人2021;Hambardzumyan等2020;Liu
2021)(第3节)。
更重要的是这些方法往往无法匹配微调基线从而在效率和模型质量之间做出权衡。
我们从Li等人(2018a)那里获得灵感;Aghajanyan等人(2020)的研究表明学习到的过度参数化模型实际上存在于低内在维上。
我们假设模型适应过程中的权重变化也具有较低的“内在秩”从而提出了低秩适应(low
LoRA)方法。
LoRA允许我们通过优化密集层在适应过程中变化的秩分解矩阵来间接训练神经网络中的一些密集层同时保持预训练的权值不变如图1所示。
以GPT-3
175B为例我们展示了即使在全秩(即d)高达12,288时非常低的秩(即图1中的
r可以是1或2)也足够了这使得LoRA既具有存储效率又具有计算效率。
•预先训练的模型可以共享并用于为不同的任务构建许多小型LoRA模块。
我们可以通过替换图1中的矩阵A和B来冻结共享模型并有效地切换任务从而显著降低存储需求和任务切换开销。
•LoRA使训练更有效并且在使用自适应优化器时将硬件进入门槛降低了3倍因为我们不需要计算梯度或维护大多数参数的优化器状态。
相反我们只优化注入的小得多的低秩矩阵。
•我们简单的线性设计允许我们在部署时将可训练矩阵与冻结权重合并与完全微调的模型相比通过构建不会引入推理延迟。
•LoRA与许多先前的方法正交并且可以与其中许多方法组合例如前缀调优。
我们在附录E中提供了一个例子。
我们经常引用Transformer体系结构并对其维度使用常规术语。
我们将Transformer层的输入和输出维度大小称为
Wq,Wk,Wv,Wo来指代自关注模块中的查询/键/值/输出投影矩阵。
虽然我们的建议与训练目标无关但我们将重点放在语言建模上作为我们的激励用例。
下面是对语言建模问题的简要描述特别是在给定特定任务提示的情况下最大化条件概率。
(Radford等人b;Brown等人2020)基于Transformer架构(Vaswani等人2017)。
考虑将此预训练模型应用于下游条件文本生成任务例如摘要、机器阅读理解(MRC)和自然语言转换为SQL
(NL2SQL)。
每个下游任务由上下文-目标对的训练数据集表示:
\mathcal{Z}\{(x_i,y_i)\}_{i1,...,N}
完全微调的主要缺点之一是对于每个下游任务我们学习一组不同的参数
∣Φ0∣≈1750亿)存储和部署许多独立的微调模型实例可能是具有挑战性的如果可行的话。
在本文中我们采用了一种参数效率更高的方法其中特定于任务的参数增量
我们着手解决的问题绝不是什么新问题。
自从迁移学习开始以来已经有几十项工作试图使模型适应更具有参数和计算效率。
关于一些著名作品的概览见第6节。
以语言建模为例在有效适应方面有两种突出的策略:添加适配器层(Houlsby等人2019;Rebuffi
2017;Pfeiffer等2021;Ruckl¨e等人2020)或优化输入层激活的某些形式(Li
2021;Lester等人2021;Hambardzumyan等2020;Liu
2021)。
然而这两种策略都有其局限性特别是在大规模和对延迟敏感的生产场景中。
表1:GPT-2介质中单个正向传递的延迟时间(以毫秒为单位)平均超过100次试验。
我们使用的是NVIDIA
∣Θ∣”表示适配器层中可训练参数的数量。
AdapterL和AdapterH是适配器调优的两个变体我们将在5.1节中描述。
在在线、短序列长度的场景中适配器层引入的推理延迟可能非常大。
详见附录B的完整研究。
适配器有许多变体。
我们专注于Houlsby等人(2019)的原始设计每个Transformer块有两个适配器层Lin等人(2020)的最新设计每个块只有一个适配器层但有一个额外的LayerNorm
(Ba等人2016)。
虽然可以通过修剪层或利用多任务设置来减少总体延迟(Ruckl¨e等人2020;Pfeiffer等人2021)没有直接的方法绕过适配器层中的额外计算。
这似乎不是问题因为适配器层被设计为具有很少的参数(有时原始模型的1%)通过具有较小的瓶颈维度这限制了它们可以添加的flop。
然而大型神经网络依赖于硬件并行性来保持低延迟适配器层必须按顺序处理。
这在批处理大小通常小于1的在线推理设置中会产生差异。
在没有模型并行性的通用场景中例如在单个GPU上运行GPT-2
b)介质上的推理我们看到使用适配器时延迟明显增加即使瓶颈维度非常小(表1)。
当我们需要像Shoeybi等人(2020)那样对模型进行分片时这个问题会变得更糟;Lepikhin等人(2020)因为额外的深度需要更多的同步GPU操作如AllReduce和Broadcast除非我们多次冗余存储适配器参数。
2021)面临着不同的挑战。
我们观察到前缀调优很难优化其性能在可训练参数中呈非单调变化证实了原论文的类似观察结果。
更根本的是为自适应保留一部分序列长度必然会减少用于处理下游任务的序列长度我们怀疑与其他方法相比这使得调整提示的性能降低。
我们把对任务执行的研究推迟到第5节。
我们描述了LoRA的简单设计及其实际效益。
这里概述的原则适用于深度学习模型中的任何密集层尽管在我们的实验中我们只关注Transformer语言模型中的某些权重作为激励用例。
神经网络包含许多执行矩阵乘法的密集层。
这些层中的权矩阵通常是全秩的。
当适应一个特定的任务时Aghajanyan等人(2020)表明预训练的语言模型具有较低的“内在维度”尽管随机投影到较小的子空间但仍然可以有效地学习。
受此启发我们假设权重的更新在适应过程中也具有较低的“内在秩”。
对于预训练的权重矩阵
r中的常数。
当使用Adam进行优化时如果我们适当地缩放初始化则调整
全微调的推广。
更一般的微调形式允许训练预训练参数的子集。
LoRA更进一步在适应过程中不要求权重矩阵的累积梯度更新具有全秩。
这意味着当将LoRA应用于所有权重矩阵并训练所有偏差时通过将LoRA秩
r设置为预训练的权重矩阵的秩我们大致恢复了完全微调的表达性。
换句话说当我们增加可训练参数的数量时训练LoRA大致收敛于训练原始模型而基于适配器的方法收敛于MLP基于前缀的方法收敛于不能接受长输入序列的模型。
**没有额外的推理延迟。
当部署到生产环境中时我们可以显式地计算和存储
W0这是一个内存开销很小的快速操作。
**至关重要的是这保证在推理期间与通过构造进行微调的模型相比我们不会引入任何额外的延迟。
原则上我们可以将LoRA应用于神经网络中权矩阵的任何子集以减少可训练参数的数量。
在Transformer体系结构中自关注模块
dmodel×dmodel的单个矩阵尽管输出维度通常被分割成注意头。
为了简单和参数效率我们将研究限制为仅适应下游任务的注意力权重并冻结MLP模块(因此它们不接受下游任务的训练)。
在7.1节中我们进一步研究了在Transformer中适应不同类型的注意力权重矩阵的影响。
我们把适应MLP层、LayerNorm层和偏差的实证调查留给未来的工作。
最大的好处来自内存和存储使用的减少。
对于亚当训练的大型Transformer如果
我们将VRAM使用量减少2/3因为我们不需要存储冻结参数的优化器状态。
在GPT-3
175B上我们将训练期间的VRAM消耗从1.2TB减少到350GB。
当
r4并且只调整查询和值投影矩阵时检查点大小减少了大约10,000倍(从350GB减少到35MB)4。
这使我们能够使用更少的gpu进行训练并避免I/O瓶颈。
另一个好处是我们可以在部署时以低得多的成本在任务之间切换只需交换LoRA权重而不是所有参数。
这允许创建许多定制模型这些模型可以在将预训练的权重存储在VRAM中的机器上动态交换。
我们还观察到在GPT-3
175B的训练过程中与完全微调相比速度提高了25%因为我们不需要计算绝大多数参数的梯度。
B的不同任务的输入是不直接的。
尽管对于延迟不重要的场景可以不合并权重并动态选择用于批量示例的LoRA模块。
(Brown等人2020)之前我们评估了LoRA在RoBERTa
(Radford等人b)上的下游任务性能。
我们的实验涵盖了广泛的任务从自然语言理解(NLU)到生成(NLG)。
具体来说我们对RoBERTa和DeBERTa的GLUE
Liang(2021)在GPT-2上的设置进行直接比较并添加了WikiSQL
(Gliwa等人2019)(对话摘要)在GPT-3上进行大规模实验。
有关我们使用的数据集的更多细节请参阅附录C。
我们使用NVIDIA
就所需的硬件和为不同任务托管独立实例的存储/切换成本而言对庞大的语言模型进行微调是非常昂贵的。
我们提出LoRA一种有效的自适应策略既不引入推理延迟也不减少输入序列长度同时保持高模型质量。
重要的是通过共享绝大多数模型参数它允许在作为服务部署时快速切换任务。
虽然我们关注的是Transformer语言模型但所提出的原则通常适用于任何具有密集层的神经网络。
LoRA可以与其他有效的自适应方法相结合有可能提供正交改进。
2)微调或LoRA背后的机制尚不清楚——**如何将预训练期间学习到的特征转化为下游任务?我们相信LoRA比全微调更容易回答这个问题。
**3)我们主要依靠启发式方法来选择应用LoRA的权重矩阵。
有没有更有原则的方法?4)最后
W也可能是rank-deficient这也可以作为未来作品的灵感来源。
https://arxiv.org/abs/2106.09685v2
https://github.com/microsoft/LoRA
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback