本文系统阐述了大语言模型(LLM)从预训练基础模型到对齐人类需求的 AI 助手的核心后训练流程,明确了后训练与传统微调的区别,拆解了 SFT、DPO、GRPO 三个核心阶段的原理、实现与实践要点,并梳理了后训练技术的发展历程与落地考量。

一、什么是后训练(Post-Training)

1.1 核心概念

当Meta发布Llama或Mistral发布其模型时,通常会提供两个版本:基础模型(Base Model)指令模型(Instruct Model)。基础模型是预训练的直接产物,只能进行文本自动补全,无法遵循指令、回答问题或进行对话。指令模型则具备所有这些能力。两者的关键区别就在于后训练——一组在预训练之后应用的技术,将文本补全引擎转变为AI助手。

如果预训练好比让一个人阅读大量书籍,那么后训练就是教他如何就所读内容进行对话。

1.2 后训练与微调的区别

这两个概念虽然重叠,但并非同一回事。

后训练 vs 微调对比

维度

后训练

微调

目标

通用型助手

特定任务专家

数据规模

100万+样本

1万-100万样本

执行者

模型提供商(Meta、Mistral等)

最终用户和企业

输出

指令/对话模型

领域适配模型

技术组合

SFT + DPO + RL

通常仅SFT

后训练是将Llama变成Llama-Instruct的过程;微调则是将Llama-Instruct变成自定义产品助手的过程。两者使用相同的底层方法(尤其是SFT),但规模和目的不同。

二、三阶段流水线概览

现代后训练遵循一个三阶段流水线,每个阶段建立在前一个阶段之上:

基础模型  →  SFT  →  DPO  →  GRPO  →  对齐模型
(自动补全)    (遵循指令)  (偏好优质回答)  (逐步推理)

三、第一阶段:监督微调(Supervised Fine-Tuning, SFT)

3.1 核心作用

SFT是最直观的阶段:向模型展示数千对"指令-回答"样本,训练它生成类似的输出。例如,对基础模型输入"法国的首都是什么?",它可能会续写为"德国的首都是什么?什么是……"——它是在自动补全,而非在回答问题。经过SFT后,它才会回答:"法国的首都是巴黎。"

SFT教授三项核心能力:

  • 指令遵循:理解用户所问的内容
  • 格式合规:以期望的结构(对话、JSON、代码)进行回复
  • 知识激活:将预训练中获得的相关知识调取出来

3.2 三种训练方法

运行SFT有三种方式,各有权衡:

SFT训练方法对比

方法

质量

显存需求

速度

适用场景

全量微调

最佳

极高(2倍模型)

拥有多块A100时

LoRA

接近全量

高(1倍模型 + 5%)

大多数团队的默认选择

QLoRA

良好(轻微下降)

低(0.25倍模型)

中等

消费级GPU、原型开发

LoRA(低秩适配) 是大多数实际工作的标准方法。它冻结基础模型权重,只训练小型适配器矩阵(约占模型总参数的2%),以极小的计算开销达到接近全量微调的质量。

QLoRA 更进一步,将基础模型量化为4位精度,显存需求降低至原来的四分之一。代价是质量有轻微下降——适合实验和原型开发,但生产环境通常仍用LoRA或全量微调。

3.3 关键训练参数

SFT阶段最关键的训练参数:

  • 学习率:1e-5 到 5e-5(过高会导致灾难性遗忘,过低则无有效学习)
  • 训练轮数(Epochs):3-5轮(并非越多越好,模型在小数据集上会快速过拟合)
  • 批次大小(Batch Size):8-16(更大批次可使梯度更平滑,但需要更多显存)
  • 最大序列长度:2048-8192 tokens(越长上下文越丰富,但训练速度越慢)
  • 优化器:带权重衰减0.01的AdamW

3.4 数据集质量重于规模

文章特别强调:数据集的质量远比规模重要。一个优秀的SFT数据集需具备三大支柱:

  1. 准确性:每条回答都必须正确。一条错误回答就可能教会模型产生幻觉。
  2. 多样性:覆盖全部任务类型——问答、推理、编程、数学、创意写作。
  3. 复杂性:包含多步推理,而不仅仅是简单的事实回忆。

一个精心策划的5万条高质量样本,性能始终优于50万条充满噪声的样本。

四、第二阶段:直接偏好优化(Direct Preference Optimization, DPO)

4.1 核心机制

SFT教会模型生成合理回答,DPO则教会模型在存在多个有效回答时哪个更好。DPO使用偏好对(Preference Pairs) 进行工作——对每个提示词,提供一个"被选中的"(好的)回答和一个"被拒绝的"(差的)回答。训练目标是在概率上拉开选中回答与被拒绝回答之间的差距,模型不光学到了该说什么,还学到了不该说什么。

SFT与DPO的教学逻辑对比

SFT

DPO

教学方式

"对这类问题,你应该这样回答"

"这两个回答之间,这个更好,因为……"

局限

无法区分"够好"与"优秀"的回答

——

SFT存在能力上限——它教会模型模仿训练数据,但无法区分"够好"的回答和"优秀"的回答。DPO加入了质量信号,将模型推向其能力范围的更优一端。

4.2 策略漂移问题与解决方案

DPO有一个重要陷阱:策略漂移。如果偏好数据是由另一个模型(如GPT-4)生成的,那么该模型的回答风格与你的模型之间存在不匹配,训练信号会变得充满噪声。解决方案是在线策略数据生成(on-policy data generation):使用你自己的模型生成回答,再由LLM评审团进行排序,最佳为Chosen、最差为Rejected,然后用DPO进行训练。这创建了更紧密的反馈闭环——模型从自身错误中学习,而非从另一模型的输出中学习。

4.3 最新DPO改进技巧

文章中提到的前沿改进技术包括:

  • 长度归一化:防止模型学到"越长越好取悦用户"的偏好
  • 锚定偏好优化:添加参考锚点以稳定训练过程
  • 精炼选中回答:训练前使用更强模型打磨"被选中"的回答
  • 基于评分标准的评分:按特定维度(准确性、帮助性、安全性)评分,而非简单的二元好坏判断

五、第三阶段:强化学习(Group Relative Policy Optimization, GRPO)

5.1 GRPO工作原理

这是最新、也最强大的阶段。SFT教模仿,DPO教偏好,RL则教模型推理——去尝试多种思路,并学习哪些思维模式能导向正确答案。

GRPO(组相对策略优化) 由DeepSeek提出,并驱动了DeepSeek-R1等模型。与需要单独"评论家模型"的传统RL方法(PPO)不同,GRPO更为简洁:

  1. 给定一个提示词,采样一组回答(例如8个输出)
  2. 用奖励函数为每个回答打分
  3. 在组内归一化分数,计算每个回答的相对优势
  4. 更新模型,使其生成更多高分回答、更少低分回答

核心洞见在于:通过在一组回答内部进行比较,GRPO不需要知道每个回答的绝对价值——它只需要知道这批回答中哪个相对更好。

5.2 奖励函数设计

奖励函数是驱动学习的核心,分为两类:

类型

示例

特点

基于规则的奖励

数学答案是否匹配正确答案?代码是否通过测试用例?格式是否符合要求?

易于实现,信号明确无歧义

基于模型的奖励

使用另一个LLM评判回答质量

更灵活通用,但引入了另一个模型的偏见

对于大多数实际应用,基于规则的奖励效果最好,因为它们给出的是无歧义的信号。这也解释了为何RL在数学和编程任务上最为成功——奖励是二元的(正确或错误)。

5.3 RL为何至关重要

RL赋予了DeepSeek-R1、OpenAI o1等模型推理能力。模型在此阶段学会了:

  • 将问题拆解为多个步骤
  • 尝试多种解题思路
  • 验证自身的工作
  • 当某条路径行不通时回退重试

这种涌现行为无法从SFT获得——那需要数百万条完美的思维链示例;也无法从DPO获得——偏好对无法很好地捕捉推理过程。RL让模型通过试错自行发现推理策略。

六、后训练的三个发展阶段

后训练技术经历了快速演进:

阶段

时间

核心特征

代表模型

SFT时代

2017-2023

从Transformer论文和InstructGPT的RLHF起步,聚焦于让模型至少能遵循指令

GPT-3.5、早期ChatGPT

DPO时代

2023-2024

DPO通过消除独立的奖励模型,降低了RLHF的复杂性;对齐变得对小型团队也可行

Zephyr、Intel NeuralChat、早期Llama微调版本

RL时代

2025+

DeepSeek-R1证明纯RL可产生突破性推理能力,GRPO成为标准

DeepSeek-R1、QwQ、Kimi k1.5

七、实用工具与资源需求

7.1 工具推荐

后训练工具链对比

工具

最适用于

复杂度

Unsloth

SFT和DPO,新手友好

TRL(Hugging Face)

完整流程(含GRPO)

OpenRLHF

大规模分布式RL

torchtune(PyTorch)

原生PyTorch的SFT

对大多数团队而言,Unsloth处理SFT/DPO,TRL处理GRPO,即可覆盖完整流程。

7.2 资源需求

各阶段成本对比

阶段

算力需求

数据需求

典型耗时

SFT

1 GPU,数小时

1万-10万样本

3-8小时

DPO

1-2 GPU,数小时

1万-5万偏好对

4-12小时

GRPO

4-8+ GPU,数天

提示词 + 奖励函数

1-7天

SFT对任何拥有一块GPU的人都触手可及;DPO增加了中等成本;RL则需要严肃的基础设施——这也是它主要由大型实验室和资金充足的团队来完成的原因。

7.3 何时需要后训练 vs 微调

大多数开发者无需运行完整的后训练流程。决策路径如下:

  1. 指令模型开始——已有人为你完成了后训练
  2. 先尝试RAG——在推理时注入领域知识
  3. 如需要特定语气/领域格式化/一致的行为模式,用SFT微调
  4. 如模型生成尚可但质量缺乏一致性,考虑DPO
  5. 仅在有明确奖励信号(代码正确性、数学准确性)且有充足算力时考虑RL

八、优劣势分析

8.1 优势

  • 转变能力:基础模型对终端用户几乎无用,后训练使其变得实用
  • 阶段可组合:每个阶段解决不同的弱点,可在任意阶段停止
  • SFT易于获取:任何拥有GPU和优质数据的人都能在数小时内微调模型
  • RL解锁推理:这些能力无法仅通过模仿来教授
  • 开源工具齐全:Unsloth、TRL等使完整流程对所有人开放

8.2 劣势

  • 数据质量决定一切:糟糕的训练数据只会让模型变得更差而非更好
  • 灾难性遗忘:过于激进的训练可能破坏预训练阶段获得的知识
  • RL成本高昂:完整的GRPO需要多GPU环境和数天的算力投入
  • 对齐税:安全训练可能降低模型的原始能力(模型变得更谨慎)
  • 评估困难:与预训练损失不同,后训练的质量评估是主观的且依赖于具体任务
  • 策略漂移:使用离线数据进行的DPO会产生不可靠的结果

九、核心要点总结

  • 后训练是连接原始语言模型和实用AI助手之间的桥梁
  • 三阶段流程:SFT(学习遵循指令)→ DPO(学习偏好更优回答)→ RL(学习推理)
  • 从指令模型开始——除非你有特定需求,否则不要重复造轮子
  • SFT是商业微调最实用的阶段,推荐配合LoRA使用
  • RL是前沿领域——它如何构建出最好的推理模型,但需要海量资源
  • 数据集质量永远优先于数量

参考文章:LLM Post-Training Explained: SFT, DPO, and GRPO

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐