LoRA 微调技术

在上一节中,我们了解了全量微调(Full Fine-Tuning)。虽然全量微调的效果是很好,但问题在于:它需要把大模型里所有参数的锁全部解开、然后重新算一遍,显存成本和设备要求高得吓人,普通开发者和中小企业根本扛不住。

为了解决全量微调又贵又难落地的问题,研究人员在 2021 年提出了一种轻量、高效的微调技术——LoRA。如今,LoRA 已经成为整个 AI 行业中最主流、最核心的微调方案。

全量微调与 LoRA 微调的对比图解:全量训练成本高昂,而采用外挂适配器的 LoRA 微调轻量高效,已成为目前业界最主流的微调方案

什么是 LoRA 微调?

LoRA,全称是 “Low-Rank Adaptation(低秩适应)”。它的核心思想用一句话就能说清楚:在微调时,把大模型原本的参数全部 “冻结” 起来(不进行任何修改),只在原模型的旁边外挂一个很小的参数矩阵来参与训练。

什么是大模型 LoRA 微调?冻结原模型参数,并外挂低秩矩阵

我们可以这样来理解:假如有一本 10 万字的教材,全量微调相当于把整本书从头到尾重新改写、重新印刷一遍。而 LoRA 微调,则相当于把原教材原封不动地放着,只是在旁边贴上一张 “便签纸”,专门记录哪些地方要改、哪些地方要补。

等大模型回答用户的问题时,它会同时把 “原教材” 和 “便签纸” 上的内容放在一起读,然后合并后再输出答案给用户。

相较于整本教材来说,便签纸的内容体量就小得多了。因此在训练的时候,耗费的算力和显存也会跟着大幅度下降。

LoRA 底层技术逻辑

小伙伴肯定会好奇:“LoRA 微调是怎么做到只训练极少量参数,就能让大模型学会新技能的?” 这背后的原理,其实来自数学里的一个概念——矩阵低秩分解

假设大模型某一层的参数,是一个 4096 × 4096 的矩阵(咱们叫它矩阵 W)。要是使用全量微调,系统就得把这 1600 多万个参数(4096 × 4096 ≈ 1678 万)全部重新计算、更新、保存。

而 LoRA 的核心假设是:大模型在学习某个具体的垂直任务时,参数的 “变化量” 其实没那么复杂,根本用不上这么高维的空间。于是它来了一手很巧妙的操作:

  1. 把原矩阵 W 彻底冻结,一个数都不改;
  2. 在它旁边并联接上两个 “低秩” 的小矩阵(矩阵 A 和矩阵 B);
  3. 假设我们把“秩”(Rank,业界常用字母 r 表示)设成 8,那么矩阵 A 的尺寸就是 4096 × 8,矩阵 B 的尺寸就是 8 × 4096。

LoRA 矩阵低秩分解的底层原理:冻结大矩阵并训练小矩阵,以降低 99% 参数量

这样一来,训练新技能时,系统只需要去算、去更新矩阵 A 和矩阵 B 就行了。这两个小矩阵的参数量加起来,只有:

4096 × 8 + 8 × 4096 = 65,536(约 6.5 万)

参数量从 1600 多万,一下子降到 6 万多个,足足缩减了 99% 以上!这就是 LoRA 能把大模型训练成本死死压下来的底层数学原理。

LoRA 微调有什么优势?

在真实的商业化落地项目中,LoRA 凭借以下 3 个突出优势,成为了开发者的首选:

1. 显存与设备成本低

因为真正要计算的参数少得可怜,训练时的显存占用也就大幅降了下来。原本要好几张昂贵企业级显卡才跑得动的全量微调,换成 LoRA 之后,一张普通的家用消费级显卡(比如 RTX 3090、RTX 4090)就够了,几个小时就能微调完一个 7B 模型。

如果是 14B 这种更大的模型,一般会再叠加一层 4-bit 量化——也就是 QLoRA——来进一步压低显存,照样能在消费级显卡上跑。

LoRA 与 QLoRA 微调的显存优势:相比全量微调,使用一张 RTX 3090 或 4090 消费级显卡即可运行

2. 大幅减少灾难性遗忘

全量微调会修改模型的大量参数,因此在学习新知识时,可能会削弱模型原本掌握的通用能力,这种现象叫作 “灾难性遗忘”。

LoRA 微调则不会直接修改原模型的参数,而是把原模型冻结起来,只训练额外添加的两个小矩阵。新学到的能力,主要保存在这些新增参数中。

这样做有两个好处:第一,模型原本具备的中英翻译、常识推理等能力通常不会受到太大影响,遗忘问题也比全量微调轻得多;第二,原模型没有被改动,我们可以随时移除 LoRA 适配器,让模型恢复到微调前的状态。

LoRA 避免大模型灾难性遗忘:通过外挂 Adapter,来保留底座旧能力

3. 存储与多任务切换非常轻量

全量微调后,我们会得到一个与原模型体积完全一致、动辄几十 GB 的全新模型文件,非常笨重。而 LoRA 训练结束后,原模型压根不需要另存,它只会导出一个小小的外挂的权重文件(称为 “适配器(Adapter)”),这个文件通常只有几 MB 到几十 MB。

假设你们公司有客服、法务、财务三个部门。你完全不需要准备 3 个几十 GB 的大模型,只要在同一个开源基础模型旁边,外挂 3 个不同的几 MB 的 LoRA 权重就行。哪个部门要用,系统就动态加载哪个外挂,又快又省事。

LoRA 存储与多任务切换非常轻量:同一底座按需动态加载多业务外挂

有监督微调、全量微调、LoRA 微调之间的区别

很多刚接触大模型的小伙伴,很容易把这 3 个概念混为一谈。实际上,它们根本不在同一个维度上。

它们的关系不是“三选一”,而是 “目标” 和 “手段” 的关系。SFT 决定你要 “教什么”,全量微调和 LoRA 则决定你 “怎么教”。

1. 有监督微调(SFT):解决你要 “教什么”

刚预训练完的大模型,只学会了无意识的“文字接龙”,经常会答非所问。如果想要把它调教成一个听得懂指令的 AI 助手,就得喂给它大量带 “标准答案” 的问答对。

这种 “拿着正确答案、手把手教模型怎么回答” 的过程,就叫 “有监督微调(SFT)”。说白了,它解决的是 “教什么” 的问题。

有监督微调 (SFT) 核心逻辑:提供标准答案,手把手教大模型听懂指令

2. 全量微调与 LoRA 微调:解决你要 “怎么教”

当你决定要做有监督微调(SFT)时,面对大模型体内的几百亿个参数,你到底打算怎么改呢?这时候,就衍生出了全量微调和 LoRA 微调这两种具体手段:

  • 全量微调:相当于把大模型脑子里所有的参数全部解锁,统统重新计算并更新一遍。这种方式相当于给模型做一次彻底的 “开颅手术”,算力成本极其昂贵,通常只有土豪大厂才玩得起。
  • LoRA 微调:就像前面我们讲的,把原装大脑彻底冻结,只在旁边贴一张小小的 “便签纸”。这种方式极其省钱,一张普通消费级显卡就能轻松搞定。

SFT、全量微调与 LoRA 的区别图解:解决 “教什么” 与 “怎么教” 的核心差异

总结一下:在真实的商业开发中,它们通常是组合出现的。对于绝大多数中小企业和普通开发者来说,由于全量微调实在太贵了,所以当大家在探讨 “给模型做个 SFT” 时,潜台词里默认使用的技术手段,99% 都是基于 LoRA 来实现的。

上一篇:

下一篇:

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号