Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

微调技术综述

预训练得到的基座模型,只会一件事:续写文本。在第 15 到 18 章,我们实现的监督微调(SFT)教会它按照“提示词 → 回答”的格式对话,直接偏好优化(DPO)让它偏向更好的回答。这两步是今天大模型后训练流程的缩影。

但是,工业界的后训练要复杂得多:更大规模的指令数据、更省显存的微调方法、基于强化学习的偏好对齐,以及近两年最重要的突破:用可验证的奖励训练出会“思考”的推理模型。本章我们梳理微调领域的主流技术,建立一张完整的技术地图。

大模型技术演进很快,本章内容截至 2026 年 11 月。

微调技术全景

一个现代大模型,从基座到最终产品,通常要经过这些阶段:

阶段数据学习信号作用
继续预训练 / 中期训练大量无标注文本下一词元预测补充领域知识,扩展上下文尺寸
监督微调(SFT)“提示词 + 回答”示范模仿示范学会对话格式和指令遵循
偏好优化(RLHF、DPO)回答的好坏比较偏好对齐人类偏好:有用、无害、风格
可验证奖励的强化学习(RLVR)有标准答案的题目程序判定的对错提升推理、数学、代码、智能体能力
蒸馏与合并强模型的输出或多个模型模仿、参数平均把能力迁移给小模型,融合多个模型

不同模型的组合方式不同。以 Qwen3 为例,后训练分为四步:用长思维链数据冷启动 → 面向推理的强化学习 → 把“思考”和“不思考”两种模式融合 → 通用强化学习;小模型则通过“从强到弱”的蒸馏获得能力。Llama 3 则是多轮“采样 → 拒绝采样 → SFT → DPO”的迭代,没有使用 PPO。

监督微调进阶

表面对齐假说

我们的 SFT 只用了几百条数据。令人惊讶的是,这在一定程度上也是有效的。LIMA 研究只用 1000 条精心挑选的样本微调一个 65B 的基座模型,就得到了很强的对话能力。由此提出了表面对齐假说(Superficial Alignment Hypothesis):模型的知识和能力几乎都来自预训练,微调主要是教会模型使用什么样的风格和格式来回应。

这个假说有一定道理,但是并不完整:

所以更准确的说法是:数据的质量和多样性比数量更重要,而不同的能力,需要的数据量不一样。

指令数据

指令数据从哪里来?

数据处理的要点:去重、过滤低质量和有害内容、保证任务和领域的多样性、控制难度分布。另外要注意:使用其他商业模型的输出训练模型,可能受到其服务条款的限制。

对话模板

多轮对话需要告诉模型:哪一段是系统提示词,哪一段是用户说的,哪一段是助手回答的。这靠对话模板(Chat Template)实现:用特殊词元标记每条消息的角色和边界。例如 ChatML 格式用 <|im_start|> 和 <|im_end|> 包围每条消息,Llama 3 则使用专门的角色标头词元。

有几个要点:

训练技巧

继续预训练

当模型需要掌握新的领域(医学、法律、代码)或者新的语言时,只靠 SFT 的少量数据不够,需要在大量无标注文本上继续预训练(Continued Pretraining)。训练目标和预训练完全相同。

要点:

参数高效微调

全参数微调的代价

全参数微调需要为每个参数保存很多东西。采用 BF16 混合精度和 Adam 优化器时,每个参数需要:权重 2 字节 + 梯度 2 字节 + FP32 主权重 4 字节 + Adam 的两个动量各 4 字节,一共 16 字节。一个 7B 的模型就需要约 112 GB 显存,还不包括激活值;70B 的模型需要超过 1 TB。

另外,每个任务都要保存一份完整的模型副本,服务多个任务时,存储和切换的成本很高。

LoRA

LoRA(Low-Rank Adaptation)基于一个观察:微调带来的权重变化,大致位于一个低秩的子空间。所以冻结原来的权重 WW,只训练一个低秩的增量:

W′=W+αrBA,A∈Rr×k, B∈Rd×r, r≪min⁡(d,k)W' = W + \frac{\alpha}{r} B A, \quad A \in \mathbb{R}^{r \times k},\ B \in \mathbb{R}^{d \times r},\ r \ll \min(d, k)

这里:

BB 初始化为 0,所以训练开始时模型和原模型完全一致。可训练参数从 dkdk 降到 r(d+k)r(d+k),通常只有原来的 1% 或者更少。

LoRA 的好处:

Thinking Machines 的研究(“LoRA Without Regret”)给出了一些实用结论:

QLoRA

QLoRA 在 LoRA 的基础上,把冻结的基座权重量化成 4 位(NF4 格式),只用 BF16 训练适配器,前向和反向传播时再把权重反量化回来计算。再配合双重量化和分页优化器,一张 48 GB 的显卡就能微调 65B 的模型。代价是反量化带来额外的计算,训练速度比 LoRA 更慢。

基于人类反馈的强化学习

SFT 只能让模型模仿示范,但是很多时候“什么是好回答”很难写成示范,却很容易比较:给出两个回答,人很容易判断哪个更好。基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)利用的就是这种比较信息。InstructGPT 用它训练出的 1.3B 模型,在人类评价中优于 175B 的 GPT-3。

三个步骤

  1. 监督微调:用示范数据训练得到初始策略(也是后面的参考模型);

  2. 训练奖励模型:收集人类对同一个提示词的多个回答的偏好比较,训练一个模型给回答打分;

  3. 强化学习:让模型生成回答,用奖励模型打分,用强化学习算法更新模型,使它得到更高的分。

奖励模型

奖励模型通常是在语言模型的基础上增加一个输出标量的头。训练使用 Bradley-Terry 模型:假设回答 ycy_c 比 yry_r 更好的概率,取决于它们的奖励之差:

P(yc≻yr∣x)=σ(r(x,yc)−r(x,yr))P(y_c \succ y_r \mid x) = \sigma\big(r(x, y_c) - r(x, y_r)\big)

这里:

训练的损失是 −log⁡σ(r(x,yc)−r(x,yr))-\log \sigma\big(r(x, y_c) - r(x, y_r)\big),让被偏好的回答得分更高。

奖励模型只是人类偏好的一个不完美的代理。模型会钻它的漏洞:生成并不真正更好、但奖励模型打分更高的回答,比如更长、更讨好的回答,这叫做奖励黑客(Reward Hacking)或者过度优化。

强化学习

强化学习阶段的优化目标是:

max⁡π Ex, y∼π[r(x,y)]−β KL(π ∥ πref)\max_{\pi} \ \mathbb{E}_{x,\, y \sim \pi}\big[r(x, y)\big] - \beta\, \mathrm{KL}\big(\pi \,\|\, \pi_{\text{ref}}\big)

这里:

第一项最大化奖励,第二项用 KL 散度惩罚策略偏离参考模型太远。它的作用是:保持回答的流畅性,并且限制奖励黑客的空间。系数 β\beta 越大,约束越强。

最常用的算法是 PPO(Proximal Policy Optimization):

语言模型中,每个词元是一个“动作”,奖励通常只在整个回答结束时给出。

RLHF 的代价

DPO 和 RLHF 的关系

DPO 的出发点,是发现上面的优化目标有闭式的最优解:

π∗(y∣x)=1Z(x) πref(y∣x) exp⁡ ⁣(r(x,y)β)\pi^*(y \mid x) = \frac{1}{Z(x)}\, \pi_{\text{ref}}(y \mid x)\, \exp\!\Big(\frac{r(x, y)}{\beta}\Big)

这里:

反过来,可以把奖励用策略表示出来:

r(x,y)=βlog⁡π∗(y∣x)πref(y∣x)+βlog⁡Z(x)r(x, y) = \beta \log \frac{\pi^*(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \beta \log Z(x)

把它代入 Bradley-Terry 的偏好概率,其中与 yy 无关的 Z(x)Z(x) 在两个回答的差中正好抵消,奖励模型就被“消掉”了,得到只依赖策略和参考模型的损失:

LDPO=−log⁡σ(β[log⁡πθ(yc∣x)πref(yc∣x)−log⁡πθ(yr∣x)πref(yr∣x)])\mathcal{L}_{\text{DPO}} = -\log \sigma\Big(\beta\Big[\log\frac{\pi_\theta(y_c \mid x)}{\pi_{\text{ref}}(y_c \mid x)} - \log\frac{\pi_\theta(y_r \mid x)}{\pi_{\text{ref}}(y_r \mid x)}\Big]\Big)

这里:

这就是我们实现的 DPO。所以 DPO 并不是和 RLHF 完全不同的方法,而是在同一个优化目标下的一种离线、简化的求解方式:不需要奖励模型,不需要在线采样,不需要价值模型,像做 SFT 一样训练就行。括号中的量可以看作模型的隐式奖励,其中 β\beta 就是 KL 约束的强度。

偏好优化的其他算法

DPO 的问题

DPO 简单有效,但是也有一些已知的问题:

在线偏好优化

离线方法的根本局限,是数据不来自当前策略。在线或者迭代的方法让模型一边训练一边生成新的数据:

AI 反馈

人类标注昂贵而且慢,所以越来越多地使用 AI 来给出反馈(RLAIF):

AI 判官有它自己的偏差:偏爱更长的回答、偏爱排在前面的回答、偏爱自己风格的回答。所以仍然需要人类数据来校准。

可验证奖励的强化学习

可验证奖励

RLHF 的奖励来自一个训练出来的、容易被钻空子的奖励模型。而对于有客观答案的任务,奖励可以直接用程序计算:

这就是可验证奖励的强化学习(Reinforcement Learning with Verifiable Rewards,RLVR),这个名称由 Tülu 3 提出。它的好处是奖励客观、没有奖励模型要训练、很难被黑客攻击。局限是只适用于能自动验证对错的任务。

GRPO

GRPO(Group Relative Policy Optimization)由 DeepSeekMath 提出,它去掉了 PPO 中的价值模型。做法是:对每个提示词采样一组(GG 个)回答,用组内的相对奖励作为优势:

A^i=ri−mean(r1,…,rG)std(r1,…,rG)\hat{A}_i = \frac{r_i - \text{mean}(r_1, \dots, r_G)}{\text{std}(r_1, \dots, r_G)}

这里:

同一组中,比平均水平好的回答被鼓励,比平均水平差的被抑制。优化的目标仍然是 PPO 风格的裁剪目标,对每个词元计算新旧策略的概率比,再乘以这个优势,通常还会加上对参考模型的 KL 惩罚。

去掉价值模型省下了大量显存和工程复杂度,也不再需要训练一个很难训练的价值函数。GRPO 因此成为推理模型训练的主流算法之一。

DeepSeek-R1

2025 年 1 月发布的 DeepSeek-R1,让 RLVR 成为焦点:

这个流程已经成为推理模型的标准做法。后续的 Qwen3 等模型也采用了类似的“冷启动 → 推理 RL → 通用 RL”流程。

变体与改进

GRPO 在大规模、长思维链训练中暴露了一些问题,催生了一批改进方法:

还有一类问题来自系统:训练引擎和推理引擎在数值上并不完全一致,会让本来“在线”的采样悄悄变成“离线”。常用的修正是截断重要性采样。

除了数学和代码,RLVR 已经扩展到智能体场景:让模型在多轮、可使用工具的环境中完成任务(比如修复代码仓库的缺陷),用任务是否完成作为奖励。DeepSeek-V4(2026 年 4 月发布)就是一个例子:它面向长时间运行的智能体任务,并且在真实的工具环境中用强化学习训练。

关于强化学习究竟带来了什么,目前仍有争论:有研究发现,RLVR 主要提升了模型一次就答对的概率,但是在大量采样时,基座模型能解决的问题范围并没有明显扩大。这仍是活跃的研究课题。

过程奖励

上面的奖励只看最终答案,称为结果奖励(Outcome Reward)。过程奖励模型(Process Reward Model,PRM)则对推理的每一步打分:

自动构造过程标签的方法也有不少(比如用蒙特卡洛采样估计每一步的价值,或者从结果奖励中隐式学习)。但是 DeepSeek-R1 的报告提到,他们尝试过程奖励的效果有限。目前主流的推理模型仍然以结果奖励为主。

知识蒸馏与模型合并

知识蒸馏

知识蒸馏(Knowledge Distillation)让小模型(学生)学习大模型(教师)的行为:

使用蒸馏时,要注意教师模型的使用许可。

模型合并

模型合并(Model Merging)不需要训练,直接在参数空间里把多个模型合成一个:

合并要求这些模型来自同一个基座,而且结果并不总有保证,需要评测。开源社区常用 mergekit 等工具。

训练系统

显存优化

微调的显存,主要来自权重、梯度、优化器状态和激活值。常用的省显存方法:

强化学习的训练系统

强化学习的训练和 SFT 完全不同:每一轮都要先让模型生成大量回答,再用这些回答更新模型。其中生成往往占用大部分时间,而且回答长度差异很大,少数很长的回答会拖慢整批。

所以强化学习系统通常由两部分组成:

两者之间要同步最新的权重。部署方式有同机共置(同一批 GPU 分时运行生成和训练,省 GPU)和分离部署(生成和训练占用不同的 GPU,可以异步进行,但是生成用的是稍旧的模型,需要处理数据的陈旧问题)。

此外,奖励的计算本身也是系统问题:比如在沙箱里并发运行代码、调用验证器、管理多轮智能体的环境。训练引擎和推理引擎的数值差异,则需要像推理技术综述中提到的那样,通过批大小不变的算子和重要性校正来处理。

常用工具

PyTorch 官方的 torchtune 已经不再积极维护(官方说明其开发在 2025 年逐步结束),不建议新项目选用。这些工具更新很快,选择时应当关注活跃程度和对新算法的支持。

评估

微调后的模型,评估的维度比基座模型丰富得多:

评估本身也有陷阱:判官模型的偏差、基准的污染和饱和,以及训练中奖励黑客——在优化的指标上进步,真实质量却没有提升。因此评估应当使用多个互补的指标,并且尽量加入人工检查。


本章,我们梳理了微调领域的主流技术:

我们从零实现的 SFT 和 DPO,是这条链路的起点:SFT 用示范教会模型格式,DPO 用比较教会模型偏好。而强化学习让模型从“模仿人类的回答”,走向“通过试错自己找到解法”,这是当前大模型能力提升最快的方向之一。

参考资料