预训练 → SFT → RLHF 全流程
一句话定位:大模型的「炼成」分三段——预训练堆能力底座、SFT 教会对话格式、RLHF 对齐人类偏好;本文走完整条流水线并回答「SFT 学到的是格式还是能力」。前置:Attention 与 Transformer——先懂架构才谈训练什么;Scaling Law(规模定律)——先知道数据规模怎么定。
先看一个下载就能用的模型为什么「差点意思」
开源模型下载即用:写代码、翻文章、答常识,样样像模像样。
可一到正经活就露怯——不懂你公司的内部术语、不按你要的格式答、问三句就开始自说自话。
想自己调教?先看看账:主流模型 7B(70 亿)参数起步,全参数训练一遍,按约 16 字节/参数(权重、梯度、优化器状态——训练时要同时维护的三样大件)估算显存,7B 就要百 GB 量级、还没算运行时的临时开销——单机根本装不下;何况它读过 15 万亿(15T)token 的文本——这个量级的「读书」任务,任何团队都绕不开真金白银的 GPU 集群。
那模型到底是怎么炼成的?哪些步骤决定了它是谁,哪些只是调教?普通人和小团队能参与哪一段?
答案是一条三段流水线:预训练(烧钱堆底座)→ SFT 监督微调(教会「好好说话」)→ RLHF(对齐人类偏好)。三段的目标、数据量、成本完全不同——第二段(SFT),恰好是小团队用参数高效微调(PEFT)技术可以低成本参与的:冻结原模型、只训一小撮「补丁参数」,代表方案 LoRA 后文细讲;第三段的门槛不止在参数,后面会讲。先看全景:
图:训练三段流水线——预训练炼底座、SFT 教格式、RLHF 对齐偏好;LoRA 让 SFT 段低成本可参与,数据量差约三个数量级
渐进拆解:同一条流水线,三种喂法
预训练:互联网规模的填空题
前两段用的是同一个训练目标——预测下一个 token,用 cross-entropy(交叉熵)损失衡量猜得准不准,变的只是喂什么数据。预训练吃的是清洗后的全网文本:按规则与模型分类器过滤低质、对重复文档去重、再按语言与领域混合配比——配比直接决定模型「偏科」方向,Llama 3 论文的数据工程章节就专门讨论了靠代码与数学数据的加权提升推理表现。
这套工序有一个公开可查的代表性管线(HuggingFace 的 FineWeb):源头是 2007 年起爬取互联网的 Common Crawl(截至 2024 已索引约 27 亿网页);原始网页先做 URL 过滤(拉黑垃圾与恶意站点),再从 HTML 里抽取正文,语言分类器只保留目标语言占比达标的页面——语言阈值是公司可自主决策的点,扔掉哪门语言、模型就不会说哪门语言;查重之后还要做 PII 移除(地址、证件号等个人信息)。全部做完约 44TB,「下载整个互联网」一块硬盘就装得下,对应约 15 万亿 token。
规模上,Llama 3 用了超过 15T token(是 Llama 2 的约 7 倍,官方博客口径,其中 5% 以上是非英语的高质量数据),1.6 万张 H100 跑出来的基座。这一段决定模型的「能力上限」:语言、知识、推理的原始积累全在这里,后来任何微调都只是在基座上动小手术。
这条「过滤 → 去重 → 配比」的数据流水线,画出来是这样:
图:预训练的数据流水线——全网文本经过滤低质、文档去重、语言与领域配比三道工序炼成基座;配比决定「偏科」方向
SFT:把「接话机」教会「对话」
预训练出来的基座只会接话——你写上句它补下句,让它「回答问题」它可能再生成十个类似的问题。SFT(监督微调)喂的是人工标注的指令-回答对(数万到数百万条),用同样的下一 token 预测,只是只在「回答部分」计算损失。
这个「接话机」的本性值得多看一眼,有公开课用一组演示揭得很透:参数是互联网的有损压缩包,留下的是模糊印象——常见内容记得牢,冷门的只剩大概;高质量来源它甚至能逐字背诵,维基词条可以被原样背出几百 token(版权与复述问题由此而来);没见过的新闻它只能按参数猜——把知识截止之后的新闻喂进去,采样两次得到两个不同的「平行宇宙」,这正是幻觉的雏形(成因与缓解的完整展开见LLM 心理学)。「训练数据截止到某天」这个知识截止(knowledge cutoff)日期要常备心里:那天之后的世界,它只能猜。
「同一个目标、损失算在哪不同」这件事,画成对照一眼就能看清:
图:预训练与 SFT 共享下一 token 预测目标——预训练整段都算损失,SFT 靠损失掩码只在「回答部分」计算损失
数据质量的手法有一套常见组合拳:
- 宁少而精:高质量人工写,也不垃圾海喂。
- 任务类型分层覆盖:问答/写作/代码/推理各占合理配比,防「偏科」。
- 辅以强模型合成数据打底座规模:省成本,但要防「以模型教模型」把基座偏见固化放大。
看个产线量级的例子:Llama 3 的模型卡写明,对齐阶段(SFT 加偏好标注的整条流水线)的微调数据含超 1,000 万条人工标注样例——即便按每条 1K token 折算成约 10B token,对比 15T 的预训练,仍差约三个数量级。
RLHF:用人类偏好当裁判
SFT 之后模型会对话了,但「答得对」不等于「答得好」——有用、无害、诚实这些标准很难写成标准答案,却容易「比较」。RLHF(人类反馈强化学习)把「比较」变成训练信号,OpenAI 2022 年的 InstructGPT 论文确立的三阶段是经典范式。这一步的价值有个著名证据:InstructGPT 论文里,经 RLHF 的 1.3B 模型的回答,在人类评估中胜过了未对齐的 175B GPT-3——对齐好,比模型大更管用。
为什么需要裁判。 第三步(强化学习)的机制值得单独说清,它是后面对齐训练各种变体的共同底座。难点在于:人类给的是「A 回答比 B 好」这种比较,没法直接当梯度用——所以先训练一个奖励模型当裁判,把偏好变成可计算的分数。
防跑飞:参考模型与 KL。 有了裁判还不够:模型可能学会「讨好裁判」的歪路(行话叫 reward hacking,后篇细讲),所以要再备一份 SFT 模型的冻结副本当参考模型,衡量两者输出差多远(指标叫 KL 散度,把它算进训练目标就是 KL 惩罚——离参考模型太远就罚分),防止为了高分把预训练学的能力跑丢。
稳更新:PPO 与价值模型。 PPO 是强化学习里一种稳妥的更新算法:拿裁判的分数当奖励,小步调整模型参数;再配一个价值模型预判「照现在这个走法最后能拿几分」,让每步更新更稳。
于是第三步开训时要同时养四个模型——生成回答、被优化的主模型行话叫 Actor;参考模型叫 Reference;裁判叫 Reward;预判价值、同样在训练的那份叫 Critic。上文先混个脸熟,下图逐个点名:
图:RLHF 三阶段——SFT 打底、人类比较标注训出奖励模型、PPO 闭环优化;四个模型同台,只训 actor 与 critic
PEFT:小团队的正确入场姿势
全参微调 7B 模型要同时养权重、梯度与优化器状态,显存就要百 GB 量级;而 MoE 篇讲过的 DeepSeek-V3 总参数 671B——更别想。PEFT 的思路:冻结原模型,只训练一小部分「补丁参数」。
主流方案 LoRA(低秩自适应)的观察是:微调引起的权重变化量 ΔW 本身是低秩的——变化集中在少数几个独立方向上,不必用满整个矩阵去表达。于是不必更新整个 d×d 矩阵,把它近似成两个小矩阵 B(d×r) 与 A(r×d) 的乘积(r 远小于 d;论文甚至演示 r 取 1 或 2 也够用,工程实践常取 8~64——PEFT 库默认 8,QLoRA 论文用 64),只训练这两个小矩阵。LoRA 论文的口径:对 GPT-3 175B,可训练参数降到约万分之一。实测一本账:
图:LoRA 低秩分解——冻结原权重、只训 B·A 低秩补丁;实测约占层内参数 0.62%,推理时可合并回原权重零开销
SFT 到底学到的是格式还是能力?
这是本篇最值钱的问题,证据两端都有。主张「主要是格式」的一方(LIMA 论文的表面对齐假说):1000 条精心挑选的数据就能让模型「对齐」,说明能力几乎全在预训练里——SFT 只是把能力「引出来」的表达方式,学的是「AI 助手该怎么说话」这层壳。主张「不止格式」的一方同样有一般观察支持:指令数据的质量与多样性远比数量重要——数据覆盖不到的领域,SFT 后表现明显掉队;劣质标注还会把模型带偏(幻觉、谄媚)。
当前更可信的综合判断:通用能力来自预训练,SFT 决定能力的「打开方式」与边界——格式是显学,但选择教什么、不教什么,实际划定了模型被引导出的能力范围。对小团队的落点:基座选好,SFT 数据的质量与覆盖度就是你的全部筹码;指望 SFT 教会模型预训练时没学过的能力,性价比远低于换一个更好的基座。
大白话:预训练是把整座图书馆啃完(贵、慢、决定学问),SFT 是学「怎么跟人打交道」的礼仪课(便宜、快、决定说话方式),RLHF 是请人天天点评纠偏(对齐口味)。LoRA 是「不上学、只贴笔记本」——笔记本(补丁)只有几十到几百 MB,但写满了你的行规和格式。
技术定义:预训练与 SFT 共享下一 token 预测目标(交叉熵损失),差异在数据与损失掩码——SFT 仅在指令-回答对的回答部分计算损失。RLHF 架构不变,训练信号从标准答案换成奖励分数,按 InstructGPT 范式分三步。LoRA 将权重更新量低秩分解为 ΔW ≈ BA(r ≪ d),属 PEFT 家族,推理时可无损合并。
动手:算一本 LoRA 的参数账
把「万分之一」的说法亲手验证成数字。拿开源模型 Qwen2-7B(阿里通义千问的 70 亿参数模型)的真实配置算:
d, r = 3584, 16 # 投影层维度(Qwen2-7B 隐藏维)与 LoRA 秩
full = d * d # 全参更新:整个 d×d 矩阵
lora = 2 * d * r # LoRA:B(d×r) + A(r×d) 两个小矩阵
print(f"单层:全参 {full/1e6:.1f}M vs LoRA {lora/1e3:.0f}K,占 {lora/full:.2%}")
# 再算整模型(Qwen2-7B:28 层,attention 与 FFN 的线性投影全挂 LoRA)
h, inter, layers, kv, head = 3584, 18944, 28, 4, 128
# kv=4 是键值头组数(GQA,4 组共享);head=128 是每头维度 → K/V 投影宽度 = kv*head
total = layers * (2*h*h + 2*h*kv*head + 3*h*inter) # 全参(28 层层内投影,不含 embedding)
lora_all = layers * (2*r*(h+h) + 2*r*(h+kv*head) + 3*r*(h+inter))
print(f"整模型:全参 {total/1e9:.2f}B vs LoRA {lora_all/1e6:.1f}M,占 {lora_all/total:.2%}")
实测输出:单层 12.8M 对 115K(占 0.89%);整模型 6.53B 对 40.4M(占 0.62%,分母是层内线性投影、不含 embedding)。与 LoRA 论文「GPT-3 175B 约万分之一」方向一致,倍数不必较成同一个数——它取决于 r 的大小与挂载范围(论文口径针对 175B 模型,本文 r=16 全投影口径约省 160 倍)。
再算一笔数据账:Llama 3 模型卡口径的对齐数据含超 1,000 万条人工标注,即使每条 1K token,总量也只有约 10B token——预训练 15T 的约 1/1500。参数省约百倍、数据差上千倍,「调教」与「炼成」的成本鸿沟,账上都看得见。
边界与取舍
什么时候该微调、什么时候不该?
先排除伪需求:想要「懂我的领域知识」且知识会更新——RAG 把知识放外部库,比把知识烧进参数更便宜、可更新、可溯源;想要「按我的格式回答」——提示词工程往往就够了。
微调的真需求是三样:
- 稳定的输出格式/风格(示例穷举不尽)。
- 领域特有的表达模式(术语体系、行文规范)。
- 降本:小模型微调后替代大模型提示工程。
三样都不沾,别急着开训。
RLHF 的绕路与换代
本篇的 PPO 版本要同时养四个模型、训练闭环里任何一环不稳都翻车——「RL 的痛」催生了后训练的新范式:把偏好对直接拿来做优化(DPO)、把裁判换成可验证的规则(RLVR,即推理模型的训练方式)。这些是后两篇——推理模型与DPO/GRPO 专篇——的主题,但它们都是对「第三步怎么走」的重写,三段流水线的骨架没变。
坏味道预警:拿微调治幻觉
模型编造事实,多数时候不是「没微调好」而是「知识不在参数里」——用微调硬灌知识既贵又容易只记住表述而非事实本身,还堵死了更新通道。幻觉的正确解法优先级:检索增强(给它资料)> 提示约束(让它承认不知道)> 微调(最后才轮到)。
自测
合上文章先自己答,再展开对照:
SFT 学到的是「格式」还是「能力」?证据是什么?
证据两端:「主要是格式」的一端是 LIMA 论文的表面对齐假说——1000 条精选数据就能完成对齐,说明能力几乎全来自预训练,SFT 学的是「助手该怎么说话」的壳;「不止格式」的一端是数据质量与多样性实验——覆盖不到的领域 SFT 后明显拉胯,劣质标注还会带偏模型(幻觉、谄媚)。综合判断:通用能力来自预训练,SFT 决定能力的打开方式与边界——格式是显学,但教什么、不教什么实际划定了能力范围。对小团队的落点:缺知识先换基座或上 RAG,缺格式与流程才轮到 SFT;指望 SFT 教会预训练没学过的能力,性价比远低于换基座。
RLHF 第三步为什么要同时养四个模型?各自干什么?
因为「人类偏好」没法写成标准答案,只能间接训练:Reward 模型(第二步产物,冻结)负责把偏好变成可计算的分数,充当裁判;Reference 模型(SFT 冻结副本)负责算 KL 惩罚,防止 Actor 为讨好裁判跑得太远、把预训练能力跑丢;Critic 负责估计状态价值,降低 PPO 梯度的方差;Actor(SFT 初始化)是唯一学策略的模型(Critic 学的是价值估计)。四个模型同架构,训练闭环里只训 Actor 与 Critic——绕是绕,但这是「把比较信号变成可用梯度」的经典代价;后来 DPO 用偏好对直接优化、砍掉了 Reward 与整个闭环(见 DPO/GRPO 专篇)。
参考与延伸
- Ouyang 等《Training language models to follow instructions with human feedback》(InstructGPT,2022):RLHF 三阶段范式的确立 — arxiv.org/abs/2203.02155
- Hu 等《LoRA: Low-Rank Adaptation of Large Language Models》(2021):低秩自适应与「参数降至万分之一」 — arxiv.org/abs/2106.09685
- Meta《The Llama 3 Herd of Models》(2024):15T token 预训练与数据工程 — arxiv.org/abs/2407.21783
- Meta Llama 3 模型卡(MODEL_CARD.md):对齐数据「超 1,000 万条人工标注样例」口径出处 — github.com/meta-llama/llama3
- Zhou 等《LIMA: Less Is More for Alignment》(2023):1000 条数据对齐与表面对齐假说 — arxiv.org/abs/2305.11206
- Karpathy《Deep Dive into LLMs like ChatGPT》(视频,2025-02):base model 演示组(逐字背诵、「平行宇宙」)与 FineWeb 数据管线讲解的出处 — B 站搬运;YouTube 原片
- Meta 官方博客《Introducing Meta Llama 3》:「超 5% 高质量非英语数据、覆盖 30 多种语言」口径的出处 — ai.meta.com/blog/meta-llama-3
下一站:推理模型:测试时计算与 RLVR——RLHF 的奖励靠人类裁判,可「答案对不对」其实经常不需要人:让规则当裁判,模型自己想得更久。