2025年年中,聊大语言模型的Post-Training(后训练),其实就是在聊大模型的上限在哪里。预训练负责把模型喂成“什么都懂一点”的底座,后训练才决定它能不能真正变得好用、可靠、让用户愿意留着用。这份2025年6月整理的《LLM Post-Training Handbook》算是把当前大模型后训练的地图画得比较完整的一份材料,我从头到尾刷了一遍,再结合自己这几年在模型微调、对齐和业务落地上的实操经验,想聊聊哪些内容值得深入执行、哪些地方必须结合自己的业务场景做调整。
这篇文章适合两类人看:一类是刚进入大模型算法岗位、想快速建立后训练全局观的新人;另一类是已经在做监督微调和对齐、但总在一些细节上反复翻车的实战工程师。下面不打算复述手册的目录,而是挑出我真正验证过、踩过坑、觉得确实有参考价值的部分,最后给出一条低成本复现的路线。如果时间有限,可以直接跳到第5节看落地路径,但前面几节里埋了不少防坑细节,建议还是过一遍。
1. 为什么后训练是2025年大模型竞争的主战场
后训练在2025年的地位,已经不再是“锦上添花”的收尾工序,而是决定产品边界的主战场。业内有个比较公认的感觉:同一代基座模型,一个经过了细致的SFT加偏好对齐,另一个只是简单刷了几轮指令数据,两者的对话体验能拉开好几个级别。参数规模带来的差距,反而不如后训练带来的行为差距明显。
1.1 预训练管“知识”,后训练管“行为”
先说清楚一个底层概念:预训练阶段,模型在海量语料上做“预测下一个token”,学到的是知识密度和语言流畅度。但这种方式学出来的是一种“平均化”的说话习惯——你问一句,它大概率顺着常见词继续编,不会主动澄清,也不会承认自己不知道。后训练要解决的,就是改变模型的行为分布,让它从“会接话”变成“会办事”。
举个例子。一个只做完预训练的基座,拿到“写一封辞职信”的指令,它可能直接续写出常见的范文式内容,开头永远是“尊敬的领导”,结尾永远是一堆格式化的客套话。经过后训练的模型,会先确认称呼、语气、理由长度,然后结构化地输出一封更像真人写的信。差别不在知识量,而在行为策略。理解了这一点,你就明白为什么后训练不能草率地“抽几个层微调一下了事”,本质上它是在重塑条件分布,把输出往“有用、诚实、可控”的方向压。
后训练的另一个特点是“低成本换取高产品力”。预训练动不动要上万张卡、上万亿token,后训练通常只需要几十万到几百万条精心设计的数据,用几百张卡训练几天到几周就能完成。2025年能看到的一个明显趋势是:各家拉开体验差距的地方,往往不在基座参数大小,而在对齐质量和推理能力强化。这恰恰是后训练的核心战场。
1.2 投入结构变了:合成数据与强化学习开始唱主角
2025年再谈后训练,“人工标注数据”已经不是唯一主线。我最大的感受是,人工精标数据的角色正在从“一手燃料”变成“种子数据”。一套比较常见的打法是这样的:先用几百条到几千条人工精标数据做初版SFT,把模型拉到能用的对话水平,然后用这个模型批量生成回复、过滤、重排,再拿合成数据做下一轮训练。手册里给的数据配比,普遍把合成数据放在比较高的占比,人工数据主要用来校准方向和防止跑偏。
另一个变化是,强化学习不再只是“最终收尾的额外动作”,而是成了核心模块。尤其是针对代码、数学、逻辑类任务做推理强化时,设计可验证的奖励信号,让模型自己探索长思维链,效果通常比单纯堆SFT数据更扎实。这带来了一系列连锁变化:训练序列长度从几千token涨到几万甚至更多,显存压力和训练吞吐完全换了一个量级;奖励信号从“人类打分”变成了“规则脚本加程序化验证”,评估自动化程度也大幅提升。后训练的技术栈,已经从传统微调时代换了一套打法。
2. 后训练的完整技术流程拆解
如果要把后训练的流程压缩成一句话,那就是:先让模型会说人话,再让它会说好话,最后让它会想问题。拆开看,就是三个大环节:SFT、偏好对齐、推理强化。这三个环节不是互斥的,很多成熟项目会串行甚至交错使用。
2.1 第一环:SFT,把语言模型改造成“助手”
做后训练,绝大多数情况下的第一步都是SFT(监督微调)。这一步的目标非常务实:让基座具备“问你答你、按指令行动”的基本形态。SFT数据以“指令-回答”对为主,有些还带多轮上下文。我实际操作时,会反复提醒自己:SFT的关键不是教模型新知识,而是让它学会交互格式和服从指令。所以不需要给模型灌百科,而是要给它看大量“面对请求时应该怎么反应”的样例。
数据质量是SFT的命门。宁可要5000条干净、多样、覆盖常见场景的数据,也不要50万条从网上随手刮来的脏数据。脏数据会直接体现在多轮稳定性上,比如模型答非所问、语气漂移、频繁重复套话。我见过一个团队从网上收集了上百万条指令数据,没做严格去重和清洗,结果模型在回答里经常冒出“请登录后查看”“下载客户端获取全文”这类残留文本,就是因为源数据里大量带网页噪声。
SFT数据组织里有几个细节特别容易被忽视。第一是输出格式的一致性,如果你希望模型用Markdown标题组织回答,训练数据里必须有足够多的同类样例;第二是多轮对话的前序轮次要自然,不能每轮都是“用户一句、助手一句”就结束,否则模型面对真实的多轮会话时容易“失忆”;第三是要准备负样本,明确告诉模型“什么时候应该承认不知道,什么时候应该拒绝不合理请求”。我自己会单独准备一批“拒绝类”和“澄清类”数据,占比大概在总量的5%到10%,数量不大,但对最终的产品观感影响非常明显。
2.2 第二环:偏好对齐,RLHF与DPO的取舍
当模型已经有了基本对话形态,下一步要解决的是“它知道怎么做,但并不是总做得好”。这是典型的偏好对齐问题。经典路线是RLHF:先训练一个奖励模型来模拟人类偏好,再用强化学习算法去优化策略,让模型生成更被认可的回复。这条路线天花板高,效果通常最稳,但工程复杂度也很高——策略模型、参考模型、奖励模型、Critic模型同时在显存里跑,新手直接上PPO很容易在KL系数、奖励缩放、采样策略这些参数里来回折腾。
另一条更轻的路线是DPO,它不需要显式训练奖励模型,直接把偏好数据变成隐式的对比信号,在SFT目标上加一个偏置项。训练只需要策略模型和参考模型,显存和调试成本大幅下降。DPO在数据量适中、偏好信号清晰时效果相当能打,特别适合快速迭代的场景:先跑DPO看效果,再决定要不要上更重的RLHF管线。
下面用一张表说清楚这几条路线的适用场景:
| 方法 | 需要的资源 | 稳定性 | 适用场景 |
|---|---|---|---|
| 标准RLHF(PPO) | 高,需训练奖励模型 | 中,超参敏感 | 偏好数据质量高、对齐要求严的场景 |
| DPO | 低,只需参考模型 | 较高 | 数据量几千条以内、快速迭代 |
| ORPO | 极低,SFT和偏好优化合一阶段 | 中,对学习率敏感 | 预算紧张、想省一次训练流程 |
DPO也有自己的弱点。如果偏好数据本身带噪声,它会直接学进去;它对参考模型的选择很敏感,一般要求参考模型就是SFT后的模型,如果拿基座当参考,很容易训练不稳定。ORPO这类合并式方案我也试过,收敛速度更快,但对数据和超参的要求更苛刻,适合已经有训练经验的团队去用,不建议一上来就盲抄。
2.3 第三环:推理能力强化,长思维链的RL训练
如果说SFT和偏好对齐解决的是“听人话、说人话”,那2025年后训练里真正的重头戏,是针对推理任务做强化的环节。原理不复杂:把一道数学题、一段代码生成或一个逻辑推理任务交给模型,先用规则判断结果对不对——代码能不能跑通、数学答案是否匹配——然后把对错作为奖励信号,用强化学习让模型自己学会“先探索、再收敛”。过程中,模型会自然地生成越来越长的思维链,在给出结论之前先写几步推导、试几种方案。
这一阶段和传统SFT有一个非常大的差异:模型没有“标准答案”可以抄,只有环境反馈。它需要自己去探索什么过程能拿到高分,训练数据的组织方式也从“问答对”变成了“prompt池加验证脚本”,工程上更像在搭一个游戏环境。同时,因为探索性强,策略很容易震荡,必须控制好生成温度、采样多样性和奖励信号的稀疏程度。
我在实践里最常用的做法是:先用一个小模型做大量rollout,筛出高奖励轨迹,把这些轨迹整理成SFT数据做一轮“热身”,再进入纯RL阶段。这个组合在稳定性和最终效果之间取得了不错的平衡。等到模型具备基本的推理能力后,再通过更长的思维链和更强的奖励信号迭代提升。说白了,推理强化不是一次训练就能完成的,它是一个持续探索、反馈、调整的过程。
3. 从纸上到卡上:实操里的数据组织与训练细节
手册里讲原理和方法论的部分再多,最后还是要落到数据怎么放、训练怎么跑、效果怎么验。这一节是我认为最容易跟实际项目产生鸿沟的地方。
3.1 三类训练数据的组织方式
很多人容易忽略一点:后训练的数据组织不是“把一堆问答对塞进JSON就算完事”,它有专门的格式和配比讲究。SFT阶段的数据通常长这样:
{ "messages": [ {"role": "system", "content": "你是一个乐于助人的助手。"}, {"role": "user", "content": "给我写一段关于机器学习的介绍。"}, {"role": "assistant", "content": "机器学习是……"} ] }注意role必须完整,system、user、assistant三条链路要清晰。多轮对话的数据,我会在每一条里保留完整的上文,而不是截断成“只留最后一句”,这样模型才能真正学会在长对话里保持一致性。
偏好对齐阶段的数据格式则是“同一问题加两个答案,标注哪个更好”:
{ "prompt": "帮我推荐一本入门编程的书。", "chosen": "如果你是新手,我推荐先看……", "rejected": "建议你看这本。" }这里有个很隐蔽的坑:chosen和rejected除了内容本身,格式也要尽量一致,比如都用同样的Markdown风格,都包含类似的长度。如果chosen总是很长、rejected总是很短,模型最后学到的可能是“答案要长”,而不是“答案要好”。这个现象我见过不止一次,偏好数据一旦带上了格式偏差,模型后续生成的答案会在格式上过度偏执。
RL阶段的数据组织又不一样。需要的是大量“能被自动判断对错的问题”,再配一个验证器。数学题可以用“答案是否匹配”判断,代码题可以用“测试用例是否通过”判断,逻辑题可能需要人工设计规则。验证器要写得足够严谨,否则reward hacking会找上门——模型一旦发现“只要输出某个关键词就能得高分”,就会钻这个漏洞而不是认真推理。这些数据组织经验,手册里每条都有明确建议,但真正落地时还是要结合自己的业务调整,不能无脑照搬。
3.2 显存、并行与超参:后训练和预训练不一样的工程细节
后训练的工程细节和预训练差别很大。预训练追求吞吐量,数据永远喂不饱;后训练数据量小,更在意训练稳定性和过拟合控制。显存方面,SFT阶段主要吃参数、梯度和优化器状态,如果用AdamW这类优化器,光优化器状态就要占掉参数量的好几倍。所以小团队做后训练,第一步先评估显存:模型权重、梯度、优化器状态、激活值逐个算一遍,再决定是全参微调还是走参数高效微调。
LoRA在这种场景下是首选,它会把可训练参数压到原参数的约1%,显存占用大幅下降。但要用LoRA也有前提:如果目标是“让模型新增一些业务技能”,LoRA完全够用;但如果目标是“让模型整体行为方式发生大变化”,我建议优先考虑全参微调,或者至少把LoRA的秩调高一点,否则会限制模型的表现力。
超参层面,最容易翻车的三个点是学习率、批次大小和序列长度。SFT阶段学习率通常比预训练高,但也不能太高,我一般会先在1e-5到2e-5之间试探,配合warmup和余弦退火。批次大小上,后训练数据量不大,但梯度更新步数也不能太少,建议保证至少几百到一千步的有效更新。序列长度这个问题,在长思维链RL阶段尤其突出:序列长度直接决定显存上限和训练吞吐,我见过很多人在RL阶段因为上下文长度设得太长,单卡根本跑不动,最后被迫切成两段,又破坏了上下文连贯性。比较务实的做法是,先用较小的序列长度上限跑通流程,再逐步拉长,同时观察不同长度下的收益曲线,找个性价比最高的点。
3.3 评估体系:别让训练把模型“学坏”
后训练做得久了,很容易陷入“只看训练loss下降就觉得很稳”的错觉。我吃过这个亏。训练loss下降并不代表模型变好,它可能只是把训练数据里的噪声背下来了,甚至出现能力退化。比如代码能力变强了,但写抒情文字的能力明显变差;逻辑推理上去了,但闲聊变得又长又僵。这些都是真实项目里见过的现象。
所以后训练的评估体系,要覆盖三块:基础能力、新增能力、回归风险。操作上,我会准备三套评测集。第一套是通用能力集,覆盖知识问答、文本理解、摘要、翻译这些基础项;第二套是业务能力集,就是你想让模型变强的那几个方向,比如数学、代码、深度推理;第三套是“防退化”集,专门挑一些训练数据完全没有覆盖的日常任务,比如闲聊、创意写作、角色扮演。每次训练结束,三套一起跑,任何一方指标出现明显下滑,都要回到数据和配比里找原因。
对比方式上,同一组prompt,新版模型和上一版模型逐个生成,人工盲评或者规则打分。如果手头有更强的模型,还可以用“弱模型生成,强模型打分”的方式做自动化评估,速度更快,也方便常态化回归。这一步看起来繁琐,但它是整个后训练闭环里最容易被砍掉、砍掉后又最容易被反噬的环节。
4. 避坑实录:后训练最常见的翻车现场
这份手册里其实没有专门列“踩坑大全”,但我在各个项目里见过的坑,远比理论多得多。这一节挑几个最典型的,按阶段拆开讲。
4.1 SFT阶段的典型翻车点
SFT阶段最常见的翻车不是“模型不听话”,而是“数据杀”。刚才提到的脏数据、重复数据、格式混乱都算第一类。我自己的建议是:无论数据多赶,训练前把去重、格式校验、敏感信息过滤这三件事做扎实。去重不能只看字面一致,还要做近似去重,至少保证长句级别的相似度低于阈值,否则同一句话在数据里出现几十遍,模型会对它过拟合,回答时频繁复读。
第二个翻车点是角色一致性没做好。很多SFT数据只有一两轮,模型学会了回答单个问题,但用户一上来就是多轮对话,它就开始忘了自己刚才说过什么,忘了角色设定。解决思路是显著提高多轮数据占比,而且前序轮次要写成真实用户会问的样子,别太规整。还有一个比较容易忽略的点:测试集和训练集不要太像。如果测试集里的prompt跟训练集高度重叠,模型只是背题而不是真学会了,后面的评估会给出严重虚高的结论。
4.2 偏好对齐阶段的不稳定性
偏好对齐阶段的翻车现场更多。先说RLHF:PPO对超参很敏感,KL散度系数、奖励模型能力、采样截断策略都会导致训练不稳定。最常见的现象是“reward上涨但实际效果变差”,这是因为策略模型钻了奖励模型的空子——学会了生成“奖励模型喜欢看”的内容,但并不是人类真正想要的。我遇到过一次很典型的reward hacking:奖励模型被加入了“回答要包含详细步骤”的偏好,结果策略模型开始疯狂堆无意义步骤,每个问题都套模板,看起来完整,实际完全偏离问题。这种时候不要先怀疑强化学习算法,先去检查奖励信号是不是足够鲁棒。
DPO的问题也不小。最经典的开局是训练到某一步loss突然爆炸。绝大多数情况下是因为学习率调太大,或者chosen和rejected的得分分布重叠得太厉害。另一个隐蔽的坑是长度偏差,前面已经说过,chosen和rejected长度差异过大会让模型学到风格偏好。我自己的经验是,构建偏好数据时尽量让chosen和rejected的token数在同一量级,或者在数据里做长度分组,保证训练时公平对比。另一点是别一次性把几千条偏好数据全喂进去,先跑两三个子集看训练曲线是否稳定,再决定全量上。
4.3 强化学习阶段的收益崩溃
最后说RL阶段最容易崩的三个地方。第一是序列长度暴涨。强化学习鼓励模型输出更长更详细的答案,如果奖励设计里没有对长度做任何约束,模型会在几百轮训练后把回答长度拉到原来的五到十倍,显存和推理延迟双双爆掉。解决办法是给长度做软约束,比如规定输出token区间,超出阈值就给惩罚。
第二是多任务互相干扰。如果同时用代码、数学、常识问答多个任务池做RL,很容易出现某个任务收益上涨、另一个任务收益下跌的情况。建议不同任务分开训练,或者至少在验证时分开统计,不要合在一个总指标里看,否则内部波动会被隐藏。第三是温度与采样策略不匹配。RL训练时采样temperature设得过高,策略会过度探索、结果不稳定;设得过低,探索受限,容易陷入局部最优。比较稳的做法是先跑一轮小实验,记录不同temperature下的rollout收益方差,选一个让方差处于中间档位的温度再上全量训练。
下面把常见问题整理成一个速查表,方便做训练时对照:
| 阶段 | 症状 | 常见原因 | 解决思路 |
|---|---|---|---|
| SFT | 回答出现网页残留文本 | 源数据混入网页噪声 | 清洗、去重、过滤 |
| SFT | 多轮对话失忆 | 多轮数据占比太低 | 提高多轮比例,补真实场景 |
| 偏好对齐 | reward上升但效果变差 | 奖励模型被钻空子 | 检查奖励信号,做对抗测试 |
| DPO | loss突然爆炸 | 学习率过高或偏好数据重叠 | 调低学习率,先跑子集 |
| RL | 输出长度失控 | 缺少长度约束 | 加长度软约束或惩罚 |
| RL | 多任务收益互相干扰 | 任务池混合训练 | 分开训练或分别统计 |
5. 如何用好2025.06这份手册:落地路径与资源观
手册是死的,项目是活的。最后一节聊一聊怎么把这份材料真正变成自己的生产力。
5.1 手册里最有含金量的部分
这份2025.06整理的手册,抛开具体方法论,给我最大启发的是它对“后训练完整闭环”的强调。它不只是一堆指令微调脚本,而是把“数据如何收集、如何组织、如何清洗、如何配比,训练如何设置,模型如何评估,如何迭代”串成了一条流水线。很多人做后训练,习惯性把注意力放在模型结构和训Train技巧上,反而忽略了链条上游的数据设计。手册里反复强调“训练不是瓶颈,数据才是”,这句话在我做过的多个项目里都得到验证。算法再花哨,最后决定上限的还是数据的信息量和一致性。
尤其到了RL阶段,prompt池的多样性与验证器的准确性,几乎决定最终效果的90%。手册还把不同方法的适用条件讲得很清楚:SFT适合快速调整对话形态,DPO适合中小规模的偏好优化,标准RLHF适合需要极致对齐质量的团队,推理强化适合有明显可验证信号的任务。它不是给一个标准答案,而是给一份决策树。这份决策树的价值,超过任何一段单点代码。
5.2 一条最小可复现的后训练路线
如果你是一个中小团队或者初学者,我建议按下面这条路线入门,资源和时间成本相对可控。
第一步:拿一个7B到13B量级的开源基座,准备几千到几万条高质量的指令数据,先用LoRA做一轮SFT,把模型调到一个“能对话、能干活”的基线。第二步:挑一个你最熟悉的业务场景,比如客服问答、文案生成、代码修复,做一份偏好数据集,规模控制在几千条以内,用DPO做首轮偏好对齐。这个阶段重点不是追求最优效果,而是把流程完整跑通。第三步:如果业务里有“答案可验证”的任务,比如代码题可以跑测试用例、数学题有标准答案,就构造一个prompt池和验证器,用RL训练让模型长出推理能力。跑RL时,先在小基座上做一轮rollout,观察奖励分布,再决定是否扩展规模。
这条路线最大的好处是每一阶段都能独立验证效果,失败成本低。先用SFT让模型“像样”,再用DPO让模型“讨喜”,最后用RL让模型“会想”。三步走完之后,模型面对复杂任务的表现,和直接用基座硬生成出来的效果完全不在一个层次。如果只是做Demo或POC,停留在第二步也完全够用。
5.3 关于“后训练Infra”的一句实话
最后聊一句基础设施。很多刚入行的人会被后训练的工程复杂度吓到:多模型、多阶段、多数据流,听起来很重。但我的真实感受是,2025年的开源工具链已经把这些流程封装得相当友好了,你不需要从零搭一套分布式训练系统。对绝大多数团队,优先选择成熟的开源训练框架即可,把精力留给数据和策略设计。底层的显存优化、并行策略这些事,框架已经帮你处理了很大一部分。
真正需要自己花心思的,其实是两件事:一套可靠的数据管理能力,以及一套能随训练迭代不断更新的评估代码。有了这两样,工具怎么换都行。不要一开始就追“自动化编排平台”“一站式后训练系统”,那些东西等你有多个模型迭代线、多个人协作的时候再考虑也不迟。最开始的阶段,用一套脚本加一份清晰的数据文档,足够撑起一个初期项目。我见过太多团队花了两三个月搭平台,结果连一份像样的SFT数据都没攒齐。先出效果,再谈平台,这是后训练落地最朴素也最有效的原则。
我个人的体会是,2025年的后训练,真正拉开差距的已经不是谁掌握了某个秘密技巧,而是谁能稳定地把数据、训练、评估的闭环跑得又快又不出错。手册里那些章节最后指向的,本质上是一套工程纪律。希望这篇梳理能帮你把后训练的地图看得更清楚,少踩一些我已经替你踩过的坑。