Skip to content
View original post on X: meng shao
Published
49/100

MIT course lecture walks through RL and self-distillation for LLM training

AIMIT's MAS.S62 lecture 6, taught by Idan Shenfeld of Thinking Machines Lab, covers running reinforcement learning on LLMs with PPO, GRPO, and on-policy distillation. The lecture contrasts on-policy distillation, which gives a score per token, with RL's single reward per response, and describes the five steps of one training update.
meng shaoVerified on X
@shao__meng
View on X

https://x.com/i/article/2119672556039143424

MIT《How to AI an AI》第 6 讲:从 PPO、GRPO 到同策略蒸馏,大模型强化学习怎样在工程上真正跑起来

RL & Self-Distillation in Practice

MIT 2026 秋季课程 MAS.S62《How to AI an AI for (Almost) Anything》又叫 Self-Evolving AI,讲的是会自我演化的 AI。11 月 4 日第 9 周进入“模型演化”第二讲,Ao Qu 的这份课件题为 Lecture 6: RL & Self-Distillation in Practice。

这堂课的客座教师 @IdanShenfeld 来自 Thinking Machines Lab

它讲的是具体操作:怎样把大语言模型当作策略来训练,优势值怎样计算,为什么训练时模型要同时放在推理引擎和训练引擎两边,训练中该盯哪几条曲线,以及怎样从离线训练框架 verl 走到边服务边学习的 reef。同一周的阅读材料还有 self-play,但这份课件几乎只讲强化学习和蒸馏的实践。

同一条损失,两种打分方式

先把语言模型看成一个策略。提示是起点,每生成一个 token 算一步动作,状态是“提示加上已经生成的内容”,奖励通常要等整段回答结束才给一次。策略梯度的通用形式是:

At​ 叫优势(advantage),表示这个 token 或这段回答比预期好还是差。PPO 和 GRPO 还会乘上新旧策略的概率比,再用裁剪限制每一步的更新幅度,避免一次走得太远。

两者的区别在于优势怎么算:

- PPO 额外训练一个价值模型 VVV,估计“走到这里大概还能拿多少分”,优势是实际回报减去这个估计。

- GRPO(来自 DeepSeekMath)对同一道题采样多条回答,用组内的均值和标准差把奖励标准化,不需要价值模型。

同策略蒸馏(on-policy distillation,简称 OPD)和自蒸馏也能写成同一条损失,只是 AtA_tAt​ 换成“教师对这个 token 的对数概率减去学生自己的对数概率”:

- OPD 的教师是另一个更大的模型,比如大模型教小模型。

- 自蒸馏的教师是同一个模型,只是提示里多了条件 ccc,比如一段示范、标准解法或人类反馈。没有这个条件,教师和学生完全相同,也就没有学习信号。

课件用一句话对比两者的信息量:强化学习通常整段回答共用一个奖励,每局大约只有常数级的信息;OPD 每个 token 都有一个分数,信息量随长度 N 增长。强化学习朝高奖励的方向走,可能学会刷分;OPD 朝教师的方向走,上限就是教师本身。这部分的图和论证引自 Thinking Machines 的 On-Policy Distillation 一文,课件没有另列评测分数。

一条人类反馈,同时喂给强化学习和自蒸馏

课件举了 OpenClaw-RL 的例子:一个助教 agent 批改作业,回答写得太短,有人纠正说“要给学生讲清楚每一步为什么对”。

1. 强化学习这一路:评判模型打一个分,比如 r=−1,整段回答共用同一个优势值。

1. 自蒸馏这一路:把这句纠正写进提示,让同一个模型带着它充当教师,得到每个 token 各自的优势值。

两部分损失相加,用同一批回复做一次更新。前者每轮都有分数但很粗;后者能指出该改哪些词,不过通常只有在出现纠正时才有这种细粒度信号。这是课件引用的已有方法,不是本讲提出的新算法。

一步训练怎么走,为什么模型要放两份

课件把一步训练拆成五个环节:

1. 生成回答:用 vLLM、SGLang 等推理引擎,每个提示采样 nnn 条回答。

1. 打分:用规则、单元测试或评判模型,每条回答得一个分。

1. 算优势:奖励减去基线;如果是蒸馏,就换成师生对数概率之差。

1. 更新参数:在 FSDP 或 Megatron 上反向传播。

1. 同步权重:把更新后的权重拷回推理引擎。

之所以拆成两边,是因为生成和训练需要的东西不同:生成要快,依赖 KV 缓存;训练要保存梯度和优化器状态。所以每次更新后都要同步一次权重。以约 82 亿参数的 Qwen3-8B 为例,课件给出的量级是:

- 推理引擎这边:bf16 权重约 16 GB,另外每个 token 的 KV 缓存约 0.15 MB。

- 训练引擎这边:权重、梯度和 Adam 优化器状态合计约每参数 16 字节,也就是 130 GB 左右,再加上激活值,单张 80 GB 显卡放不下,必须切分到多卡并行。

批次还分三层,课件的示例配置是:1024 个提示,每个采样 5 条,一共 5120 条回复;每 256 个提示做一次参数更新,所以拆成 4 次更新;8 张卡做数据并行,每张卡再切成小批次累积梯度。

这里有个容易忽略的细节:只有第一次更新严格算同策略。参数一旦更新,当前策略就已经不是当初采样时的那个了。

损失里还可以加两项。一项是相对初始模型的 KL 惩罚,推理类强化学习常常关掉,RLHF 常常开着。另一项是熵奖励,用来鼓励探索,实践中常常关掉,但熵的曲线一定要看。

训练时盯哪些曲线

课件拿 verl 公开的数学推理基线举例:Qwen2.5-Math-7B 加 GRPO 的一个变体,在 AIME 2024 上评测,并据此整理出六类监控指标:

这是一份监控清单,不保证你能复现同样的最终分数,课件也没有把曲线终点的准确率写成具体数字。

用 verl,你真正要写的部分

课件把实践流程压缩成几步:

1. 把任务整理成 parquet 文件,一行一个提示,可以附标准答案。

1. 写一个 compute_score 函数,从回答里抽出答案,对就返回 1,错就返回 0。

1. 启动 verl.trainer.main_ppo,选好 GRPO、模型、vLLM、采样数、批次大小和显卡数量。

1. 盯住上面那几条曲线。

1. 训练结束后合并 FSDP 分片,转成 Hugging Face 格式,再用 vLLM 部署。

同步模式下,一步训练的内部顺序大致是:生成,组批次,必要时让推理副本休眠以腾出显存,平衡各卡的 token 数,计算旧策略和参考模型的对数概率,算优势,更新模型,最后把权重同步回推理引擎。课件给了对应 HybridFlow 和 verl 代码路径的简化伪代码。

从 verl 到 reef:先练好再上线,还是边服务边学

- verl:在你准备好的固定提示集上反复生成、打分、更新,导出模型后再单独部署。

- reef:推理服务本身就是学习者,直接用线上的请求、回复和反馈来训练和评估,更换新版本时不用把整套系统重启。

课件的总结很直接:verl 是在数据集上训练的工具,reef 是从自己的线上流量里学习的推理服务器。这正对应了课程“自我演化 AI”这一大主题的基础设施层。

一点读后感

这份课件最有价值的地方,是把“大模型加强化学习”从论文公式落到了能动手的工程理解上:同一条损失,只是优势值的来源不同;推理和训练两套引擎各有显存账;同策略的条件其实很脆弱;一份监控清单比再记一个新缩写有用得多。

它把同策略蒸馏和自蒸馏写成与强化学习同一形式、但监督更细的方法,这是理解近来“少依赖稀疏奖励、多用教师概率”这条路线的关键。关于课程的零数据自我博弈,还需要另读 Absolute Zero、R-Zero 等论文。

Source details

meng shao · x.comPublished · added here

Original title: MIT《How to AI an AI》第 6 讲:从 PPO、GRPO 到同策略蒸馏,大模型强化学习怎样在工程上真正跑起来