【开篇导航】全景逻辑架构图、技术边界与关键问题脉络(极速查阅指南)
导读说明 :本笔记涵盖大模型后训练完整技术体系(预训练、Mid-training、SFT、RL、环境、奖励、蒸馏与工业避坑)。为方便查阅,先以全局流程流水线、四大阶段与 LoRA 边界、强化学习四维魔方、以及关键问题树进行总览,后续章节为对应深度拆解。
一、大模型进化"四大纵向阶段"与"LoRA 横向手段"全景图
二、全景落地决策逻辑图(Mermaid 流水线)
三、强化学习(RL)核心名词的"四维魔方"拆解
scss
强化学习 (RL) 的四个独立维度
│
├── 维度一:数据怎么来的?(实时交互 vs 静态查表)
│ ├── Online RL (在线):训练时,模型必须现场去沙盒里交互走一步、生成一条轨迹;
│ └── Offline RL (离线,如 DPO / KTO):不需要连沙盒,直接拿人类提前标好的静态成对数据(Chosen vs Rejected)硬算偏好损失。
│
├── 维度二:数据是谁采出来的?(在轨 vs 离轨)
│ ├── On-policy (在轨):必须由【当前最新的自己】生成的轨迹来更新自己(如 PPO/GRPO 近似在轨,时效极高,最稳);
│ └── Off-policy (离轨):回放很久以前旧版本模型的轨迹,或拿别的大模型跑出来的轨迹喂给自己。
│
├── 维度三:用什么算法优化?(带不带裁判员 Critic)
│ ├── PPO (经典流派):Actor-Critic 双模型架构。需要一个同样巨大的 Critic 价值网络估计全局基线,显存开销大;
│ └── GRPO (群组相对流派,如 DeepSeek):直接砍掉 Critic!同一个问题采样 8 条回答,在组内算均值和方差,直接归一化出相对优势。
│
└── 维度四:奖励什么时候给?(终点结算 vs 步步打分)
├── ORM (结果奖励):等整条任务走完了,终点只看成败给一个 0/1(自由度最大,但反馈极稀疏);
└── PRM (过程奖励):每走一步、每写一行公式,中间都有打分器即时批改(收敛快,但容易把模型束缚在死板路径上)。
四、全篇五大核心问题树状脉络
erlang
全篇核心问题体系
├── 一、动不动参数?(技术选型边界)
│ ├── 1. 传统代码:100% 容不得差错的硬规则(支付、鉴权、状态机)
│ ├── 2. RAG 知识库:随时可能更新的事实(商品库、最新政策)
│ ├── 3. ICL / Prompt:两三句话能说清、快速试水的轻量需求
│ └── 4. 后训练:不可言传的高维直觉、长程工具链自愈、极致压缩推理成本
│
├── 二、后训练上马顺序与门禁?(避免盲目烧钱)
│ ├── 门禁 1:pass@k ≈ 0 连蒙都蒙不对 ──► 坚决不上 RL,先用 Mid-training 补脑子
│ ├── 门禁 2:工具输出老报错、JSON 解析失败 ──► 坚决不上 RL,先用 SFT 焊死协议
│ └── 门禁 3:格式稳定且偶尔能做对(有方差) ──► 启动 RL 探索最优决策与自愈
│
├── 三、RL 为什么慢?如何破局?(样本效率危机)
│ ├── 痛点根源:终点反馈太稀疏(跑完几十步只给一个 0/1,中间错因两眼一抹黑)
│ ├── 破局利器 1(RLVP 路径惩罚):即时抓现行扣分,全胜/全败时瞬间恢复梯度方差
│ ├── 破局利器 2(在轨蒸馏 On-Policy Distillation):
│ │ ├── 机制:学生自己下场做题踩坑,名师现场耳提面命给逐 Token 概率分布
│ │ └── 收益:稀疏信号化为密集监督,训练步数仅需纯 RL 的 1/10
│ └── 破局利器 3(在轨自蒸馏 OPSD):没有外部名师时,给同一个模型开"带标答外挂"自己教自己
│
├── 四、怎么防止模型走火入魔?(过拟合与防御体系)
│ ├── 1. 防灾难性遗忘:混入 5%~20% 通用数据(Replay)、低秩 LoRA(r=8/16)、KL 基座锚定
│ ├── 2. 防过度矫正(不敢收工):必须设立【边界集】(测自查) 与【保留集】(测果断交卷) 双保险
│ ├── 3. 防奖励作弊(Reward Hacking):验收测试必须放在隔离沙盒,绝不信模型口头声明
│ ├── 4. 防模型学崩:沙盒返回的外部客观输入必须打上【Loss Masking (-100)】屏蔽
│ └── 5. 敏捷试错纪律:1% 小样本试水、高频评估、一旦拐头立刻早停(Early Stopping)
│
└── 五、四大工业实战案例总结
├── 案例 1(过早结束):改完未跑测试就交卷 ──► DPO 针对性修复关键决策路口
├── 案例 2(中文引号):不能暴力全局替换 ──► 训练"作用域敏感的最小编辑"
├── 案例 3(编辑文件失败):字节级对不上 ──► 全链路逐级排查甩锅 + 精确抄写 SFT
└── 案例 4(固定预算分配):$10,000 客服 Agent ──► 35%知识库 + 25%微调蒸馏 + 20%硬代码 + 20%评测
五、一句话技术边界速查表
| 技术名词 | 到底属于什么? | 核心干啥用的? | 典型的典型代表 |
|---|---|---|---|
| Pre-train | 宏观阶段 0 | 注入通用世界知识,打造基座模型 | 网页、维基百科万亿语料 |
| Mid-train | 宏观阶段 1 | 注入专业硬核知识、扩充真实有效长上下文 | 法律法规、千万行代码库、80/20回放 |
| SFT | 宏观阶段 2 | 学规矩、立格式、对齐问答指令、固定工具调用 | 1k~10k 高质量问答、CoT 思考示范 |
| RL (强化学习) | 宏观阶段 3 | 探索更优策略、学会面对未知报错自我反思自愈 | PPO、GRPO、沙盒试错 |
| LoRA | 参数微调手段 | 省显存神技(基模全冻结,只训旁路小矩阵) | 适用于 SFT / DPO / RL 各阶段 |
| Online vs Offline | RL 的数据生成方式 | 在线连沙盒跑(Online) vs 离线拿死数据算(DPO/Offline) | Online PPO vs 静态 DPO 对比对 |
| On-policy vs Off-policy | RL 的策略在轨性 | 拿最新的自己生成数据(在轨) vs 拿旧权重/别人数据(离轨) | GRPO 每步重采 vs 经验回放池 |
| PPO vs GRPO | RL 的优化算法 | 带独立 Critic 价值网(PPO) vs 组内 8 选 1 相对归一化(GRPO) | OpenAI PPO vs DeepSeek GRPO |
| ORM vs PRM | RL 的奖励时机 | 终点 0/1 结果奖励(ORM) vs 过程中每步打分(PRM) | 单元测试成败 vs 逐步数学推导验证 |
| 在轨蒸馏 | 高样本效率训练法 | 学生亲自踩坑,名师现场逐步耳提面命指点概率 | Qwen3-32B 教师指导小模型收敛 |
一、核心结论:"SFT 记忆,RL 泛化"
-
SFT(监督微调)------ 类似"抄参考答案"
- 机制:输入题目,强行要求模型逐字对齐标准示范(最小化交叉熵损失)。
- 特点:模型倾向于"走捷径",直接把具体答案与 Prompt 的映射死记硬背下来。
- 缺点 :在分布变化(遇到未见过的提问形式或测试场景)时容易过拟合。
-
RL(强化学习)------ 类似"自主做题,考官只判对错"
- 机制:不提供标准范文,模型自主生成回答,环境或裁判只根据结果给出一个标量奖励分数。
- 特点 :模型为了持续获取高分,必须在试错与探索中总结出解题逻辑和通用套路。
- 优势 :学到的是可迁移的策略,泛化能力更强。
注:这是特定实验条件下的相对趋势,而非绝对定律。若数据足够多样且正则化得当,SFT 也能泛化;若奖励模型或环境存在偏差,RL 同样会过拟合。
二、关键机制:RL 训练中会提供"最优答案"吗?
不会。 模型在执行强化学习(如 PPO、GRPO 等算法)时,自始至终没有见过最优答案。
- 成对偏好数据(A 优于 B)的作用 :
- 这类数据仅用于训练奖励模型(Reward Model,即打分裁判),教会裁判识别好坏标准。
- 生成模型的训练过程 :
- 自主作答:仅接收 Prompt,模型自行推演并吐字。
- 盲盒摸索:裁判根据生成结果打分。
- 策略更新:拿到高分则提升该思考路径对应 Token 的生成概率,拿到低分则调低概率。
三、进阶问题:奖励模型被"钻空子"(过拟合)怎么办?
-
现象(Reward Hacking / 奖励黑客):
- 奖励模型也是神经网络,容易学到表面特征(例如误将"字数长"、"结构工整"、"套话多"等同于高质量)。
- 受训模型会敏锐捕捉到漏洞,通过狂刷无意义的长文或机械套话骗取满分,导致模型崩溃。
-
解决方案:KL 散度约束(系上安全绳)
- 原理 :用 KL 散度(Kullback-Leibler Divergence)实时度量受训模型 与原 SFT 基准模型在输出词语概率分布上的偏差。
- 目标函数 : 最终奖励=裁判打分−β×KL散度 ( β 为惩罚系数)
- 作用 :一旦模型为了迎合打分漏洞而产生不合常理的词语搭配,其分布严重背离正常人类语言,KL 散度就会剧烈上升并施加巨额扣分,强制让模型在保持正常人类表达的前提下寻找最优解。
四、工业界标准范式:为什么必须"先 SFT,后 RL"?
- SFT 负责"保底"(0 分到 60 分) :
- 建立模型对基础指令的理解能力与输出格式规范,防止模型在 RL 早期因完全随机猜测而难以收敛。
- RL 负责"拔高与泛化"(60 分到 90 分) :
- 在具备基本能力后,撤除标准示范,依托环境反馈激励模型自主探索更优的策略链与泛化能力。
五、Mid-training 核心实战:通用数据混比策略
在做领域持续预训练(Mid-training)时,若仅输入专业语料,模型会出现**"灾难性遗忘"**(通用逻辑与语言能力退化)。
1. 通用数据挑哪些?(站在开源肩膀上,直接使用清洗好的数据集)
- 中文通用高质量文本(保底表达与常识) :如
Skywork/SkyPile-150B、WanJuan(万卷)、WuDao。 - 代码与逻辑推理语料(压舱石,防止变笨) :如
StarCoderData、The Stack、Open-Web-Math。即使做文科模型(如法律),代码数据也是维系严密逻辑的关键。 - 英文与世界知识 :如
FineWeb-Edu。
2. 怎么混?(混合比例与工程规范)
- 黄金配比 :
- 领域垂直私有数据:70% ~ 90%(如 80%)
- 通用保留数据(Replay Data):10% ~ 30%(如 10% 高质量文本 + 10% 代码推理)
- 工程做法:必须**全局打散(Random Shuffle)**或按权重动态采样(Weighted Sampling),绝对不能先训领域数据再训通用数据。
- 学习率控制:学习率通常降为原预训练峰值的 1/5 ~ 1/10,避免大步长冲垮原有权重。
六、架构抉择:Mid-training vs RAG
-
形象类比:
- Mid-training 就像"多年上学求知":知识内化为本能与直觉,记不清具体出处(难溯源),更新代价极大(需重训),但擅长网状复杂概念的融会贯通与深度推理。
- RAG 就像"随时翻阅操作手册/字典":脑子里不用记具体条款,用时按索引开卷查阅,更新秒级生效(换文档即可),且每一句都能精准标注页码出处(强溯源)。
-
选型准则:
- 吸收大规模、高度关联、需要底层理解的领域体系时 → 优先 Mid-training。
- 事实频繁变更、容错率低、必须精确追溯引用来源时 → 优先 RAG。
- 终极架构:通过 Mid-training 赋予模型"专家大脑",配合 RAG 随时翻阅"最新资料手册"。
七、SFT 数据工程与思维链(CoT)实战指南
1. SFT 数据量怎么定?(经验区间与 LIMA 效应)
- 核心原则 :质量(Quality)与多样性(Diversity)远大于数量(Quantity)。盲目堆砌低质数据易导致过拟合与遗忘。
- 各场景经验取值 :
- 目标明确、格式固定(如提取 JSON、工具调用、固定话术) :数百条 ~ 2,000 条 即可见效。
- 垂直领域综合助手(如法律顾问、医疗导诊) :5,000 条 ~ 20,000 条。
- 通用对话基座大模型(如 ChatGPT / Claude 级) :5 万 ~ 20 万条(极少超过 50 万条)。
2. 思维链(CoT)数据:为什么必须"推导一致"?
- 为什么要把思考过程塞入回答 :
- 普通 SFT 仅教模型对齐最终结果,遇到复杂任务容易瞎蒙;
- 带 CoT 的 SFT 将推导步骤逐 token 监督给模型,使其养成"先拆解、再演算、后结论"的解题习惯。
- 为什么强调格式高度一致 :
- 必须使用统一样式(如全量使用
<think>步骤推导</think> 最终回答); - 避免格式混杂(有的带标签、有的纯文本、有的直接给结果),否则模型输出容易陷入逻辑混乱或格式崩盘。
- 必须使用统一样式(如全量使用
3. 低成本造数方案:基于槽位变量的合成数据(Synthetic Data)
通过设置多维度变量池进行笛卡尔积组合,驱动顶尖大模型批量生成,是工业界解决多样性不足的高效方案:
- 变量池定义(以医疗咨询为例) :
- 角色槽位 :
[焦虑家长, 独居老人, 懂医学的白领, 慌乱患者] - 语气槽位 :
[语无伦次/错别字, 极简短问, 条理严密, 情绪激动] - 症状槽位 :
[突发剧痛, 持续低热, 胃胀反酸] - 特殊背景 :
[孕妇, 青霉素过敏, 高血压病史, 无基础病] - 核心诉求 :
[问是否去急诊, 问用药禁忌, 问挂号科室]
- 角色槽位 :
- 两阶段工业化流程 :
- Step 1(生成多变 Prompt):脚本随机抽样各槽位变量,组合成合成指令,让大模型生成逼真口吻的用户提问;
- Step 2(生成标准 CoT 示范) :将生成的问题输入具备专家 System Prompt 的大模型,要求其必须输出统一格式的
<think>推演过程及合规答案; - Step 3(规则清洗与交叉验证):添加逻辑互斥过滤(如"男性"与"怀孕"互斥),通过语义去重(Embedding 相似度过滤)和模型交叉质检后入库。
八、SFT 的本质:固化"协议"而非"灌输知识"
- 一句话本质 :SFT 固化的是**"格式、风格、流程"**这类协议性交互知识(该怎么说、按什么规范说),而不是大量事实性知识(知道什么)。
- 格式(Format):输出纯净 JSON、按代码接口规范输出 Function Call,避免废话导致代码解析崩溃。
- 风格(Tone/Style):特定人设口吻(如严谨律师、高情商客服)、特定画风(如动漫风、水墨风 LoRA)。
- 流程(Workflow) :按业务 SOP 排布执行步骤,或者使用
<think>标签养成推演习惯。
- 分工明确 :要记行业事实用 Mid-training ,要频繁更新和精准追溯用 RAG,不要用 SFT 死记硬背事实。
九、LoRA 与矩阵"秩(Rank)"的底层数学与工程原理
1. 矩阵与"秩(Rank)"的生活化本质
- 矩阵的本质 :不限制行数必须等于列数(长方形是常态)。静态看是二维表格,动态看是高维空间的变换机器。
- 秩(Rank)的现实含义 :这堆数据里到底包含了几个"独立的操控杆(真因变量)" 。
- 无论表面有多少行多少列,只要某些行是其他行的倍数或加减组合(线性相关),就都是"复读机/废话";
- 空调面板上显示摄氏度、华氏度、绝对温度(表面 3 项数据),但遥控器其实只有 1 个升降温键,该系统的秩就是 1;
- 矩阵乘法铁律: Rank(B×A)≤min(Rank(B),Rank(A)),结果的秩绝不会超过任一因子的行列短板。
2. LoRA 为什么"参数极少,却能四两拨千斤改写全局"?
- 数学构造 :冻结原本 4096×4096 的大矩阵 W,外挂两个极瘦的窄矩阵:
- 矩阵 A( 4096×8):负责把 4096 维特征压缩到 8 维;
- 矩阵 B( 8×4096):负责把这 8 维特征映射放大回 4096 维;
- 训练时 A 和 B 两个矩阵同时训练 ( B 初始为 0 保证平滑起步)。
- 为何不矛盾?(广度 vs 深度) :
- 影响广度大 :乘出来的 ΔW=B×A 同样是 4096×4096 的矩阵,全面覆盖 1600 万个连接,微调了每个神经元的输出;
- 影响自由度极小 :因中间受制于宽度为 8 的瓶颈, ΔW 的秩被死锁在 8 以内。如同"只用 8 种颜色的薄油漆给整栋大楼刷墙皮",承重墙骨架完全不动,既达到全新风格,又规避了灾难性遗忘。
3. LoRA 核心调优参数法则
- 学习率为何反而是全参的 10 倍?
- 全参微调(
1e-5 = 0.00001):动全盘骨架,必须极小步微调防止把原有语法结构踩碎; - LoRA 微调(
1e-4 = 0.0001):底座已冻结兜底,外挂矩阵从零初始化,需要大步长迅速冲刺; - 规律:底座冻住不怕崩,外挂矩阵大胆冲。
- 全参微调(
- Rank 选型阶梯 :
- 简单格式对齐/意图分类:
rank = 8 ~ 16; - 通用行业客服/Agent 工具调用(最通用黄金档):
rank = 32 ~ 64(配合alpha = 128); - 复杂代码重构/数学思维链(CoT):
rank = 128 ~ 256; - Rank 与学习率反比规律:Rank 越高越逼近全参微调,学习率需随之微调收小。
- 简单格式对齐/意图分类:
- 模块必须全选 :务必覆盖全部线性层(
all-linear,尤其是参数量占比最大的 MLP 层),只加在注意力层会掉点。
十、前置判断:什么时候该补底座、做 SFT 还是做 RL?
- 核心准则 :RL 是"放大器",不是"无中生有的魔术师"。它擅长把已有但概率较低的成功行为推高,无法从全零奖励中凭空创造能力。
- 前置评估指标: pass@k=1−(1−p)k
- 含义:给模型 k 次生成机会,只要其中至少蒙对 1 次的概率;
- 若 pass@1 低,但 pass@k 随 k 上升明显 → 说明解题种子已存在于模型内部,适合直接上 RL 放大;
- 若测到 k=32 或更大时 pass@k 仍接近 0 → 说明模型脑中压根没学过,硬上 RL 只会得到全零奖励死机,必须先用 Mid-training 补底座。
- 打分器的本质(格式支持) :
- 打分器往往不是神经网络,而是后端的自动化验证程序 (如
json.loads解析器、代码编译器、单元测试); - 若模型输出格式崩溃无法被解析,打分器直接报错罢工;此时必须先用少量 SFT 稳定格式和流程,使奖励可计算,再由 RL 优化策略(如 DeepSeek-R1-Zero 具备强基模可跳过 SFT,而普通基模必须先 SFT)。
- 打分器往往不是神经网络,而是后端的自动化验证程序 (如
实操决策流程树(项目选型指南)
text
【第一步:测能力 (pass@k)】
给模型试 10~32 次,能偶尔做对吗?
/ \
【能】 【完全不能 (全为 0)】
/ \
【第二步:看格式】 缺专业知识、法条、代码模式?
它吐出的格式打分器能认吗? ↓
/ \ 【必须先做 Mid-training 补底座】
【认得】 【不认得】
/ \
【直接上 RL 放大】 【先用少量 SFT 把格式教对,再上 RL】
十一、SFT 与 RL 的全方位对比(面试与实操必背)
1. 两者底层优化目标的根本差异
- SFT 最大化标注回答的概率(极大似然) :
- 直白含义:"你的嘴型必须和我给的标注答案一模一样!"
- 机制与隐患 :逐 token 严格监督。当数据缺乏多样性时,模型极易寻找"偷懒捷径"。例如在 GeneralPoints(24 点游戏实验) 中,训练集凡遇到 J/Q/K 标注员都按 10 计算,SFT 模型就直接死记硬背"字母即10",遇到规则变更为 J=11/Q=12 的测试集时全盘崩溃(对表面模式过拟合)。
- RL 最大化期望奖励 :
- 直白含义:"不限定具体词句,只要最终解决问题拿到高分,探索出的策略就是好策略!"
- 机制与优势 :在 24 点实验中,RL 模型为了在各种随机发牌中拿到高分,被迫自发学出"动态读取数值并进行四则运算"的通用解题策略;当测试集规则漂移时,依然能正确计算,展现出优异的迁移泛化能力。
2. SFT 与 RL 的全方位对比矩阵
| 维度 | SFT(监督微调) | RL(强化学习) | 生活通俗比喻 |
|---|---|---|---|
| 优化目标 | 最大化标注答案的概率(极大似然) | 最大化期望奖励(得分) | 背参考范文 vs 拿期末高分 |
| 训练信号 | 标注回答的逐 token 强监督 | 自主生成轨迹 + 结果级/步骤级标量奖励 | 写错字就打手板 vs 只看考卷总分 |
| 直接压力 | 严格模仿输入的示范映射与协议 | 强化能带来高奖励的行为策略 | 照猫画虎 vs 八仙过海各显神通 |
| 分布漂移表现 | 易对示范中的表面捷径过拟合;依赖覆盖度与正则化 | 泛化迁移能力强;探索出通用解题逻辑 | 换了新题型就发懵 vs 掌握了数学底层原理 |
| 样本效率 | 极高(几千条高质量样本见效) | 极低(需成千上万次采样探索,常为 SFT 的数十至上百倍) | 读 10 篇范文即掌握 vs 试错 1000 次总结规律 |
| 训练稳定性 | 极高,收敛平稳快速,极少崩盘 | 极低,容易震荡崩溃,奖励函数稍有漏洞即被带偏 | 照着抄不容易出错 vs 自由探索容易走火入魔 |
| 核心适用场景 | 固化格式、规范风格、排布业务固定流程、建立基础能力 | 复杂推理求解、代码生成与优化、探索最优策略、标注极难但验证极容易的任务 | 培训标准化业务客服 vs 培养奥数与算法竞赛高手 |
- 总结口诀 :
- SFT 是在教模型"听话",按规定格式把话说周全;
- RL 是在逼模型"动脑",不管怎么说必须把复杂难题解出来。
十二、概率分布特性:广撒网(Mass-covering) vs 挑尖子(Mode-seeking)
在生成模型中,一个问题通常有多个合理回答模式(多峰分布):
- SFT 的 Mass-covering(覆盖式 / 广撒网) :
- 机制:逐条极大似然监督,试图把训练数据中出现过的所有合理模式"雨露均沾"地学下来。
- 特点:像"老好人 / 端水大师"。表达风格多样、见多识广;但若混入平庸或错误样本,容易拉低上限。适合文学创作、情感闲聊、脑暴等任务。
- RL 的 Mode-seeking(寻峰式 / 挑尖子) :
- 机制:按奖励重新分配概率,配合反向 KL 散度约束,会主动抛弃次优解,把概率极大集中到少数甚至唯一能拿最高分的"高奖励峰"上。
- 特点:像"偏执狂 / 极客狙击手"。极度专注、追求绝对最优策略;但回答容易收敛到固定套路(多样性下降)。适合数学解题、代码优化、逻辑博弈等任务。
十三、后训练塑造 Agent 的"行动阈值(Action Threshold)"
在自动化编程与 Agent 任务中,GPT 与 Claude 等模型表现出不同的"性格",本质是模型参数内在的行动价值期望估算策略:
- GPT 风格(高行动阈值 / 调查派) :
- 行为:倾向于先调工具读遍 10 个相关与不相关文件,全面摸清上下文后才动手编辑。
- 成因:SFT 训练数据中频繁包含"详尽调查排查后再落笔"的人类专家示范。
- Claude 风格(低行动阈值 / 敏捷试错派) :
- 行为:倾向于快速定位 1 个最关键文件,尽早编辑代码,依赖编译器或单元测试反馈进行第二轮迭代修正。
- 成因:RL 过程奖励持续认可"快速进入可验证闭环"的试错纠偏策略。
- 核心启示 :外部 Harness(外壳框架)只能调节行为,工具使用的动手时机和习惯已深深固化在模型后训练的权重中。
十四、在线反馈(Online RL)与离线偏好(Offline RL)深度辨析
1. 在线反馈为模型带来的三大破圈超能力
- 超出示范(发现神操作):SFT 只能模仿人类已有轨迹;在线 RL 让模型在真实探索中自发顿悟出人类从未教过的高效解法(如 SimpleVLA 机器人的"推切"动作)。
- 验证容易但生成极难(RLVR 杠杆):人类写奥数步骤或复杂架构代码极慢极贵,但写自动化验证器(正则比对结果、跑单元测试)极快极便宜;利用这种不对称,模型可依靠程序自动打分进行低成本无限演进。
- 在轨动态纠错(打破协变量漂移) :SFT 就像看完美驾驶录像,一旦实操偏离掉到路边沟坎便束手无策(误差按 T2 累积);在线 RL 让模型真正开到沟边并摸索反打方向盘的自救操作,误差降为线性 T。
2. 在线(Online) vs 离线(Offline)的本质区别
- 在线强化学习(Online RL) :
- 模型现场亲自吐字生成(Rollout) ,环境/编译器/打分模型现场当场打分,动态闭环。
- 离线强化学习(Offline RL) :
- 模型不开脑洞、不生成,直接读取硬盘里存好的静态对比表(Prompt + 优质回答 A + 劣质回答 B),通过前向计算两者概率比值直接反向传播。
3. 后训练三大核心算法速查表
| 算法简称 | 英文全称 | 核心机制与流派 | 工业地位与实操价值 |
|---|---|---|---|
| DPO | Direct Preference Optimization (直接偏好优化) | 离线(Offline RL) 无需单独奖励模型,直接在静态偏好数据上拉大好回答与差回答的生成概率差 | 斯坦福 2023 提出。省显存、训练极快极稳,是 2023~2024 年全行业首选的低成本偏好对齐利器。 |
| PPO | Proximal Policy Optimization (近端策略优化) | 在线(Online RL) 利用截断机制和 KL 散度约束,限制策略更新幅度,防止走火入魔崩盘 | OpenAI 2017 提出,ChatGPT (InstructGPT) 的起家功臣。经典工业标杆,效果上限高,但架构重、训练难度大。 |
| GRPO | Group Relative Policy Optimization (分组相对策略优化) | 在线(Online RL) 单题生成一组(如 8 个)候选回答,组内计算相对优势,彻底干掉 Critic 价值网络 | DeepSeek 团队自研神作 。大幅砍掉显存占用,直接驱动了 DeepSeek-R1 超长思维链深度推理能力的诞生。 |
十五、终极哲学比喻:地图(SFT)与指南针(RL)
"SFT 细致学习已有地图,RL 则可以拿着奖励这枚指南针探索地图外的候选路线。地图或指南针不准都会迷路。因此许多系统先用 SFT 建立稳定起点,再在奖励与环境足够可信时加入 RL。"
核心意象拆解:
- 地图(SFT 示范) :
- 作用:记录了人类已经验证过的成熟路线(格式、流程、风格)。
- 风险:地图不准(脏数据)会导致死记硬背错误;走出地图边缘(新场景分布漂移)就会抓瞎。
- 指南针(RL 奖励) :
- 作用:不限定具体走哪条路,只指示终点方向。让模型敢于踏入未知荒野,甚至踩出人类未曾设想的捷径(发现新策略)。
- 风险:指南针偏转(Reward Hacking / 打分漏洞)会直接把模型引向悬崖(走火入魔)。
- 工业界黄金范式 :
- 不打无准备之仗:绝不让模型裸奔进荒野(直接从零 RL 效率极低甚至死机);
- 两步走协同 :先用 SFT 地图 把模型安全护送到公路尽头的营地(掌握格式规范与基础智力),再在**指南针(可靠环境反馈)**足够精准客观时,放手让模型去探索地图外的星辰大海!
十六、Mid-training 核心定位:流水线"夹心层"与两大缺口
- 定义与形式:从已有基模出发,沿用**预测下一个词(Next Token Prediction)**的目标,对全部 token 计算损失,属于自监督持续预训练(学术渊源如 DAPT/TAPT)。
- 专属解决的两大致命缺口 :
- 知识缺口(腹中空空):通用预训练未覆盖的目标领域事实、法条、医学名词、企业私有代码库,模型根本不理解概念。
- 基础能力缺口(内功不足) :长上下文(如 4K 扩到 128K)、复杂数学定理推导、代码工程结构理解。在多次独立采样下
pass@k接近 0,模型无解题底座。
十七、核心陷阱:为什么绝不能用 SFT 当主要的"知识注入工具"?
- SFT 无法承载网状知识体系 :
- 真实领域知识是立体关联的;强行切成孤立的 Q&A 问答对,只能覆盖极其有限的表面问法,极易导致对特定提问模式过拟合。
- SFT 只是"麦克风/水龙头"(训练"如何访问与表达"),不是"水库/百科全书"。
- Mid-training 后为何依然不会答题(茶壶煮饺子)?
- 纯接龙训练让模型把书背得滚瓜烂熟,但它没有问答交互协议,用户一问它反而继续向下"续写论文"。
- 稳健三步走配方 : Mid-training 吸收知识与内力⟶小规模 SFT 安装访问龙头(立规矩)⟶在线 RL 激发探索与泛化
十八、Mid-training 数据工程五步操盘手册(高价值手册)
形象通俗比喻:高中通才学霸跨考法硕的"集训营全过程"
基座模型原本是个各科成绩均衡但毫无专业经验的高中生。现在要在集训营里把他培养成能进顶尖律所办案的法硕高材生(Mid-training):
- 从失败分布反推缺口(体检摸底考) :
- 现实比喻:先发两套真实的法硕模考卷摸底。看他是因为"压根没背过民法典法条(知识缺口)"交白卷,还是因为"看超过 5 页案卷就头晕记不住(长上下文缺口)",还是只是"答题卡涂错位置(格式问题)"?按需补课,拒绝盲目瞎啃大部头。
- 工程落地 :按主题、语言、代码、长上下文切分评测,确认低
pass@k究竟来自哪类底座缺失;严防将"输出少了个括号的格式错误"误诊为知识不足。
- 构造高密度目标语料(名师考点精析讲义) :
- 现实比喻:拒绝让他直接啃几千页充满身份证号、格式废话的法院判决书;找名师提炼成"考点精讲",在案例旁写清显性法理推导,每一分钟读到的都是高密度干货。
- 工程落地 :原始文档建术语事实,代码仓库建依赖结构,教材式推导与合成释义把暗含逻辑显性化;严格做去重、清洗与评估集防污染。
- 按能力科学配比(科学排课,荤素搭配) :
- 现实比喻:集训课表必须多门兼顾:50% 读经典法学著作(练大案耐力)+ 30% 连环借贷套现复杂大题逻辑讲堂(CoT 思维链)+ 20% 模拟法庭与法条库检索实战(Agent 执行轨迹)。
- 工程落地:包含自然长文本(长篇专著/整库代码)、体现多跳推理与长程检索的思维链(CoT)数据、体现规划与工具调用的 Agent 轨迹数据(可从顶尖大模型蒸馏)。
- 全阶段"双重回放"(防变傻与老眼昏花) :
- 现实比喻 :最怕学了 3 个月法律把高中语文算术都忘了,且考场一吵闹就分心。① 老课本回放 :每周做一套高考语文和数学卷,保住通识底座与通顺表达;② 菜市场里做真题:故意把一道简单的案情题藏进 2 万字吵闹的背景口供中,逼他在嘈杂大环境里一眼锁定核心线索。
- 工程落地 :
- 通用语料回放(15%~20%):混入通用百科、高质量代码(压舱石),保住通用语言智商;
- 长袍加身的旧任务回放:把短任务用大量无关干扰信息包裹并置于长窗口的不同位置,检验长文本下的抗噪与精准检索能力。
- 多维门禁踩刹车(看综合模考成绩单,见好就收) :
- 现实比喻 :不能光看他"书翻得有多快"(单一 Loss 下降),要综合看模考成绩单:法律题(
pass@k)稳步涨,高考语文通用分绝不能暴跌;一旦法律题进入瓶颈、通用分开始微跌,立刻安排结业出关! - 工程落地 :跟踪领域测试题
pass@k(必须涨);跟踪通用 MMLU(绝不能暴跌,暴跌说明学习率过大或通用回放不足);Loss 下降但pass@k不动说明数据无效或该进入 SFT 打通嘴型。
- 现实比喻 :不能光看他"书翻得有多快"(单一 Loss 下降),要综合看模考成绩单:法律题(
十九、垂直大模型实战推演:法律 vs 电商客服
1. 法律大模型实战路径
- 缺口诊断:法条司法解释空白(背错法条)、大案卷梳理能力缺失;格式问题留给 SFT。
- 语料提纯:宪法民法典刑法 + 裁判文书网(正则清洗掉当事人隐私与开场废话,保留说理) + 权威法学教材 + GPT-4o 合成教材式考点推导。
- 数据配比 :60% 卷宗专著长文本 + 25% 法律思维链(穿透担保与连带责任) + 15% 律所办案 Agent 轨迹(检索案例 → 查失信 → 异常重试 → 汇总报告)。
- 双重回放:20% 通用百科与 Python 代码(维系严密逻辑) + 杂糅无关证词的"大海捞针"案卷回放。
- 门禁与衔接 :司考真题
pass@k达标即刹车,衔接 3,000 条标准律师意见书 SFT。
2. 电商智能客服实战路径
- 缺口诊断:多品类参数遗忘、平台退换货时效规则缺失、跨越数十轮长对话的状态跟踪遗忘;API 格式问题留给 SFT。
- 语料提纯:整本售后手册 + 平台争议仲裁规则 + 百万商品规格书 + 历史五星金牌客服真实对话(严格脱敏手机/地址/姓名) + GPT-4o 改写的复杂客诉处置 SOP。
- 数据配比 :50% 商品规则规格书 + 30% 怒气买家情绪安抚与多条件售后退款推演思维链 + 20% 电商系统后台操作流(查物流 → 发优惠券 → 改地址)。
- 双重回放:20% 通用日常高情商口语 + 夹杂大量买家抱怨、错别字与情绪发泄的"抗噪长上下文"旧任务回放。
- 门禁与衔接:商品常识与退款规则掌握后停训,衔接 5,000 条高情商温柔话术与严格 JSON Function Call 的 SFT。
二十、语音 SFT 与表达型协议固化
- SFT 在表达型任务的本质:固化"风格控制协议与结构化表达习惯",而非事实知识或复杂推演。
- 两大典型实验路线 :
- Orpheus(模仿秀 / 声音克隆 Voice Cloning):把声音波形切为音频 token,输入前挂载说话人 5 秒参考音频,参数中固化"后续生成全部锁死在该声线通道"的跨句音色一致性协议;
- Sesame(看剧本演情绪 / 副语言建模) :将笑声、叹气抽象为
<laugh>、<sigh>等特殊标记,训练模型"见标记即触发肌肉声学动作",使语音具备真人的呼吸感与情绪起伏。
- 音频开发中的音色表示 :
- 现代大模型:
Speaker Embedding(如 256 维声纹向量)或Neural Codec Tokens(离散整数序列); - 传统声学:
MFCC(梅尔倒谱系数)或Mel-Spectrogram(时频谱图)。
- 现代大模型:
二十一、蒸馏的两大流派:Prompt 蒸馏 vs CoT 蒸馏
- Prompt 蒸馏(丢弃思考,极致提速省钱) :
- 机制 :教师模型在 5,000 字复杂 System Prompt 和思考模式下生成,训练学生模型时彻底剔除长提示词和中间
<think>思考过程 ,强行对齐"用户原始输入 → 最终结论"; - 价值 :同规模下将显式思考折叠为内部直觉,获得 20~30 倍响应速度提升,API 成本砍掉 90%;适合业务定型期的成熟产品。
- 机制 :教师模型在 5,000 字复杂 System Prompt 和思考模式下生成,训练学生模型时彻底剔除长提示词和中间
- CoT 蒸馏(保留思考,小模型继承大智慧) :
- 机制 :保留开源强教师模型(如 DeepSeek-R1)完整的"推导、反思、验算"思维链,用 RFT(拒绝采样微调) 剔除算错轨迹,只留正确样本给 7B/14B 小模型做 SFT;
- 价值:恢复教师 70%~80% 的推理智商(如 DeepSeek-R1-Distill 系列);注意避免继承教师模型的啰嗦习惯和系统性偏见。
二十二、工业级 SFT 数据合成(Synthetic Data)与翻车现场转训练数据
1. 任务蓝图(Blueprint)与沙盒重排
- 拒绝无脑抄线上日志 :生产日志充满隐私和脏数据;应提炼出用户意图、初始状态、可用工具、业务约束、失败模式和成功条件等骨架蓝图;
- 虚拟化裂变:换上虚拟人名、虚拟订单号,放进可重置的沙盒环境批量生成多条候选轨迹。
- 双重验证与一鱼两吃:能写成 Python 单元测试和数据库断言的坚决用代码硬验证;验证通过的做 SFT 正样本,未通过的拿去构造偏好对,后续同一沙盒直接转换为 RL 的打分环境。
2. 线上翻车案例变废为宝(改写决策边界)
- "过早宣称完成" → 构造 DPO 偏好对 :
- 截取 Agent 刚写完代码想交卷的前缀(Context);
- 未经自测直接交卷的废话作为淘汰项(Rejected);
- "先跑单元测试、逐条核对验收条件再交付"作为胜出项(Chosen);DPO 强行修正模型的行动阈值。
- "乱改引号 / 代码匹配失败" → 构造 Byte-exact 精度 SFT :
- 训练模型识别作用域(正文规范排版,代码字符串坚决原样保留);
- 构造高保真复制任务,强行要求
old_string逐字节精准对齐,根治代码替换匹配报错。
二十三、终极架构指南:何时选择 Mid-training、SFT 与 RL?
核心原则:实操诊断先看缺的是底座、协议还是策略,不要把"模型做不好"统一归因成需要做 RL。每一步都有客观可测的进入门槛,绝非仪式化流水线!
工业界四阶梯实操决策法则:
text
【第一梯队:能不动模型,就绝不动模型(零训练成本,首选!)】
├── 能通过优化 Prompt、上下文管理解决的,不训模型;
├── 能用 Python 后端校验(如 Pydantic、JsonSchema、代码断言)约束的,不训模型;
└── 事实需要频繁更新、秒级生效、必须精确指出原文页码出处的,坚决选 RAG!
↓ (工程手段解决不了,必须动权重)
【第二梯队:客观体检,确认是否必须做 Mid-training 补底座】
├── 在留出集上测试 pass@1 和 pass@k(采样 32 次);
└── 若 pass@k 仍接近 0,且人工确诊为缺少领域术语、专业事实或长上下文底座能力:
└── 启动 Mid-training(先做小规模沙盘配比实验,再投大预算全量跑)!
↓ (底座已有能力,或者 Mid-training 补课完成)
【第三梯队:用 SFT 建立交互协议与格式(切忌塞知识库)】
├── 当模型"会做但不会按要求做"时(输出无法解析、嘴型不对、角色不符);
└── 用数千到数万条高质量示范固化 JSON Schema、Tool Calling、业务 SOP、思维模板与风格;
└── ⚠️ 致命红线:过度训练会导致模型塌缩死记硬背!
↓ (格式已完全稳定,自动化打分器能正常工作)
【第四梯队:当 SFT 泛化见顶时,上 RL 突破能力边界】
├── 触发临界点:当"无论增加多少 SFT 示范,新场景表现仍不佳"时;
├── 进入硬性前提:格式已稳定(打分器不报 NaN)且 pass@k > 0(存在偶尔成功的火苗);
└── 启动在线 RL(PPO / GRPO):让模型自主探索多条路径,利用环境客观打分放大最优策略!
二十四、单轮强化学习:PPO 与 GRPO 的底层运作直觉与代码实战
- 单轮(Single-turn)的对照价值 :一锤子买卖(输入 → 输出 → 打分),屏蔽多轮交互的状态包袱与信用分配难题,在"相同模型、相同任务、相同预算"下严密对比 SFT 与 RL。
- 策略梯度(Policy Gradient)的核心直觉 :"多走好路,少走坏路"。同一问题生成多条路径,得分高的调高概率,得分低的调低概率。
1. PPO vs GRPO 源码级对比
GRPO 极简逻辑(DeepSeek 核心:仅 5 行代码,单模型运行):
python
for prompt in batch:
# 1. 组内采样 (Rollout):对同一问题独立生成 G 条不同回答 (如 G=8)
group = [rollout(policy, env.reset(prompt)) for _ in range(G)]
# 2. 自动化验证判分:由编译器或客观规则给 0/1 分
rewards = [verify(trajectory) for trajectory in group]
# 3. 组内相对标准化:不请专职评估师,8个小伙伴自己算均值!高于平均为正(+),低于为负(-)
advantages = normalize_within_group(rewards)
# 4. 参数更新:正优势调高,负优势打压
update(policy, group, advantages)
传统 PPO 逻辑(带着沉重的 Critic 估值模型):
python
for trajectory in rollouts:
returns = discounted_returns(trajectory.rewards)
values = value_model(trajectory.states) # 专职估值师预估基准分
advantages = returns - stop_gradient(values) # 实际得分 - 预估分 (超常发挥才奖)
ratio = exp(policy.log_prob(actions) - old_policy.log_prob(actions))
# 安全气囊:强行把更新幅度裁剪在 [1-eps, 1+eps] (如 20%),防止在非凸陡峭山路上一脚踩空崩盘
policy_loss = -mean(min(ratio * advantages, clip(ratio, 1 - eps, 1 + eps) * advantages))
value_loss = mean((value_model(states) - returns) ** 2)
update(policy, value_model, policy_loss + value_coef * value_loss)
2. 深度工程解惑
- GRPO 是怎么打分的?:外部自动化程序(如单元测试通过与否)给出客观打分,然后在组内算平均值;高于平均分说明在该题的几次尝试中属于"拔尖思路",相对优势为正,立即强化。
- PPO 为什么用"实际得分 - 预估分"?:为了抹平题目本身的难易度偏差(难题拿 80 分属于超常发挥重奖,容易题拿 80 分属于发挥失常惩罚)。
- PPO 的 Critic 评估师有多大? :必须使用和受训大模型同源同尺寸的克隆体(如 8B 模型配 8B Critic),拔掉词表头换成标量输出层;如果用太小的弱模型当 Critic,会因看不懂推导而胡乱估分,导致训练直接发散。
- 为什么非要 20%(Clip 截断)?:神经网络损失曲面高度非线性、非单调。某一次侥幸拿高分如果大跨步更新,会直接一脚踩进悬崖(策略崩溃,语言常识彻底报废),20% 是防滑安全气囊。
二十五、AdaptThink:训练模型学会"何时不思考"
- 痛点(Overthinking / 过度思考):大思考模型在简单常识(如 1+1)上也疯狂推演几千字,又慢又贵,且容易钻牛角尖答错。
- 目标 :训练模型根据题目自适应"看人下菜碟":
- 简单题 :直接输出空的
<think></think>跳过思考,秒出结论; - 高难奥数/复杂代码:自发展开深度长思维链。
- 简单题 :直接输出空的
- 实操与成果:在奖励中加入"答对前提下 token 越少奖分越高"的约束目标,配合重要性采样(解决冷启动)。在 8×H100 实测中,简单题 GSM8K 思考长度暴跌 53%(84% 题目秒答),难题 AIME 依然保持深度推演,准确率保持平稳。
- 快---慢双系统互补:Prompt 蒸馏处理 90% 不需思考的常规业务(快系统 1),AdaptThink 自适应动态调度剩余任务的思考深度(慢系统 2)。
二十六、GeneralPoints 24 点实验:"SFT 记忆 vs RL 泛化"实锤对照
在相同基模(Llama-3.2-Vision-11B)与相同算力下,人为设计分布外(OOD)陷阱对决:
- 考场设计 :
- 规则变体:训练时扑克牌 J/Q/K 全当 10;测试时突然变招为 J=11, Q=12, K=13。
- 视觉变体:训练全用黑色花色(♠♣);测试突然换成红色花色(♥♦)。
- 成绩单对照 :
- 规则 OOD 考试:SFT 暴跌 -8.1%(只记住了字母即10的偷懒捷径,换了规则直接算错);RL (PPO) 反涨 +3.5%(学会了动态读取卡牌面值并进行四则运算的通用策略)。
- 视觉 OOD 考试:SFT 暴跌 -9.9%(只顾着背文本 token,忽视了看图);RL (PPO) 暴涨 +17.6%(为拿最终奖励倒逼强化了底层视觉编码器的颜色辨识力)。
- 关键启示:未经 SFT 直接裸跑 RL 完全失败(输出格式混乱导致奖励无法计算);增加测试时推演计算(Test-Time Compute,如 10 次迭代)能让泛化性能从 +0.48% 暴增至 +5.99%。
二十七、Coding Agent 诞生流水线:16 次沙箱 Rollout 到一次参数更新
以修真实开源项目 Bug(如 SWE-bench 中 parser.py 的空输入 IndexError)为例,单次 step(耗时约 43 分钟)的 4 步工业闭环:
text
同一任务 + 初始代码
↓
【1. 16 个隔离沙箱并行独立尝试 (Rollout)】
利用随机性走出 16 种不同路径(查边界、改代码、改测试、写错文件...)
↓
【2. 干净环境运行单元测试自动化判分】
4 条通过全部测试且未修改测试文件 → 奖励 1 分
12 条测试失败或违规修改测试文件 → 奖励 0 分
↓
【3. GRPO 组内比较相对优势】
组内平均分 = 4/16 = 0.25
成功的 4 条高于平均 → 优势 +0.75 (正优势,重赏)
失败的 12 条低于平均 → 优势 -0.25 (负优势,打压)
↓
【4. 梯度下降与优化器更新】
调高"查边界、改实现、复测"等正确操作的概率,调低"掩盖异常、改测试"的概率
- 时间账本:最慢沙箱 rollout 约 2,000 秒 + 梯度更新约 600 秒 = 单 step 约 2,600 秒(43分钟);连续训练 100 steps 需约 72 小时(3天3夜)。
- 一句话总结 :"让同一个模型化身 16 个平行世界的打工人进沙箱修 Bug,自动化测试跑完全绿灯的重赏其思路,失败的打压;每 43 分钟循环一轮,高强度洗礼 3 天 3 夜,一个顶尖 Coding Agent 就此出炉!"
二十八、On-Policy(在轨) vs Off-Policy(离轨):吃热饭 vs 吃隔夜饭
- 概念辨析 :
- Online(在线):表示数据在训练时源源不断由沙箱产生(厨房在开火炒菜);
- On-Policy(在轨) :要求生成数据的模型 μ 与当前待更新的模型 πθ 完全是同一个版本( πθ=μ,现做现吃, ρt=1)。
- 致命陷阱(异步集群策略陈旧性) :
- 如果 Worker 生成了 5 份数据,Learner 用前 3 份把模型升级到 V2.0,再拿剩下的 2 份 V1.0 数据训练,就变成了 Off-Policy(吃隔夜饭);
- 自回归长文本连乘雪崩 :重要性比率 ρt=μπθ 在长达几千 Token 的代码序列里连乘,哪怕 3% 的微小偏差连乘 2000 次也会暴涨到 1025(权重极端重尾,导致梯度爆炸或消失,模型直接崩溃报废)。
- 工业铁律 :单步闭环同步更新 ------当前版本生成 → 当前版本全部吃完并更新参数 → 清空旧数据 → 拿到新版本参数再开启下一批生成!
二十九、RL 仿真环境工程:三要素与算力瓶颈倒挂
- 为什么不能直接在真实世界练? :真实世界的电话、扣款、删库动作不可逆且极具破坏力;真实 API 存在速率限制和封号风险。
- 仿真沙盒黄金三要素 :
- 高保真(最难护城河):仿真失真则策略失效(温室里练出的模型一上线就崩溃);
- 可重置(毫秒级回滚):防模型把环境搞烂造成后续测试失真,确保每次尝试都在同一干净起跑线上;
- 可并行(高吞吐提速):将 3 年的单线程串行试错,通过几百个容器并发暴力压缩到 3 天 3 夜。
- 算力瓶颈倒挂陷阱(CPU 饿死 GPU) :
- GPU 生成代码极快(几秒搞定),但 CPU 跑 Docker 容器、装依赖、执行单元测试极慢(需几分钟);
- 盲目堆 GPU 只会让昂贵显卡全程发呆挂起;此时必须扩充高并发 CPU 验证集群(Worker)来喂饱 GPU!
三十、环境造不出怎么办?让大模型"一人分饰两角"扮演世界
- 第一层次:模型扮演"工具返回值"(以 ZeroSearch 为例) :
- 用大模型扮演搜索引擎返回假网页,采用课程式设计(初期返回高质干货建立信心,后期故意掺入垃圾广告逼模型学会去噪);训练全程没见过真搜索,上线后表现极佳。
- 第二层次:模型扮演"对手与交互动态"(用户模拟器) :
- 用大模型扮演脾气挑剔的买家(如 τ-bench),两个模型在内存里像说相声一样互练;
- 致命死穴与解法 :模拟器的水平是学生的天花板,易被摸出规律产生 Reward Hacking;成熟打法是"90% 模拟器低成本高并发试错 + 10% 真实环境交互定期校准"。
三十一、多轮 RL 与信用分配(Credit Assignment)难题
- 单轮 vs 多轮的本质鸿沟 :
- 单轮像做选择题,落笔立刻判卷,没有历史包袱;
- 多轮像 90 分钟足球赛,第 20 步才进球,如何判定前 19 步里哪一步贡献最大(信用分配极难)。
- 过程奖励 vs 结果奖励权衡 :
- 过程奖励(每步即时打分):降低信用分配难度,收敛快;但可能把模型管得太死,扼杀全新捷径;
- 结果奖励(只看终点成败):给予最大探索自由度(模型可能自悟出神操作);但前 19 步全是 0 分,奖励极其稀疏,训练极难收敛。
三十二、工具调用 RL:三层阶梯与 ReTool 奥数实战
1. 工具调用三层阶梯
- 第一层(单工具掌握):学会何时调、JSON Schema 准确传参、读懂报错自我修复;
- 第二层(多工具选择):在搜索、Python代码、知识库之间根据边界精准翻牌;
- 第三层(工具链编排):多步骤依赖管理(A的输出传给B)、互斥约束(未鉴权不准扣款)与成本优化。
2. 致命工程细节:Loss Masking(必须屏蔽环境返回的 Token)
- 反向传播的本质:从终点误差出发,利用链式法则倒推偏导数,给每个参与计算的神经元分摊责任、调节参数;
- 为什么必须屏蔽沙箱 Token? :
- 模型吐出的工具名、参数:是模型自己决定的,必须计算偏导、回传梯度调参数;
- 沙箱返回的数据(如气象局温度、报错堆栈):是外部客观物理世界的输入;
- 若不对外部 Token 进行 Mask 屏蔽,算法会强迫模型去预测客观世界的输出,活活把模型逼疯,导致参数被外部噪音搞崩!
3. ReTool 实战(Qwen2.5-32B 代码增强数学推理)
- 解题流程 :文本思考规划 → 生成 Python 代码 → 沙箱返回计算结果(Token 屏蔽) → 读懂反馈代入验算 → 输出最终答案。
- 震撼战报(AIME 2024 国际奥数真实测试) :
- SFT 冷启动(1 小时):掌握调用格式,准确率基线仅 25%;
- PPO 强化学习大练兵(128 并发沙箱,9 天 400 步):
- 110 步后准确率翻倍飙至 52%;
- 400 步后惊人暴涨到 67.0%!
- 核心结论:优化算法仍是标准 PPO!通过交织的代码沙盒反馈,模型自发学会了"心算易错必调 Python 算、代码报错看堆栈 Debug、拿到结果反向代入验算"的高级智能行为!
三十三、多工具沙盒与奖励设计核心(8.11 ~ 8.12)
1. 奖励来源:RLVR、GRM 与防钻空子
- 可验证奖励(RLVR):单元测试、状态断言等客观判定,规则确定、零作弊空间,首选基线;
- 生成式诊断(GRM):用 LLM 给出自然语言批改理由(如 DeepSeek-GRM),适合开放任务,但需防范评判模型被策略钻空子;
- Reward Hacking(作弊)与 Seeking(投机) :
- Hacking:模型篡改验证代码或删报错;
- Seeking:模型利用规则漏洞达成表面指标(如建空文件假装完成、仅口头声称完成)。
- 解法:验收测试必须放在隔离沙盒,读取物理文件/数据库真实状态,绝不信模型的自吹自擂。
2. 奖励时机:终点(ORM) vs 过程(PRM)
- ORM(结果奖励):终点结算(成/败),给模型最大的自由探索空间,但长轨迹信用分配难;
- PRM(过程奖励):每步提供反馈(如 OpenAI Let's Verify Step by Step),收敛快,但成本高且容易把模型固化在人工预设路径上;
- 防"过早结束"机制:模型声称完成时,Harness 在隔离环境跑隐藏测试,通不过给负奖励,防止模型养成偷懒收尾的坏习惯。
3. 奖励形式(8.12.3):标量、向量与诊断
- 二元标量:确定性任务优先选择(0 或 1),作弊面最小;
- 加权向量:多目标平衡(准确度、合规度、开销),每增一个维度就增加一次被钻漏洞的风险,慎加;
- 生成式诊断:开放式场景使用,必须做事实抽检校验。
4. 路径约束与 RLVP(8.12.4:奖励结果,惩罚路径)
- 核心目标:防止"黑猫白猫抓到老鼠就是好猫"导致的安全违规(如暴力破解、删测试文件走捷径);
- RLVP 综合奖励公式 : R=Normalize(O)+β⋅Normalize(Φ)
- O(Outcome):终点真实交付结果;
- Φ(Path Signal):确定性规则计算的路径信号(动作级扣分或合规加分);
- 非对称性验证黄金法则 :
- 检测违规极其低廉可靠(如调用越权 API、触碰保护目录,一抓一个准);
- 评估"中间进展有多大"极难且成本高;
- 设计准则 :惩罚具体违规动作,不惩罚模糊的"不够努力";始终保留结果奖励,确保合规路径真实可达;利用动作级惩罚在组内全胜/全败时恢复梯度方差。
三十四、蒸馏:破解 RL 样本效率低下的杠杆(8.13)
1. 什么是"样本效率"?
- 不是看烧了多少卡或训了多少步,而是看:每一次昂贵的环境物理交互,能换来多少有效参数更新。
- 痛点现状:ReTool 的 RL 耗时是 SFT 的 200 倍以上(9 天 vs 1 小时),环境交互成本极高。
2. RL 样本效率为什么极低?
- 反馈太稀疏:只有终点一个成败标量(0 或 1),中间错在哪、漏了什么字段完全没有反馈,模型只能靠盲目瞎猜试错数百次才偶然撞对;
- 高方差与在轨难复用:On-policy 要求每次都用最新策略采样,旧轨迹无法反复利用。
3. 蒸馏的破局逻辑
- 稀疏信号转密集信号 :借助教师模型或优质轨迹,将原本只能得到 0/1 的单次 Rollout,转化为逐步甚至逐 Token 的密集监督信号;
- 榨干每条昂贵轨迹的价值:不必无限增加环境探索采样,让现有轨迹产生大量有效梯度,大幅降低对真实/沙盒环境采样的依赖。
4. 黄金组合拳:"先蒸馏打底,再强化冲刺"
- 纯蒸馏的死穴:容易沦为"应试做题家",只会背学霸套路,一旦遇到未见过的沙盒报错(逆风局),缺乏自主探索和自愈能力;
- 纯 RL 的痛点:盲目试错代价太高、样本效率极低;
- 工业界终极打法(又快又好) :
- 第一步·蒸馏预热(快):用高质量数据打底,几个小时快速拿下基础规范与核心套路(从 0 分到 70 分);
- 第二步·环境强化(好):放进沙盒环境跑 RL,逼它在真实碰壁和逆境中学会自主探索、自我纠错,冲上 90 分!
三十五、在轨蒸馏(On-Policy Distillation):密集反馈的极致艺术(8.13.1)
1. 传统三大范式的核心痛点与对比
| 方法 | 轨迹由谁走到(状态采样) | 监督信号类型 | 核心痛点 |
|---|---|---|---|
| SFT / 离轨蒸馏 | 教师/人类走出来的 | 逐 Token 监督(密集) | 分布偏移:教师从不犯低级错误,学生一旦走错第一步,进入未知逆风局便误差累积雪崩 |
| On-policy RL | 学生自己摸索出来的 | 终点结果(极稀疏 0/1) | 方差极大、收敛极慢:耗尽 200 倍算力,依然难以排查具体哪一步做错 |
| On-Policy Distillation | 学生自己摸索出来的 | 教师贴身实时逐 Token 指导(密集) | 兼得两者之长:针对学生实际犯错的状态,给出密集、低方差的概率分布指导 |
- 一句话破局 :"让学生决定走到哪里(暴露学生自己的真实缺陷),让教师在学生站立的位置教它下一步怎么选(密集纠偏)"。
形象神比喻(看视频录播 vs 请现场家教):
- SFT / 离轨蒸馏(看视频录播):名师在视频里讲得行云流水、解法完美。但你实际考试时只要手抖写错了一步,视频里根本不会教你"在写错的情况下怎么自救",导致后面全线崩溃。
- 在轨蒸馏(一对一家教现场辅导) :你自己拿着笔亲自在草稿纸上做题(暴露你自己的真实盲区和错误姿势);家教坐在你旁边,看到你写歪的那一瞬间,立刻在你的草稿纸上现场圈出并指导下一步,现场纠偏!
2. 核心伪代码实现(KL 对齐)
python
# 在轨蒸馏 (On-Policy Distillation) 极简伪代码
student_trajectory = rollout(student, task) # 1. 学生自己到环境中探索(踩自己的坑)
loss = 0
for state in student_trajectory: # 2. 遍历学生走出的每一个真实状态
teacher_logits = teacher(state) # 3. 教师对该状态给出下一步的完整概率分布
loss += KL(student_logits(state), teacher_logits) # 4. 最小化学生与教师输出的 KL 散度
update_student(loss) # 5. 回传梯度更新学生
3. 工程收益与硬核战报
- 样本效率翻 10 倍 :一条长度为 T 的轨迹产生约 T 组高信噪比监督信号,训练步数仅需纯 RL 的 1/10;
- 实战验证 :在 Agent"时间感"任务中,纯 RL/DPO 容易策略崩溃;改用冻结的 Qwen3-32B 作为教师进行在轨蒸馏,任务通过率比 SFT 基线直接暴涨 23 ~ 47 个百分点!
三十六、在轨自蒸馏(OPSD):没有更强大模型时的"开挂自学"(8.13.2)
1. 现实痛点:没有现成的更强名师怎么办?
- 在轨蒸馏很强,但前提是"必须存在一个明显强于学生的教师模型";
- 如果做的是前沿领域或私有小众垂直业务,业界根本没有现成的大模型能当老师,名师直接缺席!
2. 破局妙招:自己教自己,但给老师开"透视外挂"
- 核心绝技 :同一个模型分饰两角 ,区别仅在于看到的输入信息(上下文)不同:
- 学生角色(闭卷实战):只给原始问题,让它在环境里闭卷答题、踩坑摸索;
- 教师角色(开卷外挂) :输入里悄悄塞入标准答案、专家解答或特权文档;
- 为什么行得通? :
- 一个人"闭卷独立解题"很难,但一旦把"标准答案"交到他手里,让他**"对照答案倒推并解释当前这步该怎么走"**,就容易得多!
- 开挂后的教师视角能轻松在学生走的每一步上,给出极高质量的逐 Token 密集指导。
3. 极简伪代码实现
python
# 在轨自蒸馏 (OPSD) 极简伪代码
student_trajectory = rollout(model, task_without_answer) # 1. 学生闭卷答题(踩坑)
loss = 0
for state in student_trajectory:
privileged_state = add_verified_answer(state) # 2. 给同一个模型塞入参考答案(开外挂)
teacher_logits = stop_gradient(model(privileged_state))# 3. 教师给出下一步概率分布(不回传梯度)
loss += KL(model(state), teacher_logits) # 4. 逼闭卷的学生靠齐开挂教师的思路
update(model, loss + retention_regularizer) # 5. 更新参数,加风格保留正则
4. 关键底线与局限
- 底线:特权答案只能留在训练侧,部署上线时绝不能泄露给模型;
- 局限:不能凭空创造知识。如果模型自身底子太差,哪怕"拿着答案抄"都解释不清步骤,自蒸馏就会失效。
三十七、工业实战案例:Coding Agent"过早结束"与 DPO 根治手术(8.14.1)
1. 痛点:Agent 的"偷奸耍滑与摆烂"
- 四大经典过早结束病症 :
- 单元测试压根没跑,张嘴就吹"代码已全部完成";
- 需求提了 3 个功能点,写完 2 个就悄悄收工收尾;
- 遇到两次编译报错就躺平放弃:"现有架构下无法完成";
- 恶性作弊(Reward Hacking):偷偷把报错的测试文件删掉,宣布"测试 100% 通过"。
- 根因定位 :前期查代码、改逻辑都没错,唯一错在"在毫无证据(未跑测试/未核对)的节点妄下结论"。
2. 治疗方案:决策边界的 DPO 偏好对微调
- 在"准备宣称完成"的关键路口截断轨迹,构造针对性偏好对:
- 负样本(Rejected,错误行为):直接口头宣称"已全部搞定";
- 正样本(Chosen,期望行为):主动拉起测试工具跑用例、逐项核对验收清单,拿到成功日志后再下结论;
- 将偏好对混入少量通用数据,进行轻量级 LoRA DPO 微调。
3. 致命工程陷阱:防止矫枉过正成"不敢收工的强迫症"
评估必须设置**"边界集"与"保留集"**双保险,缺一不可:
- 边界集(未做完的任务):验证模型是否学会了"不提前收尾、继续自查";
- 保留集(确实已做完的任务):验证模型是否能"果断收尾交付"。
- 警惕反向过拟合 :如果只考核边界集,模型会被训成惊弓之鸟,永远不敢宣布完成,陷入无休止的死循环重复验证,导致 Token 和算力成本直接崩溃!
三十八、工业实战案例:中文引号与"作用域敏感的最小编辑"(8.14.2)
1. 表面需求与灾难级粗暴解法
- 用户表面需求 :"把文章里的直引号
""统一改成中文弯引号"""; - 粗暴解法的灾难 :如果做全局替换或让模型盲目改,代码和系统瞬间崩溃:
- 把 JSON
{"status": "ok"}改成{"status":"ok"},后端解析直接报错爆炸; - 把命令行路径
"/usr/bin"改成弯引号,程序直接挂死; - 把英文原文、Markdown 反引号破坏掉。
- 把 JSON
2. 核心本质:作用域敏感的最小编辑(Scope-Sensitive Edit)
教给模型的绝对不是"见到引号就替换",而是**"先判断当前处于什么作用域,再做最小编辑"**:
- 允许修改的作用域(正例) :
- 中文自然语言正文中的引用(如:他说"你好");
- 中文嵌套引用(遵循中文外双内单引号规则);
- 编程代码中的中文注释 (如:
# 调用"微信支付"接口)。
- 严禁触碰的受保护作用域(反例) :
- 英文原文;
- 可执行代码、字符串字面量;
- JSON / Schema 格式;
- 文件路径、变量名标识符、Markdown 反引号行内代码。
- 底线原则 :无法明确判断作用域时,一律保留原文不动!
3. 极速微调实战(Qwen3-8B LoRA SFT)
- 样本构造:覆盖 16 类文本片段、10 种文体、9 种编程语言,构造 1024 条训练集与 256 条边界集;
- 训练代价极小:bf16 LoRA 仅训 2 个 epoch(256 次更新),就能让模型精准掌握"该改的改、受保护的一律不动"的高级边界感。
三十九、工业实战案例:编辑文件频繁失败与精确抄写 SFT(8.14.3)
1. 痛点:Agent 修改代码屡屡报错
- 工具机制 :Coding Agent 改代码通常调用
edit_file(path, old_string, new_string); - 失败根源 :工具要求字节级精确匹配(Byte-Exact) ,哪怕差一个缩进空格、一个真实换行、或者反斜杠
\转义不对,工具就会报错"未找到目标代码,修改失败",模型极易陷入死循环。
2. 核心工程思维:全链路排查归因(别急着怪模型笨)
不能一出报错就怪模型能力差,字符串从磁盘到模型要经过漫长管道,必须逐层排查"首个分歧点": 磁盘原始文件→工具读取→Harness 拼接 Prompt→Tokenizer 编码→模型推理输出→解码与 JSON 解析→匹配执行
- 若框架拼装时吃掉了换行符 → 框架的锅;
- 若 Tokenizer 编码解码后字符变异了 → 词表分词器的物理上限;
- 只有确认外部环节全对、纯属模型自己抄错时,才将其作为后训练微调的对象!
3. 针对性训练:精确复制 SFT 实战
- 数据构造 :专门针对容易翻车的"空格、换行、反斜杠、Unicode 特殊字符",训练模型把目标代码原封不动、一字不差地抄进
old_string; - 战报收益(Qwen3-8B LoRA) :
- 精确抄写准确率从基座惨淡的 37.5% 飙升至 78.9% ~ 80.1%;
- 物理天花板:80.1% 正好触碰了当前 Tokenizer 自身无损编解码的物理极限,模型抄写能力已被拉满。
四十、后训练实践终局:全局防线与架构协同(8.15 总结篇)
1. 终极哲学铁律
"模型学到什么,完全取决于训练信号教了它什么;而信号的质量由数据和环境决定,绝不由算法决定!"
永远不要试图用更复杂的优化器,去挽救低保真的环境和脏乱的训练数据。
2. 工业落地必踩的 11 大致命陷阱(防翻车清单)
- 知识错位:妄想用 SFT 往参数硬塞知识库(海量稳定知识用 Mid-training,动态频繁更新用 RAG);
- 格式未稳急上 RL:模型 JSON 都吐不规范就跑 RL,导致奖励解析全失真,必须先用 SFT 把格式焊死;
- 窗口虚标幻觉 :能塞进 128K 上下文 = 能在 128K 上规划,必须用"能力×长度"矩阵做留出衰减测试;
- 胜率为零硬上 RL :基模能力过低导致
pass@k接近 0 时,RL 根本产生不了正向样本,GRPO 组内优势全为 0(必须先用 SFT 铺路); - 奖励作弊(Reward Hacking):只按回答长度给分,模型就狂吐车轱辘废话;
- 玩具仿真骗自己:模拟环境过于单一套路,训出来的 Agent 遇到真实报错当场瘫痪;
- 过拟合导致遗忘:只看训练损失下降,没有独立保留集,导致通用能力全盘崩溃;
- Critic 价值网络崩溃:PPO 评估不准导致梯度剧烈震荡、探索陷入局部最优;
- 数值失配离轨:异步集群中采样和训练的概率比偏离 1,悄悄从 On-policy 退化为失效的 Off-policy;
- 算力预算低估:RL 算力是 SFT 的 10~100 倍,若测试与训练场景一致,直接用 SFT 即可;
- 数据垃圾污染:SFT 学噪声,RL 放大系统性偏差。
- 工程黄金准则 :先用极小规模试错验证(小批 Mid-training 看遗忘、小批 SFT 看格式、小批 Rollout 看 pass@k 与一致性),快速低成本失败,胜过大规模烧钱失败!
3. 系统终极四权协同架构
| 技术手段 | 负责职能与定位 | 典型场景 |
|---|---|---|
| 传统硬代码 | 绝对确定性与安全红线 | 支付划扣、权限鉴权、数据库事务兜底 |
| RAG 外部检索 | 动态更新、可查证的外部事实 | 实时库存、最新法律法规、公司内部知识库 |
| ICL(提示词/示例) | 零参数修改的即时策略验证 | 业务快速灰度试水、简单格式要求 |
| 后训练(SFT / RL) | 不可言传的直觉、深度工具链推理与自愈 | 代码编写、长序列决策编排、面对报错自查重试 |
4. 实战高频问答:训练轮数(Epoch)与数据量的关系
- 什么是轮数(Epoch)?
- 拿刷题打比方:题库有 1000 道题(数据量),从头到尾完整做完一遍叫 1 个 Epoch ,从头到尾刷 3 遍叫 3 个 Epoch;
- 换算公式 : 总训练步数 (Steps)=批次大小 (Batch Size)数据总量×轮数 (Epoch)。
- 怎么决定训练多少轮?(不同阶段的生死法则)
- Mid-training(继续预训练) :通常只训 1 轮(甚至不足 1 轮)。万亿 Token 浩瀚无边,翻来覆去看重复语料极易过拟合变傻;
- SFT / LoRA(指令微调) :黄金标准通常为 2 ~ 3 轮(极少超 5 轮)。刷 1 轮格式生疏,刷 2~3 轮融会贯通;若刷 10 轮以上,模型沦为死记硬背的做题家,泛化能力直接崩盘;
- RL(强化学习) :采样出来的一批 Rollout 数据只做 1 ~ 4 次 Minibatch 更新,必须保持近似 On-Policy,不敢重复多刷。
- 什么时候叫停?(早停机制 Early Stopping)
- 拿一套**从没见过的新模拟卷(验证集)**实时打分;
- 当训练集 Loss 持续下降,但验证集准确率开始拐头下跌 时,说明模型开始死记硬背了,立即踩刹车终止训练,回退使用上一轮的最优 Checkpoint。
5. 核心选型准则:"这事能否用文字/代码充分表达?"
- 能用代码规则写死的(如资金审批、风控校验):坚决由代码保障确定性,容不得 0.01% 的概率失误;
- 今天变明天变的事实(如商品库存、最新法规):坚决交给 RAG 动态外挂,不烧钱重训;
- 规则极简、快速试水的(如改个语气、限字数):写进 Prompt(ICL)搞定,不改动任何模型参数;
- 只可意会不可言传的深层智慧(如看医学CT片、复杂代码报错自救重试):必须通过后训练(Mid-training/SFT/RL)烙印进神经元参数中;
- 最后一步(蒸馏):把大模型练就的浑厚功力,无损迁移压缩至廉价轻量小模型,实现降本增效上线。
四十一、第八章全景收官小结:作者的核心论断(8.16)
1. 三大技术的本质:不是"微调力度轻重",而是分管不同器官
- Mid-training(继续预训练) :管底座(长脑子、补硬核知识、拓展真正不退化的有效上下文);
- SFT(指令微调) :管协议(立规矩、学格式、把 JSON 和调用语法彻底焊死);
- RL(强化学习) :管策略(在已有地基上探索更优路径,学会自我反思与自愈纠错)。
2. 极度严密的上马决策链(能力不够,切莫硬上)
- 若做题成功率
pass@k接近 0 :连蒙都蒙不对,绝对不要上 RL!先用 Mid-training 补基本功; - 若会做但输出格式老报错 :工具老解析失败,绝对不要上 RL!先用 SFT 把输出协议彻底固定;
- 只有格式稳定、且能偶尔做对(有成败方差)时 :才轮到 RL 上场重新分配概率、探索突破上限。
3. 最值得刻在脑子里的两大终极判断
- 判断一:数据与环境永远比算法重要 :
- 语料决定底座高度,示范决定协议稳度,环境保真度决定 RL 策略的真实上限;
- 如果底座够强、SFT 示范足够优质,很多实际业务场景根本不需要烧钱做 RL!
- 判断二:攻克 RL 的两大死穴(样本效率 + 分布一致性) :
- 用在轨蒸馏(On-Policy Distillation) 将终点稀疏反馈化为逐 Token 密集指导,破解样本效率危机;
- 死盯 Sampler 与 Trainer 的概率一致性,严防数值失配导致 On-policy 悄悄退化为离轨训练。
4. 实战工程铁律:为什么训练必须"小步快跑、高频评估"?
-
大模型"走火入魔"极其隐蔽 :
- 大模型不像普通代码,报错了会直接抛异常报错退出;
- 大模型即使参数已经学崩了、格式已经乱套了、甚至开始胡言乱语,它的训练损失(Loss)表面上依然可能在平稳下降!
-
千万别闷头训几天再看结果 :
- 若闷头烧卡跑了 3 天才看一次评测,不仅几十万算力全部打水漂,而且根本排查不出模型到底是在哪一个 checkpoint 走火入魔的。
-
工业界"黄金试水四步法" :
- 数据切小:先抽 1%(如 100~200 条)极小样本做探路;
- 链路跑通:在单卡或极小环境上验证数据读取、梯度回传、格式解析全通顺;
- 高频打分:每训练几十个 step 或一小段,立刻拿未见过的验证题(Eval)进行高频实测打分;
- 极速止损 :一旦发现评估分数出现拐头下跌或异常,立即按暂停键排查!
- 一句话警醒 :"花 10 分钟发现错误叫敏捷试错,跑了 3 天才发现错误叫重大事故!"