@vivek_2332: 最近一直在探索 RL 基础设施,这是我想深入研究的方向。所以我一直在阅读 prime-rl 代码库……
摘要
一篇技术博客文章,剖析了 prime-rl 强化学习编排器的主循环,涵盖了 RolloutDispatcher、TrainSink、EvalSink、WeightWatcher 和 PeriodicLogger 等组件。
查看缓存全文
缓存时间: 2026/08/04 02:12
最近我花了很多时间研究 RL 基础设施,这是我想深入的方向。所以我一直在读 @PrimeIntellect 的 prime-rl 代码库,并把它写成一系列博客文章,通过代码拆解关键概念。第 1 部分:编排器的主循环。我们会依次看 RolloutDispatcher、TrainSink、EvalSink、WeightWatcher、PeriodicLogger,以及它们如何支撑起一次完整运行。https://vivekvkashyap.github.io/posts/rl-infra-orchestrator-part-1.html…
RL 基础设施编排器 - 第 1 部分:主循环 — Vivek Kashyap
来源:https://vivekvkashyap.github.io/posts/rl-infra-orchestrator-part-1.html
过去一年,前沿模型的大部分进展都来自后训练(post-training)。预训练仍然承担着教会模型语言和世界知识的重活,但自从 OpenAI 的 o1 和 DeepSeek-R1 发布以来,后面的 RL 阶段才是近期许多收益体现的地方。它在数学和代码这类可验证领域尤其有效,并且会顺带提升模型的其他能力,这也是 Claude Code、Codex 和 Cursor 这类工具用起来感觉那么好的一个重要原因。
但要真正让模型以这种方式进步,需要大量基础设施,而这正是事情变难的地方。随便问一个做 RL 的人,他们都会告诉你同样的话:RL 基础设施很难。
这是该系列博客的第一篇,我们从这个编排器开始。它内部的内容太多了,我打算分成五六篇文章:先讲主循环,然后是调度器、权重同步、rollout 如何变成训练数据,等等。我们会一路阅读实际代码,来自 Prime Intellect 的 prime-rl,这是我最喜欢的框架之一。
三个组成部分
只有先弄清楚编排器夹在什么之间,它才有意义,所以我们从这里开始。
任何 RL 系统都由三部分组成:推理、训练器和编排器。
-
推理运行模型。你给它一个 prompt(提示词),它生成模型的回答。如果任务是单轮的,那就到此为止:进去 prompt,出来答案。如果有工具或多轮对话,它会继续下去。模型调用工具、拿到结果、环境回应,循环继续。整个轨迹——prompt、模型回答、工具调用和环境回合——被称为 rollout。这部分通常由 vLLM 或 SGLang 之类的服务承担。
-
训练器接收一批 rollout,更新模型。思路很简单:获得高奖励的 rollout 会被推高,让模型更多地产出类似行为;获得低奖励的 rollout 会被压低,让模型更少地产出这类行为。整个循环就是这样:让好的行为更可能出现,让坏的行为更少出现。
-
编排器是把两者绑在一起的组件。它把 prompt 交给推理,收集返回的已完成 rollout,传给训练器,然后协调把训练器的新权重推回推理,让生成 rollout 的模型持续改进。难点在于,它要异步地完成这一切。谁也不等谁。训练器在 rollout 到达时持续训练,推理同时持续生成新的 rollout,所以两者互不阻塞。要让两个系统持续保持同步,同时还要正确且尽可能快地完成训练,这正是编排器有这么多事要做的原因。
五个组件
到目前为止,我们一直把编排器当作一个整体来谈,但它实际上就是一组各司其职的小组件。编排器的全部职责就是在 setup() 中构建它们,然后驱动它们。这些组件彼此不知道对方的存在,只有编排器把它们连接在一起。有五个值得了解:
-
RolloutDispatcher(rollout 调度器)。 这是调度器。它决定接下来运行哪些 prompt,通过验证器环境把它们发给推理引擎;每当一个 rollout 完成,它就把 rollout 放到队列中,让管线的其余部分取走。你可以把它看作是保持推理忙碌的东西:它总是尽量在容量允许的范围内让尽可能多的任务处于进行中。
-
TrainSink(训练汇)。
相似文章
@adithya_s_k: https://x.com/adithya_s_k/status/2054961319179420035
分析为什么强化学习在编程任务中因可验证奖励而受到青睐,以及新兴框架Harbor如何解决RL训练中环境复杂度的瓶颈。
@fpedregosa: 开始一个新的博客系列,从基础深入理解现代强化学习算法。第1部分涵盖经典的…
开始一个关于现代RL算法从头开始的博客系列,第1部分涵盖REINFORCE估计器,推导无偏策略梯度并分析方差。
@harshbhatt7585: 这是在阅读了所有强化学习基础论文后的一篇文章,学习策略梯度算法的推导和演进……
这篇文章阐述了强化学习的数学基础,推导了策略梯度、PPO和GRPO等算法,并探讨了这些算法通过RLHF和RLVR等技术在对齐大型语言模型中的应用。
我在verl(一个RL后训练框架)里沉浸了数月,复刻了它,然后停止。写下了内部机制、复刻所需的工具开销以及一个棘手的NCCL错误。
深入探讨字节跳动verl强化学习后训练框架的内部机制,包括编排、单控制器模式以及一个棘手的NCCL错误修复。作者分享了复刻该框架和构建自定义工具的经验教训。
@eliebakouch: 在GLM-5上进行强化学习所需了解的所有基础设施内容 https://primeintellect.ai/blog/rl-at-1t-scale…
Prime Intellect发布了prime-rl v0.6.0,支持在万亿参数规模的大型Mixture-of-Experts模型上进行高效强化学习,实现低于5分钟的步骤时间,并对异步强化学习进行了优化。