阶段 5 · 大模型怎么炼成

微调决策:四个问题
问出你该怎么做

上一章《蒸馏、量化与剪枝》把模型压小,这一章是收口—— 轮到你自己动手时,到底该选哪条路。
答案是:先问清楚四件事,不要一上来就上 LoRA。而且第一个问题的答案, 很多时候是"你根本不需要微调"。

1

第 0 问:真的要微调吗?

这是最容易被跳过、也最该认真问的一个问题。 大量"微调项目"在做了两个月之后发现:好好写提示就够了。

手段它改什么成本迭代速度
① 提示工程 不改模型,只改你给它的指令和例子 ≈ 0(人力) 分钟级——改一句话就能验证
② RAG 检索增强 不改模型,把资料塞进上下文 建检索管线 + 向量库(把文档切片,存成能检索的向量索引) 小时级——换文档就行
③ 微调 真的改模型参数 数据标注 + 算力 + 评测 天到周级——改一次要重训重评
💡 按这个顺序试,不要跳步

提示 → RAG → 微调。
理由很简单:每一步的成本比上一步高一个数量级,而收益并不总是更高。 先做便宜的,能解决就不做贵的。
而且这三者不是互斥的——最实用的方案常常是"微调让模型学会某种格式 + RAG 提供事实"。

图 · 该不该往下走

同一个「它答得不对」,落在哪一边就决定了动哪把工具

「它不知道我们公司的产品信息」 「输出 JSON 的时候总多一层嵌套」 知识问题 行为问题 用 RAG 资料放进上下文,改文档立刻生效 提示搞不定时,才用微调 格式是「行为」,正是微调最擅长的事 别把知识问题当行为问题:事实塞进权重既不可靠也不可更新,明天产品改版还得重训
2

第 1 问:改的是知识、行为还是能力?

这是整章最关键的一个判断。选错了,后面全白做。

三条岔路:缺什么,就补什么

知识 缺少某些事实 RAG 像给他一本手册 事实放上下文,改文档立刻生效 行为 格式 / 风格 / 语气 SFT / LoRA 像给他几份范文 几百条好样本就能学会 能力 根本不会某类推理 RLVR / 蒸馏 像让他去练题 要的是「过程」,不是「答案」
你想改的典型症状为什么
知识 「它不知道我们 2025 年新出的产品叫什么」 知识可以查。RAG 把事实放上下文里,准确、可溯源、改文档立刻生效。
行为 「它输出 JSON 总是多一层嵌套」「语气太正式」 这是微调最擅长的事:几百条高质量样本就能改变格式和风格。
能力 「它做不了三位数乘法」「推不对这类逻辑题」 这是最容易被低估的一类。要的是推理链:蒸馏完整过程,或用可验证奖励做 RL;只喂「答案」学不会。
🎯 类比

招一个新人:知识缺了,给他一本手册(RAG),别送他回学校(继续预训练); 行为不对,给他几份范文照着写(SFT);能力没有,看一百份范文也没用,得真去练题、做对做错都有反馈(RLVR)。
这个类比管到「缺什么补什么」为止——真实需求常常三者混在一起,手册写得烂、范文挑得差,照样学不会。

3

亲手走一遍决策树

下面这棵树把上面四个问题串起来了。从根节点开始点,每个节点都会告诉你"怎么判断"。

互动 · 决策树(点着走)

4

第 2 问:数据要多少?

你要改的数据量级说明
格式对齐100 ~ 1,000 条 让它学会输出某种结构。很少的量就够,因为这是"模仿"不是"理解"
风格 / 语气迁移1,000 ~ 10,000 条 语气是分布性的特征,需要足够多的样本才能"摸到"风格
领域知识注入10,000 ~ 100,000 条 量很大,而且效果不如 RAG 可靠。先认真考虑 RAG
新能力需要「过程」,不是「答案」 只学最终答案的 SFT 数据再多也学不会新推理; 但蒸馏完整推理链(纯 SFT)或做 RLVR 都能学到

2023 年的 LIMA 论文只用 1000 条精心挑选的样本做 SFT,在多个评测上就接近了几万条数据训练的模型。 结论:模型的能力主要来自预训练,SFT 只是「把已有能力的正确用法指出来」。1000 条精挑的,经常打赢 50000 条随手抓的。

⚠️ "质量"具体指什么

① 一致性——1000 条里如果同一个输入有 200 种不同格式的答案,模型会学混。
② 覆盖度——你的业务场景有 20 种情况,数据里只有 3 种,剩下的学不到。
③ 没有错误——一条错样本的破坏力,可能大于十条好样本的建设力。
④ 长度分布合理——如果训练答案都很长,模型会学会"啰嗦"。

5

第 3 问:LoRA 还是全量微调?

判断依据选 LoRA / QLoRA选全量微调
显存 24 GB 显卡能微调 7B~13B 级别(经验值);65B/70B 要 48G 以上的专业卡 7B 全量微调要 100 GB 以上显存(含优化器状态和 fp32 主权重),单卡放不下
数据量 < 10 万条时通常够用 百万条以上,LoRA 的表达能力可能成为瓶颈
是否需要多任务切换 LoRA 的杀手级优势——一个基座挂多个几 MB 到几十 MB 的适配器, 按请求切换 每换一个任务就要存一份完整权重
能不能接受效果损失 对风格/格式类任务,LoRA 和全量几乎无差别 如果任务需要模型"重新组织"深层知识,LoRA 会明显不如全量
要发布/部署吗 适配器可以单独分发,体积小 部署时可以把 LoRA 合并回基座,推理无额外开销

互动 · 一张 24G 的卡,为什么装得下 7B 的微调

全量微调需要
—
QLoRA 需要
—
省了几倍
—

除非你有明确证据说 LoRA 不够,否则先用 LoRA。它的失败是「差一点但没达标」,全量微调的失败是「训崩了、显存爆了、忘了通用能力」——前者还能补救,后者可能连基线都跑不出来。

M

数学 · LoRA 便宜在哪

第 3 问的结论是「除非有证据,否则先用 LoRA」。可它凭什么便宜几百倍?
一张图就能看完:全量微调要动整个方块,LoRA 只动中间那两条窄带。 下面那条窄带有多宽,由你拖——它是这一节唯一一个由你决定的数字。

互动 · 整个方块要更新,还是两条窄带要更新

LoRA 可训练参数
—
全量微调那一块参数
—
省了几倍
—

微型图解 · 一个大方块 = 两条窄带相乘

6

换个任务,收益曲线整个换了形状

拖两个滑块、切一下任务类型,看预期提升和风险怎么变。「+5 点」= 在满分 100 的评测上高 5 个百分点; 「风险」= 微调后旧能力被冲掉的可能,页面按任务分低 / 中 / 高三档。

💡 整章都藏在这张图里

同一个滑块、同一个模型,只要换个任务类型,收益曲线整个换了形状——这就是「没有免费午餐」。先把这张图拖一遍,再往下读。

互动 · 三个因子怎样乘出预期提升

下面的公式是根据公开论文和工程经验拟合出来的形状(饱和曲线 + 基座临界值), 不能当成你项目的准确预期:真实提升取决于数据质量、基座匹配度和评测口径。

预期提升
—
达到 90% 上限所需数据
—
风险等级
—

把鼠标移到公式里有虚线的项上——它会点亮上面那个对应控件。

7

常见失败清单

症状最可能的病因怎么修
训练 loss 完全不降 对话模板(把用户/助手的话拼成模型要的那串 token 的格式)不对,或 loss mask 错了——模型在学「预测提问」而不是「生成回答」 打印一条拼好的样本逐 token 检查(新手最常见的坑,见《训练三阶段总览》)
微调后通用能力崩了 灾难性遗忘:为学新任务,把预训练学到的东西盖掉了 混入 5%~20% 通用指令数据;用 LoRA;降学习率、减轮数
输出格式偶尔错乱 训练数据本身格式不一致(1000 条里可能有 5 种写法) 统一格式。一致性比数量重要
越训越差,loss 后来涨 过拟合:小数据集上一两个 epoch 就够 早停、降学习率(LoRA 通常 1~3 轮)
效果还不如写提示 数据质量差,或任务本来就不需要微调 先回第 0 问;基线设成「不微调 + 好提示」
训练集完美,测试集不行 数据泄漏,或同一数据的变体被分到了两边 按语义分组切分,不要随机切
输出变得啰嗦 训练答案普遍偏长,模型学到了「长=好」 检查长度分布,混入简短样本

互动 · 一条错的遮罩,能让损失看起来更小

8

评测:最容易被做错的一步

要点说明
基线必须是「不微调 + 好提示」 拿微调模型和「随口写的提示」比,提升里一大半来自提示;正确对照是同一个好提示,一个微调一个不微调。
留出真正的测试集 不要拿训练数据的子集当测试集,切分要按语义分组。
LLM-as-judge 的坑 偏好长回答、偏好与自己风格相似的输出、位置偏差(多数偏好第一个);修法是交换 A/B 顺序各评一次。
人工评测量级 至少 100~200 条才有统计意义,而且要多个人评并算一致性。
看分布,不只看均值 平均涨 5 分,可能是「80% 没变、20% 大涨」,也可能是均匀涨 5 分——工程含义完全不同。
9

阶段 5 知识地图

把前面十一章串成一条线:

这条线的顺序:多大(缩放定律)→ 装得下(MoE)→ 燃料(数据工程)→ 三阶段训练(预训练 / SFT / 对齐)→ 怎么对齐(RLHF → DPO → RLVR)→ 想更久(推理模型)→ 便宜地改(LoRA / 量化)→ 这一章:该用哪种。

10

小结

这一章要你带走一个动作:拿自己的问题走一遍第 3 节那棵树,判断该不该微调、用哪种方法。 它背后是四条不同的假设在竞争——选哪条,取决于哪条在你的问题上成立。

它对应哪条线 ② 没有免费午餐 → 必须先问清你缺的是什么—— 错不在方法,错在用了一把不适合这个问题的工具。
提示工程假设「能力本来就在,只是没被指出来」; RAG 假设「你缺的是可检索的事实」; SFT 假设「你缺的是一种输出方式」; LoRA 假设「要做的改动是低秩的」。 这一章那张决策树,本质上是在四条假设里找出对你成立的那一条。
一句话 微调能改的是「怎么答」的分布,不是「答什么」的内容—— 它擅长把已有的能力重新组织成你要的样子,不擅长往参数里塞进新的事实或新的能力。 所以这一章的做法,本质上是在先问清"你要动的是哪一层",再挑最便宜的那把工具: 提示 → RAG → 微调,成本每级高一个数量级,而收益并不总是更高。
它牺牲了什么 走了微调这条路,就牺牲了可更新性与可溯源: 写进权重的事实查不出来源、改不了单条、明天产品改版还得重训—— 而这两样恰恰是 RAG 天生就有的(回扣暗线 B)。
选 LoRA 还有第二笔:牺牲了改动的容量(低秩是有上限的)。
最后,全量微调还会牺牲通用能力——旧任务上的表现会掉, 这就是《持续学习与遗忘》讲的「对齐税」(微调后基座别的能力掉几分)。
🎬 自己验一遍

回到第 6 节:任务类型切「新推理能力」、数据量拉到 20 万条,预期提升仍只有几个点(天花板 5 点); 切回「格式 / 风格对齐」、数据量 1000 条,提升反而更高。 最后切回「新推理能力」(它的最小可行基座是 70B),把「基座模型大小」拖到 70B 以下,看预期提升打折。

它在暗线里站在哪

暗线这一章的回答
A 信息流动 一条样本:(输入文本, 期望输出) → 分词成 L 个 token → 过网络 → 只对答案那段的 logits 算损失;SFT 改整个 (d, d) 权重,LoRA 只改旁路的 (d, r)、(r, d) 两个窄矩阵,合并后推理形状不变。
B 什么被牺牲了 换来了「便宜、快、可控」:微调牺牲可更新性、可溯源和通用能力,LoRA 再牺牲改动的容量。
D 跑在什么上 瓶颈在容量:单卡 LoRA / QLoRA 是装不下,多卡全量微调卡在梯度同步的 all-reduce 带宽上(完整对照见 《硬件与算力账本》)。
🎯 前后钩子

它接住上一章《蒸馏、量化与剪枝》的「把模型做小」,下一章《硬件与算力账本》接着算这笔账。

它给后面留了同一张成本阶梯:要不要多 agent、换推理引擎、做 agentic RAG——都是先试最便宜的,拿数据证明不够,再往上走一级。

一句话带走微调决策

先问四个问题:要不要微调(提示 → RAG → 微调,别跳步)· 改的是知识、行为还是能力(知识用 RAG,行为用 SFT/LoRA,能力要过程)· 要多少数据(质量远大于数量)· LoRA 还是全量(先用 LoRA)。
最容易做错的一件事:基线必须是「不微调 + 好提示」。

11

拓展阅读

上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。

📄 这一章的说法从哪来

💻 工业界怎么写

∑ 更严格的形式