大模型训练经常被概括为“预训练获得知识,后训练学会对话”。这个说法便于入门,但容易掩盖几个重要事实:基础模型已经能够生成流畅文本,后训练也不只是 SFT 和强化学习,RAG、工具调用更不是某种训练算法的自然升级。
本文建立一套更准确的后训练学习框架,重点回答以下问题:
- 预训练、继续预训练、SFT、偏好优化和强化学习分别改变什么;
- SFT 为什么有效,又为什么可能造成能力退化;
- PPO 与 GRPO 的真实差异是什么;
- 什么场景值得引入强化学习;
- 小团队如何建立一条可评测、可回滚的后训练链路。
本文讨论的是方法论和工程决策,不提供某个框架的固定参数配方。训练参数必须根据基座模型、数据规模、上下文长度和目标硬件重新实验。
一、先给结论
- 预训练决定能力底座,后训练负责能力激发、行为塑造和偏好对齐。 后训练可以显著改变模型表现,但不能凭空补齐预训练阶段完全缺失的知识和能力。
- 后训练不等于 SFT 加强化学习。 后训练通常还包含偏好优化、安全对齐、工具轨迹训练和蒸馏;继续预训练则是进入后训练前的可选过渡阶段。
- SFT 学的是示范答案的条件分布。 它适合教格式、风格、流程和任务行为,但可能过拟合窄分布,引起通用能力回退。
- 高质量数据优先于盲目扩量,但覆盖度仍然重要。 一千条高质量数据可能胜过大量噪声数据,不代表所有任务都只需要一千条数据。
- DPO 等偏好优化不能从框架中省略。 当目标是“回答 A 比回答 B 更好”,偏好数据往往比单一标准答案更自然,也比在线强化学习更容易落地。
- GRPO 不是 GPO。 GRPO 使用组内相对奖励估计优势,省去了 PPO 中单独学习的价值模型,但不意味着所有实现都固定只需两个模型。
- 在线采样不自动消除遗忘。 强化学习的数据更接近当前策略分布,但仍可能出现奖励投机、分布坍缩、长度偏置和基础能力回退。
- 非必要不引入强化学习。 只有当奖励可稳定计算、SFT 或偏好优化已经触顶,并且收益覆盖采样和训练成本时,RL 才值得进入生产路线。
二、大模型训练阶段的完整地图
2.1 从基础模型到可用模型
一条常见但并非唯一的训练链路如下:
flowchart LR
A[原始语料与代码] --> B[预训练]
B --> C[基础模型 Base]
C --> D{是否需要补充领域或长上下文能力}
D -->|需要| E[继续预训练或中期训练]
D -->|不需要| F[SFT 指令微调]
E --> F
F --> G[指令模型]
G --> H{是否有偏好数据}
H -->|有| I[DPO 等偏好优化]
H -->|无| J{是否有可靠奖励}
I --> J
J -->|有且值得| K[PPO / GRPO 等强化学习]
J -->|没有| L[评测与发布]
K --> L
L --> M[线上反馈与数据闭环]
M --> F
继续预训练常被称为领域预训练或中期训练,它仍然使用语言建模目标,严格来说不属于 SFT、偏好优化和 RL 所构成的狭义后训练。安全训练、拒答边界、工具调用和多语言平衡也不一定对应独立阶段,它们可以通过数据配比、SFT、偏好优化或 RL 贯穿多轮训练。
2.2 各阶段解决的问题不同
| 阶段 | 主要数据 | 典型目标 | 主要产出 | 常见风险 |
|---|---|---|---|---|
| 预训练 | 大规模文本、代码、多模态数据 | 下一个 Token 预测 | 基础模型 | 数据污染、偏见、训练不稳定、成本极高 |
| 继续预训练 | 领域原始语料、长文本或新语言语料 | 继续做语言建模 | 领域或能力增强的基础模型 | 领域过拟合、通用能力退化 |
| SFT | 指令与理想回答、工具轨迹 | 模仿目标行为 | 指令模型 | 分布收窄、格式过拟合、灾难性遗忘 |
| 偏好优化 | chosen/rejected 偏好对 |
提高偏好回答的相对概率 | 更符合人类偏好的模型 | 偏好偏差、过优化、离线数据失配 |
| 强化学习 | Prompt、模型采样、奖励信号 | 最大化期望奖励 | 推理或行为进一步优化的模型 | 奖励投机、训练不稳定、Rollout 成本高 |
这些阶段不是越多越好。例如,企业分类任务若已有清晰标签,SFT 或普通分类模型可能已经足够;为了“技术完整”再加入 GRPO,通常只会增加成本和故障面。
三、预训练与后训练的边界
3.1 预训练到底学到了什么
自回归语言模型通过最小化下一个 Token 的负对数似然学习参数:
1 | L_pretrain = -Σ log P(token_t | token_1, ..., token_(t-1)) |
这个目标看似只是续写,却迫使模型从大规模数据中学习词法、语法、事实关联、代码模式和一定程度的推理结构。把基础模型称为“互联网语料的压缩包”可以帮助理解参数中保存了统计规律,但它不是严格定义:
- 模型不是可以无损解压的数据库;
- 参数记忆、模式泛化和推理能力混合在一起;
- 输出来自条件概率分布,不保证事实可追溯;
- 训练语料中的知识不等于模型能在任意提示下稳定调用这些知识。
基础模型通常已经能生成流畅文本,甚至能通过少样本提示完成任务。它真正欠缺的是稳定的指令遵循、对话模板、拒答边界、工具协议和人类偏好,而不是“完全没有对话能力”。
3.2 只有头部厂商才能做预训练吗
如果指的是从零训练前沿通用模型,这个判断基本成立。Meta 的 Llama 3.1 公开资料披露,405B 模型使用超过 15 万亿 Token,并将训练扩展到超过 1.6 万张 H100,数据治理、集群网络、并行训练、容错和评测都远超普通团队的资源范围。
但“预训练”本身并不只属于头部厂商:
- 小参数模型可以在较小集群上从零训练;
- 企业可以对开源基础模型做继续预训练;
- 科研团队可以用受控规模研究数据配比和训练算法;
- 垂直领域通常无需复刻前沿通用模型的完整投入。
因此,更准确的表述是:从零训练前沿通用基础模型需要超大规模资源,而继续预训练和小模型预训练仍有现实应用空间。
3.3 后训练的价值不能归因于单一算法
InstructGPT展示了 SFT 加人类反馈强化学习可以显著改善指令遵循;Qwen2.5 技术报告则公开了大规模 SFT 与多阶段强化学习带来的综合提升。这些结果说明后训练具有很高杠杆,但不能据此声称某个模型的能力“只来自后训练”。
模型升级可能同时包含预训练数据、Tokenizer、架构、上下文、合成数据、SFT 和 RL 的变化。若官方没有消融实验,就无法把最终指标提升归因到某一个阶段。
四、SFT 的运行逻辑
4.1 SFT 不是背答案,而是条件分布拟合
SFT 数据通常包含输入 x 和理想回答 y。训练时采用 Teacher Forcing:给定正确的历史 Token,最小化目标回答各 Token 的负对数似然。
1 | L_SFT = -Σ mask_t × log P(y_t | x, y_<t) |
mask_t 决定哪些 Token 参与损失。常见指令微调只对 Assistant 回答计算损失,也有多轮对话训练会选择性地计算多个 Assistant 回合。这里没有一种适合所有任务的固定做法,关键是训练模板必须与推理模板一致。
SFT 能有效教会模型:
- 遵循系统指令和输出格式;
- 使用特定语气、语言和术语;
- 执行固定业务流程;
- 生成结构化 JSON 或函数调用参数;
- 在给定证据时按目标方式组织回答;
- 模仿示范中的推理或工具使用轨迹。
但 SFT 不保证:
- 新知识被稳定写入并能准确召回;
- 模型在分布外输入上仍遵循同一行为;
- 模型学会验证答案而非模仿答案表面;
- 工具真实可用、参数合法且执行结果可信;
- 幻觉被彻底消除。
4.2 RAG、思维链和工具调用不是同一层技术
将幻觉治理描述成“SFT 之后依次出现 RAG、CoT、工具调用”会混淆训练层和系统层:
| 方法 | 所属层 | 解决的问题 | 不能保证的事情 |
|---|---|---|---|
| SFT | 模型训练 | 学习回答模式、格式和任务行为 | 事实一定正确 |
| CoT | 提示与训练行为 | 给复杂任务更多中间计算空间 | 推理过程一定忠实、结论一定正确 |
| RAG | 外部检索系统 | 提供可更新、可引用的外部证据 | 模型一定采用正确证据 |
| 工具调用 | 模型与执行系统 | 让模型请求搜索、计算、数据库或业务 API | 工具选择和参数一定正确 |
生产系统需要把这些能力组合起来:SFT 教模型遵循工具协议,运行时负责鉴权、参数校验、超时、重试和结果注入,评测再检查模型是否真正使用了工具结果。任何单一组件都不能独立“解决幻觉”。
五、SFT 数据工程
5.1 数据质量优先,但不能忽略覆盖度
LIMA使用 1000 条精心筛选的示范展示了少量高质量对齐数据的价值。它支持“质量优先”,但不能推出“所有业务只需要少量样本”。所需数据量仍取决于:
- 基础模型是否已经具备目标能力;
- 任务类型、语言和输入形态有多少;
- 输出格式和安全边界有多少组合;
- 长尾错误是否被训练集覆盖;
- 是教行为,还是补充模型很陌生的领域知识。
高质量数据至少应同时满足正确性、相关性、一致性、覆盖度和可追溯性。只有“答案写得漂亮”,但缺少真实线上难例,仍然不是好数据集。
5.2 一条可执行的数据流水线
flowchart LR
A[定义任务与验收标准] --> B[采集真实请求和专家规则]
B --> C[去重、脱敏与格式统一]
C --> D[人工标注或受控合成]
D --> E[事实、格式和安全校验]
E --> F[按来源和时间切分数据集]
F --> G[难度、长度与场景配比]
G --> H[SFT 训练]
H --> I[错误聚类与回归评测]
I --> J[补充高价值样本]
J --> D
数据记录不应只有 prompt 和 answer,还应保存:
| 字段 | 作用 |
|---|---|
sample_id |
去重、追踪和删除 |
source / license |
数据来源与合规审计 |
task_type |
控制任务配比和分层评测 |
language / domain |
检查语言与领域分布 |
difficulty |
难度采样和错误分析 |
messages |
完整对话与角色结构 |
tools / tool_calls |
固定工具 Schema 和调用轨迹 |
quality_status |
人工复核、规则校验和拒绝原因 |
created_at |
防止训练集与未来测试集时间穿越 |
5.3 特定词缺失不一定只是样本占比问题
若微调后出现专有名词缺失、错别字或某类格式消失,应依次检查:
- 原始样本中该词是否真实存在,是否在清洗时被替换;
- Unicode、全半角、简繁体和大小写是否被错误归一化;
- Tokenizer 是否把词拆成异常长的 Token 序列;
- 目标 Token 是否被 Loss Mask 排除;
- 截断或 Packing 是否切掉了关键答案;
- 相互冲突的写法在数据中各占多少;
- 推理时的模板、采样参数和约束解码是否改变输出;
- 问题是否只出现在某个场景、长度或语言分组。
样本均衡是可能的修复手段,但在确认根因前盲目过采样,可能让模型在无关场景也频繁输出该词。
六、SFT 为什么会遗忘,以及如何控制
6.1 灾难性遗忘的来源
当训练数据集中在狭窄领域时,梯度会持续把概率质量推向该领域的表达和答案。学习率过大、训练轮次过多、数据重复、全参数更新以及训练分布单一,都会放大这种变化。
所谓“遗忘”也需要拆开测量:
- 知识遗忘:原本会回答的通用事实答错;
- 能力遗忘:数学、代码、翻译或长上下文能力下降;
- 行为覆盖:知识还在,但固定模板让模型拒绝或不再展示;
- 分布偏移:旧评测提示格式与新对话模板不兼容;
- 安全回退:新任务效果提升,但拒答和越权边界恶化。
只有先区分这些现象,才能选择正确的修复方式。
6.2 常见防遗忘手段
| 手段 | 作用 | 代价与边界 |
|---|---|---|
| 降低学习率、轮次和有效更新步数 | 减少参数漂移 | 也可能学不充分,需要验证集早停 |
| 混入通用数据做 Replay | 维持旧分布并提供通用梯度 | 增加训练量,配比不当会稀释新任务 |
| LoRA、Adapter 等 PEFT | 限制可训练参数并保留基础权重 | 不保证无遗忘;Adapter 仍可能覆盖输出行为 |
| KL、蒸馏或 Logit 约束 | 限制新模型偏离参考模型 | 约束太强会压制新能力 |
| 多任务和分层采样 | 保持场景、语言和难度覆盖 | 需要可靠的标签体系和采样器 |
| 冻结部分层或模块 | 保护部分表示 | 可能限制领域适应上限 |
| Checkpoint 选择或模型合并 | 在新旧能力间寻找折中 | 合并不是万能平均,仍需完整回归评测 |
InstructGPT曾将预训练梯度混入 PPO 目标以缓解公开 NLP 任务回退。2026 年的预训练数据 Replay 研究进一步表明,通用数据回放在受控实验和部分 8B 任务中不仅能减轻遗忘,也可能提高目标数据效率。具体收益仍依赖任务和配比,不能直接复制论文比例。
LoRA的核心价值是减少可训练参数和训练资源,并允许保留基础权重。它降低了不可逆修改基础模型的风险,但只要 LoRA 在推理时改变输出分布,就仍可能造成行为层面的通用能力回退。
6.3 低资源团队的优先方案
在没有外部强模型参与标注时,可以采用以下闭环:
- 用基础模型在真实 Prompt 上生成多个候选;
- 使用确定性规则、单元测试、数据库对照或人工抽检筛选;
- 按当前模型通过率估计样本难度;
- 保留能够产生有效梯度的中等难度样本,同时保留必要的简单锚点和困难边界样本;
- 将失败类型聚类后定向补数,而不是无限自我生成;
- 每轮都对固定通用回归集和目标任务集评测;
- 只有上一轮通过门槛,才允许新模型继续生成下一轮数据。
这属于课程学习、主动数据选择、自训练和持续学习思想的组合,不应包装成一个未经确认的“万能算法”。自生成数据若没有外部验证,会不断放大模型原有错误,形成模型坍缩或错误闭环。
七、偏好优化:SFT 与强化学习之间缺失的一层
7.1 为什么需要偏好数据
很多任务没有唯一标准答案,但可以判断两个回答哪个更好。例如:
- 哪个回答更有帮助且不啰嗦;
- 哪个总结保留了更多关键事实;
- 哪个拒答边界更符合安全规范;
- 哪个工具调用计划风险更低;
- 哪段代码更易维护。
此时可以构造 (prompt, chosen, rejected) 偏好对,让模型提高 chosen 相对 rejected 的概率。
7.2 DPO 的定位
DPO将经典 RLHF 目标转化为直接作用于偏好对的分类式损失,不需要在训练过程中在线采样,也不需要先训练一个独立奖励模型。它通常比 PPO 更容易实现和调试。
但 DPO 不是“无风险的 SFT”:
- 偏好对来自旧模型时,可能与当前模型分布失配;
- 标注员可能偏爱更长、更自信或特定风格的回答;
- 相对偏好不等于答案事实正确;
- 训练过度仍可能降低被偏好回答本身的概率;
- 离线数据覆盖不到的新行为无法被可靠约束。
7.3 三类方法怎么选
| 目标 | 优先方法 | 原因 |
|---|---|---|
| 学会固定格式、流程或标准答案 | SFT | 直接、稳定、样本结构简单 |
| 学习主观偏好或多个可接受答案的排序 | DPO 等偏好优化 | 偏好对比单一答案更自然 |
| 优化可执行、可计算的结果奖励 | GRPO、PPO 等 RL | 可以从模型自己的探索结果中学习 |
| 补充大量领域事实 | 继续预训练或 RAG,必要时再 SFT | SFT 不是高效知识库替代品 |
| 解决实时知识和可追溯问题 | RAG 或工具调用 | 模型权重不适合持续更新的事实 |
八、强化学习的核心运行逻辑
8.1 模型从自己的输出中学习
在语言模型强化学习中:
- 状态是 Prompt 加已经生成的 Token;
- 动作是下一个 Token;
- 策略是当前语言模型;
- 一条完整回答构成 Rollout;
- 奖励来自人工偏好模型、规则、执行器或环境反馈;
- 优化目标是在约束模型不要漂移过远的同时,提高期望奖励。
基本循环如下:
flowchart LR
A[采样一批 Prompt] --> B[当前策略生成多条回答]
B --> C[规则、验证器或奖励模型打分]
C --> D[估计每条回答的优势]
D --> E[更新策略参数]
E --> F[检查 KL、熵、长度和能力回归]
F --> G{是否通过停止条件}
G -->|否| A
G -->|是| H[冻结 Checkpoint 并离线评测]
与固定示范数据的 SFT 相比,RL 的回答来自当前策略,因此能不断暴露当前模型真实会生成的成功和失败路径。这种 On-policy 或近 On-policy 特性可以减少一部分训练与推理分布失配,但不能推出“RL 不会遗忘”。
模型可能为了奖励而牺牲未进入奖励函数的能力。训练中仍需通用回归集、KL 约束、早停和多目标评测。
九、PPO:经典但较重的 RLHF 路线
9.1 “四个模型”更准确地说是四类逻辑组件
经典 PPO 式 RLHF 经常包含以下组件:
| 组件 | 作用 | 是否更新 |
|---|---|---|
| Policy / Actor | 生成回答并被优化 | 是 |
| Value / Critic | 估计状态价值,降低策略梯度方差 | 是 |
| Reward Model / Grader | 给完整回答打分 | 通常冻结 |
| Reference Model | 计算 KL,限制策略偏离初始模型 | 冻结 |
因此“PPO 需要四个模型”可以作为资源估算的入门说法,却不是严格的部署要求:Policy 和 Value 可以共享 Backbone,参考模型可以通过 Adapter 或参数共享降低显存,奖励也可能来自规则而非神经网络。
真正让 PPO 较重的是:
- 需要生成 Rollout,训练与推理交替;
- 需要训练和校准 Value;
- Actor、Critic、Reference 和 Reward 的显存与通信复杂;
- PPO Clip、KL、GAE、奖励尺度等超参数相互影响;
- 奖励模型不完美时容易发生 Reward Hacking。
9.2 奖励上升不等于真实质量上升
代理奖励只能压缩表达真实目标的一部分。当训练持续寻找奖励模型漏洞时,可能出现:
- 为获得高分而变得冗长;
- 生成貌似严谨但事实错误的解释;
- 迎合评审模型的固定措辞;
- 利用格式或判题脚本漏洞;
- 在奖励覆盖的 Benchmark 上过拟合。
奖励过优化研究显示,无论经典 RLHF 还是直接偏好优化,都可能在优化过强时出现代理指标继续上升、真实质量反而下降的现象。训练必须同时观察外部评测、KL、输出长度、熵和失败类型,而不是只看 Reward 曲线。
十、GRPO:省去 Critic,不是省去所有复杂度
10.1 GRPO 的组内相对评价
DeepSeekMath提出 Group Relative Policy Optimization(GRPO)。对同一个 Prompt,当前策略采样一组回答,得到奖励 r_1 ... r_G,再用组内均值和标准差计算相对优势:
1 | A_i = (r_i - mean(r_1 ... r_G)) / (std(r_1 ... r_G) + ε) |
随后使用类似 PPO 的裁剪目标更新策略,并通过 KL 等方式限制策略漂移。因为组内奖励本身提供了 Baseline,GRPO 不需要单独训练一个 Value / Critic 模型,能够降低显存和训练复杂度。
10.2 GRPO 不是固定“两个模型”
GRPO 至少需要正在更新的策略。除此之外还可能需要:
- 用于 KL 约束的参考策略;
- 学习型 Reward Model;
- 数学判题器、代码沙箱或业务环境;
- 专门负责高吞吐 Rollout 的推理副本;
- 训练与推理权重同步组件。
如果奖励完全由规则或执行器计算,就不需要神经奖励模型;如果实现采用其他正则方式,参考模型的物理部署也可能变化。因此应按“逻辑组件、显存占用和调用路径”做容量评估,不能只数模型名字。
10.3 GRPO 的收益和边界
优点:
- 省去学习型 Critic;
- 同一 Prompt 内相对比较,降低绝对奖励标定要求;
- 适合数学、代码和其他可验证奖励任务;
- 可以从多次采样中探索 SFT 数据没有覆盖的解法。
限制:
- 一组回答奖励完全相同时,组内缺少有效学习信号;
- 每个 Prompt 生成多条回答,Rollout Token 成本很高;
- 奖励稀疏时,大量采样没有有效梯度;
- 训练效果依赖基础模型已有的探索能力;
- 组大小、采样温度、Clip、KL 和奖励尺度仍需联合调试;
- 仍会出现奖励投机、长度偏置和训练不稳定。
DeepSeek-R1展示了大规模 RL 能激发推理行为,也同时报告 R1-Zero 存在可读性差和语言混杂等问题,最终 R1 使用了冷启动数据和多阶段训练。这个结果更支持“RL 需要与数据和评测协同”,而不是“只要上 GRPO 就能涌现推理”。
10.4 长度与准确率的关系不能写成算法定律
复杂问题有时需要更长推理,训练早期也可能观察到正确回答平均更长。但相关不等于因果,奖励模型还可能天然偏爱长回答。
R1-Zero-like 训练分析指出,GRPO 的目标设计可能带来响应长度偏置,尤其会让错误回答变长。生产训练应分别监控:
- 正确与错误回答的长度分布;
- Reward 与长度的相关性;
- 单位 Token 的正确率增益;
- 超长回答占比和截断率;
- 在固定推理预算下的准确率。
不要把“越长越准”写进奖励函数,也不要简单加入长度惩罚。两者都可能让模型钻空子。
十一、什么场景值得使用强化学习
11.1 三个必要条件
引入 RL 前至少确认:
- 奖励可靠:能够自动、稳定、低歧义地判断输出质量;
- 探索有价值:模型可能通过多次采样找到示范数据中没有的更优策略;
- 收益覆盖成本:SFT 或偏好优化已经触顶,RL 的质量提升足以覆盖 Rollout、沙箱和训练基础设施成本。
11.2 场景判断
| 场景 | RL 适用性 | 更低成本的优先方案 |
|---|---|---|
| 数学推理,答案可自动判定 | 高 | 先做高质量 CoT SFT 基线 |
| 代码生成,有隔离沙箱和测试用例 | 高 | 先做代码 SFT 与 Rejection Sampling |
| Agent 完成多步任务,环境能返回成功信号 | 中到高 | 先做轨迹 SFT、工具约束和离线回放 |
| 固定 JSON、SQL 语法或格式检查 | 中 | 约束解码、SFT 通常更便宜 |
| 普通分类,有完整标签 | 低 | 监督学习或 SFT |
| 开放式写作和主观风格 | 低到中 | 偏好优化和人工评测 |
| 事实问答、知识需要频繁更新 | 低 | RAG、搜索和工具调用 |
| 医疗、法律等高风险开放任务 | 谨慎 | 专家标注、规则系统、检索与人工复核 |
“分类检测类任务适合 RL”不是普遍规则。若标签已经明确,监督学习能直接利用每条样本,通常比在线采样更高效。只有当目标是长期序列决策、不可微环境反馈或复杂组合指标时,RL 才可能体现额外价值。
十二、奖励设计的最低要求
即使不深入具体算法,也要先把奖励拆成可审计的信号:
| 奖励类型 | 示例 | 主要风险 |
|---|---|---|
| 结果奖励 | 数学答案正确、测试用例通过 | 稀疏、无法区分推理质量 |
| 过程奖励 | 中间步骤合法、工具选择正确 | 标注贵,过程评审也会出错 |
| 格式奖励 | JSON 可解析、字段齐全 | 模型只优化格式,不优化内容 |
| 成本奖励 | Token、工具次数、执行时长 | 过度压缩导致能力下降 |
| 安全奖励 | 无越权、无危险操作 | 可能诱发过度拒答 |
不要把所有指标简单线性相加后只观察总分。至少保留每个子奖励、原始验证结果和失败原因,否则 Reward 上升时无法知道模型优化了什么。
奖励验证器还必须防止投机:代码在隔离沙箱运行,测试用例包含隐藏集,SQL 只读且限制资源,外部工具使用最小权限,评审模型需要交换候选顺序并抽样人工复核。
十三、小团队的后训练落地路线
13.1 先选择正确的问题层级
flowchart TD
A[当前模型不满足需求] --> B{缺的是实时或私有事实吗}
B -->|是| C[RAG、搜索或业务工具]
B -->|否| D{缺的是领域语言建模能力吗}
D -->|是| E[评估继续预训练]
D -->|否| F{有明确标准答案或轨迹吗}
F -->|是| G[SFT]
F -->|否| H{能稳定比较回答优劣吗}
H -->|是| I[DPO 等偏好优化]
H -->|否| J{能自动计算可靠奖励吗}
J -->|是| K[在 SFT 基线上评估 GRPO / PPO]
J -->|否| L[先改任务定义、数据和评测]
13.2 分阶段设置准入门槛
阶段 0:建立基线
- 固定基座模型、Tokenizer、Chat Template 和推理参数;
- 建立目标任务集、通用回归集、安全集和性能集;
- 保存每条样本的输入、期望、评分逻辑和来源;
- 先测试 Prompt、RAG、约束解码和工具编排是否已经够用。
阶段 1:完成 SFT
- 从 LoRA 和小规模高质量数据起步;
- 对学习率、数据配比和训练步数做最小对照实验;
- 同时观察目标任务增益与通用能力回退;
- 聚类错误后补数,不根据单一 Loss 继续堆 Epoch。
阶段 2:评估偏好优化
- 确认偏好准则可重复,标注员一致性达到要求;
- 检查长度、语气、位置和品牌等偏差;
- 让偏好数据尽量接近当前策略会产生的回答;
- 使用独立人工集验证 DPO 收益,而不是只看隐式 Reward。
阶段 3:受控引入 RL
- 从可验证、低风险、短 Rollout 的任务开始;
- 先运行 Reward 和数据管线,不更新模型,确认评分可信;
- 监控 KL、熵、Reward、准确率、长度、无效 Rollout 和 OOM;
- 设置最大训练步数、最大 Token 成本和自动停止门槛;
- 任何目标指标提升都必须通过通用与安全回归集。
13.3 最小实验矩阵
| 实验 | 目的 | 必须保持不变的变量 |
|---|---|---|
| Base vs SFT | 判断示范学习收益 | 测试集、模板、推理参数 |
| SFT vs SFT + Replay | 测防遗忘 | 目标数据、训练 Token 预算 |
| Full FT vs LoRA | 测能力上限和回退 | 数据顺序、优化步数 |
| SFT vs DPO | 测偏好优化收益 | 基础 Checkpoint、人工评测集 |
| SFT vs GRPO | 测在线探索收益 | Prompt 集、最终评测预算 |
| 不同 Reward 版本 | 测奖励可靠性 | Rollout 样本和策略 Checkpoint |
不要一次同时更换基座模型、数据、模板、算法和推理参数。最终效果即使上升,也无法知道是哪一个变量产生作用,更无法在回退时定位问题。
十四、评测、发布与回滚
14.1 训练 Loss 不能作为上线依据
完整评测至少包含:
| 维度 | 指标示例 |
|---|---|
| 目标任务 | Accuracy、F1、Pass@K、任务成功率、格式通过率 |
| 通用能力 | 语言、数学、代码、知识、长上下文回归集 |
| 偏好与质量 | 人工盲评胜率、成对偏好、一致性 |
| 事实与证据 | 事实正确率、引用支持率、无答案拒答率 |
| 工具与 Agent | 工具选择、参数正确率、任务完成率、越权率 |
| 安全 | 有害请求、Prompt Injection、隐私与权限测试 |
| 稳定性 | 多次采样方差、异常输入、超长输入、语言混杂 |
| 性能 | Token/s、P50/P95/P99、显存、Rollout 成本 |
评测集要按用户、文档、时间或任务来源切分,避免同一问题的改写同时进入训练集和测试集。合成数据使用的生成模型和 Judge 也要记录版本,防止评测标准静默变化。
14.2 版本指纹
每个训练产物至少绑定以下信息:
1 | base_model_id + base_revision |
只记录“某 7B 模型 + LoRA”不足以复现结果。模板、Loss Mask、数据顺序和 Reward 变化都可能显著改变行为。
14.3 灰度和回滚
上线前先做离线固定集,再做 Shadow 双跑,最后小流量 Canary。新旧模型必须接收同一输入和同一工具环境,才能比较真实差异。
回滚时需要同时恢复:
- 模型或 LoRA 权重;
- Chat Template 和 System Prompt;
- Tokenizer 与推理引擎配置;
- Reward 或路由策略;
- 工具 Schema、权限和超时配置。
模型 Checkpoint 可回滚,不代表其依赖的 Prompt 和工具协议可以任意混用。
十五、常见错误认知修正
| 常见说法 | 更准确的表述 |
|---|---|
| 基础模型只是互联网压缩包,不会流畅对话 | “压缩”只是比喻;基础模型能生成流畅文本,但指令遵循和对话边界不稳定 |
| 只有头部大厂能做预训练 | 从零训练前沿通用模型门槛极高,小模型和继续预训练仍可落地 |
| 后训练只有 SFT 和 RL | 狭义后训练还包括偏好优化、蒸馏、安全训练等;继续预训练是可选的前置过渡阶段 |
| SFT 就是强制逐 Token 复制答案 | SFT 在 Teacher Forcing 下最小化目标 Token 的负对数似然 |
| RAG、CoT、工具调用逐步解决了 SFT 幻觉 | 它们属于不同层,只能协同降低特定错误,不能保证无幻觉 |
| 数据质量高就不需要关注数量 | 质量优先,但任务覆盖、长尾和安全边界仍需要足够样本 |
| LoRA 能避免灾难性遗忘 | LoRA 保留基础权重并限制更新参数,但仍可能覆盖模型行为 |
| RL 使用当前模型采样,所以不会遗忘 | 分布失配可能更小,但奖励投机和未覆盖能力退化依然存在 |
| PPO 必须独立部署四个模型 | 它有四类常见逻辑组件,物理实现可以共享参数或使用规则奖励 |
| GPO 只需两个模型 | 正确术语通常是 GRPO;组件数量取决于参考策略和奖励实现 |
| GRPO 证明回答越长越准确 | 长度可能与任务难度相关,也可能是算法或奖励偏置 |
| 分类任务天然适合强化学习 | 有明确标签时,监督学习通常更直接、更稳定、更省样本 |
| 某个“RFD”算法可以直接解决低资源防遗忘 | RFD 无法唯一对应这一描述;确认论文前,应分别讨论 Replay、持续学习、课程学习和自训练 |
十六、总结
大模型后训练不是把所有算法依次跑一遍,而是根据问题类型选择最小充分方案:
- 预训练建立知识、语言和能力底座;
- 继续预训练补充领域分布或特定基础能力;
- SFT 用高质量示范教会模型任务行为;
- 偏好优化学习多个可接受答案之间的取舍;
- 强化学习在奖励可靠时利用模型自己的探索结果继续优化;
- RAG 和工具系统负责模型权重不适合承担的实时事实与可执行能力;
- 通用回归、安全评测、版本指纹、灰度和回滚贯穿所有阶段。
对多数团队而言,最稳妥的路线是:先用 Prompt、RAG 或工具解决系统问题,再用 LoRA SFT 建立可复现基线;有可靠偏好对时尝试 DPO;只有具备可验证奖励、足够 Rollout 预算和严格评测闭环时,才进一步采用 GRPO 或 PPO。
下一步深入学习时,可以分别拆解 SFT 的数据混合与 Loss Mask、DPO 的偏好损失、PPO/GRPO 的目标函数、Reward 设计、Rollout 系统和分布式训练。算法公式只有放回数据、评测和生产约束中,才具有真正的工程意义。
参考资料
- The Llama 3 Herd of Models
- Training language models to follow instructions with human feedback
- LIMA: Less Is More for Alignment
- LoRA: Low-Rank Adaptation of Large Language Models
- Direct Preference Optimization: Your Language Model is Secretly a Reward Model
- DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
- DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
- Qwen2.5 Technical Report
- Replaying pre-training data improves fine-tuning
- Scaling Laws for Reward Model Overoptimization in Direct Alignment Algorithms
- Understanding R1-Zero-Like Training: A Critical Perspective