从零理解大模型微调:LoRA、QLoRA 与后训练到底在做什么
一、为什么大模型需要"后训练"?
现在的大模型(LLM)通常先经历一个叫预训练(Pre-training)的阶段:在海量文本上做"预测下一个词"的训练,从而获得通用的语言能力和世界知识。但预训练出来的模型有个问题——它更像一个"续写机器",你给它一句话,它会顺着往下编,而不一定按你的指令办事。
于是就有了后训练(Post-training)。它的核心目标不是从零训练一个新模型,而是在预训练模型的基础上,用领域数据或人类反馈数据继续更新参数,让模型学会:
-
听懂指令、按格式回答(指令跟随);
-
符合人类偏好(更有用、更无害、更诚实);
-
掌握特定领域的技能(医疗、法律、代码等)。
后训练常见的手段包括 SFT(监督微调)、RLHF(基于人类反馈的强化学习)、DPO(直接偏好优化) 等。其中 SFT 是最基础的一步:用"人工标注的标准答案"去拟合模型,让它学会"问什么、答什么"的对话范式。
二、全量微调太贵了,于是有了 LoRA
理想情况下,SFT 可以解冻模型全部参数做全量更新。但一个大模型动辄几十亿甚至上千亿参数,全量微调对显存和算力的要求极高,普通团队根本玩不起。
LoRA(Low-Rank Adaptation,低秩适配) 就是为解决这个问题而生的。它的思路很聪明:
冻结原始模型权重,在权重矩阵旁边新增一对低秩矩阵 A 和 B,只训练这两个小矩阵。
最终生效的新权重可以写成:
新权重 = 原始权重 + A × B
因为 A、B 的秩很低,参数量远小于原矩阵,所以训练成本大幅下降。更妙的是,推理时可以把 A × B 融合回原权重,不增加推理耗时。这也是 LoRA 被广泛用于"通用大模型微调、对话 SFT"的原因。
LoRA 的典型特点可以总结为:
-
冻结原模型权重,旁路新增低秩矩阵训练;
-
新增参数挂在权重层旁路;
-
权重可融合,推理不增延迟;
-
显存开销相对全量微调低很多(但并非"极低",这点常被误解)。
三、QLoRA:把门槛再降一档
LoRA 虽好,但加载一个大模型本身仍需要不少显存。QLoRA 在 LoRA 基础上又往前推了一步,最核心的区别是:
把主模型权重量化为 4bit,再在其上挂 LoRA 低秩矩阵训练。
这样一来,显存占用被压得非常低,低配设备也能微调超大模型——这正是 QLoRA 最突出的优势。它让"用一张消费级显卡微调大模型"从玩笑变成了现实。
需要注意的是,QLoRA 并不是用 Adapter 层,也不代表"不支持对话 SFT";它只是把基座量化了,训练逻辑仍然是 LoRA 那一套。
四、SFT 到底有哪几种参数更新策略?
同样是做 SFT,参数更新方式可以很灵活,常见的有:
-
全量更新:解冻全部层级参数,效果最好但最贵;
-
冻结主干 + 训练 LoRA:性价比最高的主流做法;
-
4bit 量化冻结 + LoRA:即 QLoRA 路线,显存最省。
("冻结全部参数仅训练输出层"通常不算主流 SFT 策略,因为可训练容量太小。)
五、别忘了数据:清洗与评估同样重要
模型微调不只是"调参",数据质量往往决定上限。一个规范的数据流程通常包括:
-
数据导入:本地上传、OBS 桶导入等(ModelArts 等平台支持);
-
数据清洗:冗余去重、违规过滤、敏感脱敏、格式归一;
-
数据精炼:脏数据清洗、样本稀缺时做数据合成、隐私合规处理。
训练完之后还要做模型评估,它的核心价值在于:
-
衡量微调后模型的能力提升程度;
-
定位模型在特定任务上的薄弱环节;
-
用量化指标判断是否达到上线标准;
-
在多个候选模型中选择最适合业务场景的版本。
六、一句话总结
-
后训练:让预训练模型学会听指令、合偏好;
-
SFT:用标准答案拟合,打好对话基础;
-
LoRA:冻结主干、旁路低秩矩阵,便宜又好用;
-
QLoRA:再把基座量化到 4bit,显存门槛一降再降;
-
数据与评估:决定微调效果的上限和上线底气。
如果你正在入门大模型微调,建议的动手路径是:先跑通一个 LoRA 的对话 SFT 例子,再尝试 QLoRA 在小显存上微调更大的模型,最后补上数据清洗和评估环节。走完这一圈,你对"后训练"的理解就不会只停留在名词上了。
- 点赞
- 收藏
- 关注作者
评论(0)