← 返回资讯
苏晴
资深编辑
已审核

LORA:大模型轻量级微调

前阵子搞ChatGLM3-6B微调,我关了办公室门,盯着一整排跑的日志,空调开到18度,显卡风扇还是跟飞机起飞似的。全参微调一启动显存直接冲到57GB,一步跑10秒多,我盯着温度监控,心都跟着跳——感觉那卡随时要冒烟。

LORA:大模型轻量级微调

LORA:大模型轻量级微调


你敢信?我差点把公司那张A100显卡给弄炸了!

前阵子搞ChatGLM3-6B微调,我关了办公室门,盯着一整排跑的日志,空调开到18度,显卡风扇还是跟飞机起飞似的。全参微调一启动显存直接冲到57GB,一步跑10秒多,我盯着温度监控,心都跟着跳——感觉那卡随时要冒烟。

后来换成LORA,显存掉到43GB,一步才9.5秒,效果呢?几乎一样!我当时就一个感想:你要是没个八卡A100集群,搞大模型微调,先把LORA焊死在选项里

说到这儿,你想想:你家装修,是砸墙拆地、重新铺管线费劲?还是在只挂一幅画容易?全参微调就是砸墙拆地,LORA就是在墙挂幅画——效果一样,还不用掏空钱包。

这几年大模型微调的方法跟雨后野草一样,Adapter Tuning、Prefix Tuning、P-Tuning……为什么就LORA成了顶流?它到底好在哪?怎么用?有什么坑?下面三个问题,我直接给你拆干净。


第一个问题:LORA到底是什么玩意儿?凭什么能省那么多资源?

你看啊,训练大模型,本质上就是在调几十亿个参数。全参微调,是把所有参数都拎出来算梯度、更新优化器状态。有资料算过,光优化器状态和梯度的显存开销,就是模型参数的12倍。GPT-3 175B全参微调?直接要2TB以上的显存,你自己感觉一下这个数字。

LORA的想法简单到离谱:参数不是多吗?我不动它们,在旁边挂两个小矩阵,训练只调小矩阵

来,你跟我算一个:原始权重矩阵W是1024×1024,参数差不多100万。LORA给它配两个矩阵B(1024×r)和A(r×1024),r一般设个4或者8,远小于1024。B×A结果跟W一样是1024×1024,但参数量才(1024+1024)×r = 2048×4 ≈ 8000。100万 vs 8000,你品,你细品。

训练时,W完全冻结,只用A和B做前向和反向。训练完了,把B×A加到W上,合并成一个新矩阵,推理时速度跟原始模型一样,零延迟。

我第一次看到这方案时的表情:就这?然后自己跑了一通,真香。

这背后其实有个理论叫“内在维度”——说白了,大模型本质上藏着一个很低的本质维度,任务适配只需要在这个低维空间里调一调。没必要把所有参数翻个底朝天。你想想,你每天都换衣服,但身体结构没变,对吧?

不过有个坑我必须提醒你:B和A的初始化,有讲究。B初始化为零矩阵,A初始化为随机高斯分布。这样一开始B×A是0,ΔW也就是0,微调从原始模型开始,不会上来就偏离。我自己不知道这事儿,随手初始化,结果loss直接爆了,查了半天才改回来。后来想想,幸亏不是我一个人在丢人。


第二个问题:实际用起来,LORA比全参快多少?省多少?

我在ChatGLM3-6B上亲自做了对比,一台A100(后来换了80G的),数据并行,batch size一样,跑同一个下游任务。结果我直接给你看,自己感受:

| | 全参微调 | LORA | 变化 |

|---|---|---|---|

| 显存占用 | 57GB | 43GB | 减了24.6% |

| 训练周期 | 10.51s/it | 9.54s/it | 快了9.3% |

显存省了四分之一,速度还快了近一成。为什么?原因上面说过——优化器状态不需要为主干模型算,只给两个小矩阵算。而且你还可以给主干模型做低精度量化,比如直接用int8甚至int4,反正它不更新。我试过int8,显存再降一截,精度几乎没掉。

速度提升除了参数少,还有一个容易被忽略的东西:多卡训练时,通信压力小了。数据并行要同步梯度,全参微调是同步整个模型几百亿参数的梯度,LORA只需要同步A和B那一点点梯度。你平时发一屋子人微信消息,和只发三个人比,哪个快?卡间通信经常是瓶颈,这一下轻松太多。

但我要泼一盆冷水:有些博主说LORA计算量和全参基本一致——那是纯数学上浮点运算次数差不多,因为反正都要算一遍前向。实际跑起来,因为参数少、精度低、通信少,体感快不少。别被“计算量没减少”的结论吓到,自己跑一回你就知道了。真的,跑之前觉得“就这?”,跑之后:“真香!”


第三个问题:精度不降?和全参微调比有差距吗?

说句实话,看任务

我试过几个场景,你感受一下:

核心原因:LORA只调了低秩空间,保留了原始模型的绝大多数知识。你在新任务上学到的权重增量是“小修补”,不会把模型对老问题(比如通用问答、语法理解)的能力破坏掉。全参微调就容易出现“灾难性遗忘”。我亲眼见过一个团队全参微调做法律问答——微调完法律回答好了,但闲聊直接变傻子。换成LORA,两者兼顾。

但也不是没有代价。如果任务和预训练数据偏离特别大,低秩假设可能不够用。比如你让一个语言大模型去识别X光片,权重变化可能根本就不是低秩的。这种情况你就得考虑大一点的秩,或者干脆换其他方法。

关于秩r的选择,我的经验(只供参考,不保你不出错,但你试试看准没错):


最后说点掏心窝的。

你知道吗?我第一次用LORA调完模型,扔到推理接口,看着和全参几乎一样的输出质量,但成本少了三分之二——我当时心里冒出一个念头:有时候,真正的智慧不是去撼动整个系统,而是在恰当的地方轻轻一拨,整个世界就转了方向。

你想想,几十亿参数的大模型,你甚至不需要碰它,在旁边放两个几千参数的矩阵,就能让它乖乖为你干活。这世上很多事不也是这个道理吗?你不必推翻重来,找准那个撬点,就够了。

搞大模型微调?别一上来就想着全参干翻全场。试试LORA,你会发现:放下执念,才有新世界。

记住:真正会玩的人,从来不是最能砸钱的,而是最会省劲的。


主要修改说明:

216
10846 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月20日 23:17

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

数据分析师 1周前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 2天前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)
张工 5天前
写得很实在,特别是实测对比那部分,跟我自己的使用感受一致。
回复 点赞 (12)
前端工程师 1周前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)