RRLforge

在一张 5090 上把 RL 跑通

27 节课,终点是同一个:你自己手写一份 GRPO,在单卡 32GB 上把 Qwen3-0.6B 的数学题正确率训上去,然后换成 TRL 框架再跑一遍做对照。 先挑一条和你现在情况最接近的路线 —— 三条线共用同一份进度,随时可以切。

从开炉到淬火,把这条路完整走一遍27 节 · 约 17 小时 · 已完成 0/27

不做裁剪的全量路线:先把 5090 环境和显存账打好底,再建立 RL 的心智模型,然后从零手写一个 GRPO,接着上框架并对照 slime 与 Miles 的工业设计,最后收在评测、调参与排障。

  • 在单卡 5090 上独立完成从环境搭建到模型评测的完整 RL 实验
  • 手写实现与框架实现两条路都走通,并能解释两者的差异
  • 认得出熵崩塌、reward hacking、KL 跑飞等典型失效并知道怎么救
沿这条路线开始 · 第 1 这条路需要什么:一张 5090 和一份预期管理
L0
开炉5090 环境与显存账本

在动手写一行 RL 代码之前,先把这张卡摸清楚:工具链装对、显存算得出、推理跑得起来、评测基线量得到。这一阶段的产出是一个「已知能跑」的环境和一张写下起点分数的纸。

0/6
  1. 1这条路需要什么:一张 5090 和一份预期管理先把话说清楚:单卡 32GB 能做什么、不能做什么,以及为什么这不影响你学会 RL。20
  2. 2Blackwell 的工具链地雷:sm_120 到底装什么版本5090 是 sm_120,用错一个 wheel 就是「no kernel image is available」。这一节把环境一次装对,并留下验证命令。40
  3. 3显存账本:32GB 到底放得下什么RL 训练要同时装下策略模型、优化器状态、参考模型和一个推理引擎。这一节把这笔账算清,用计算器验证。45
  4. 4第一次推理:把 vLLM 跑起来,量出你的 tok/sRL 的墙钟时间大头在采样。先把推理引擎跑起来,测出这张卡的真实吞吐,后面所有时间估算都以它为基准。35
  5. 5先量起点:数据集与评测基线RL 只能证明「比训练前好」。所以第一件事是量出训练前的分数,否则后面所有曲线都没有意义。35
  6. 6token 与 chat template:新手翻车最密集的地方一半的「RL 不收敛」其实是模板拼错、EOS 没停、mask 错位。这一节把这些坑提前踩掉。30
L1
认料RL 与后训练的心智模型

用最少的数学把 RL 讲通:为什么能对采样结果求梯度、reward 从哪来、PPO 在防什么、GRPO 又砍掉了什么。这一阶段不写训练代码,但每个概念都对应后面手写代码里的一行。

0/5
  1. 1RL 的最小心智模型:试、评、改不讲马尔可夫决策过程。先用「模型自己生成一批答案,好的多学一点,坏的少学一点」把整件事说完。25
  2. 2LLM 后训练全景:SFT、RM、RLHF、RLVR 各在什么位置把你听过的一堆缩写排进一张流程图,知道 GRPO 训的是哪一段、前后各接什么。30
  3. 3reward 从哪来:可验证奖励、模型打分、人标reward 设计是 RL 里唯一真正需要你想清楚的事情。写歪一个 reward,模型会精确地学会钻它的空子。30
  4. 4策略梯度:为什么能对「采样出来的东西」求梯度RL 唯一绕不开的一段数学。这一节只推一个公式,但推完之后 GRPO 的代码你会觉得理所当然。40
  5. 5从 PPO 到 GRPO:丢掉 critic 换来了什么PPO 的四个模型对单卡是灾难。GRPO 用「组内比较」替掉 critic,这正是 5090 能玩 RL 的原因。40
L2
手锻从零写一个能跑的 GRPO

不用任何 RL 框架,用 transformers + vLLM 手写完整训练循环。跑完这一阶段你会拥有一个约 200 行、你完全看得懂每一行的 RL 训练脚本,并在 5090 上把 Qwen3-0.6B 的 GSM8K 分数推上去。

0/6
  1. 1写 rollout:让模型自己生成一批答案训练数据不是给的,是采的。这一节把「一个 prompt 采 8 条回答」写出来,并处理好 token 对齐。45
  2. 2写 reward 函数:把「答对了」变成一个数两个 reward:答案对不对、格式规不规范。加起来就是这一轮的分数。35
  3. 3GRPO 的核心 20 行:优势、ratio、clip、KL整个算法真正的实现只有二十行。这一节逐行写出来,并用打印验证每个中间量。50
  4. 4拼成训练循环:第一次真正的 RL 训练把 rollout、reward、loss 串起来,加上权重同步和显存管理,在 5090 上跑完第一次训练。60
  5. 5闯关:读第一次训练曲线给你六组真实形状的训练曲线,判断哪些是在学、哪些是在作弊、哪些已经废了。40
  6. 6把分数再往上推:三轮迭代实验同一套代码,只改超参和 reward,做三轮对照实验,把 GSM8K 分数推到你能达到的最高点。60
L3
上机框架层:TRL 实跑 + slime/Miles 对照

手写脚本让你懂原理,框架让你能干活。这一阶段先用 TRL + vLLM 在 5090 上把同一个任务重跑一遍,再去读 slime 与 Miles 的设计,理解工业级框架在解决什么你刚刚亲手踩过的问题。

0/5
  1. 1手写脚本会死在哪:框架解决的五个问题你的 200 行脚本在单卡小模型上够用。这一节说清它在什么位置会撑不住,从而知道框架的每个模块是为什么存在的。30
  2. 2TRL GRPOTrainer:5090 单卡实跑把手写脚本换成 TRL,跑同一个任务、比同一个分数。这是本站唯一在 5090 上被验证过的框架路径。50
  3. 3训推同卡:colocate 的显存怎么分单卡上训练和推理抢同一块 32GB。这一节把 colocate 模式调稳,并知道它比多卡慢在哪。40
  4. 4读 slime 与 Miles:工业级 RL 框架长什么样这两个框架单卡跑不了,但正是最好的架构教材。带着你刚踩过的坑去读它们的设计文档。50
  5. 5从 1 卡到 8 卡:哪些结论会变你在单卡上得到的所有直觉,哪些能带上多卡,哪些必须扔掉。为将来真有机器的那天做准备。30
L4
淬火评测、调参与排障

能跑通只是起点。这一阶段处理真正决定成败的部分:怎么评得可信、参数按什么顺序调、五种常见炸法怎么认怎么救,以及一次实验到底要花多久。

0/5
  1. 1闯关:五种炸法熵崩塌、reward hacking、长度爆炸、KL 跑飞、OOM。每一种给现场证据,你来判断和处置。45
  2. 2评测:别用训练集骗自己把评测做成一条能重复执行的流水线,让每次实验的分数可比。40
  3. 3调参优先级:先动哪三个旋钮十几个超参不必都调。按影响排序,前三个决定成败,剩下的基本不用碰。35
  4. 4时间账:一次实验到底要跑多久用你在 L0 测出的 tok/s,算出一次实验的墙钟时间。计算器帮你在开跑之前就知道要等多久。30
  5. 5走完之后:下一道门在哪你已经能在单卡上完整跑一轮 RL。接下来是 agentic RL、多轮工具调用、更大的模型——以及它们各自要求什么。25