Chapter 01

项目背景与定位

📌 本章基于 verl-project/verl · commit 9c38b8bb1876 (2026-05-26)。

1.1 一句话定位

verl(Volcano Engine Reinforcement Learning)是字节跳动火山引擎团队 2024 年开源、2026 年迁移到独立 verl-project 组织维护的、面向大模型的高性能、灵活、可扩展的强化学习训练框架。它的核心理论支撑是字节同时发布的 HybridFlow 论文(NeurIPS 2024):通过把 "单线程的 controller" 和 "多进程的 worker" 解耦,把 RLHF 的算法逻辑写成"看起来像单进程脚本,但跑起来是分布式"的样子

verl 已经被字节内部用于 Doubao、Skylark 等模型的 RLHF 训练,也是开源社区里和 OpenRLHF 并列的"大规模 RLHF"事实选项。R1 风格的"长思考链 GRPO"训练有不少团队就是基于 verl 做的。

1.2 为什么会有 verl

字节做 RLHF 遇到的问题和 OpenRLHF 类似,但他们的回答方式有差异:

论文里给的例子大致是:

output  = actor.generate(prompts)
rewards = reward_model.compute(output)
actor.train(output, rewards)

看起来就是顺序执行,但 verl 在背后自动把这些调用调度到不同的 worker group 上、自动做数据并行、自动管理通信。这种抽象在大规模 RL 训练里非常有价值——算法工程师和系统工程师可以解耦,互不打扰。

1.3 它的"三个核心抽象"

抽象作用类比
Controller 跑控制流的单进程,调度 actor / critic / reward / rollout主线程
WorkerGroup 一组同质 worker(比如所有 actor worker) 分布式数据并行组
ResourcePool一片 GPU 资源池 物理硬件抽象
flowchart LR C[Controller
单进程算法主控] -->|RPC| AG[Actor WorkerGroup] C -->|RPC| RG[Rollout WorkerGroup
vLLM / SGLang] C -->|RPC| RM[Reward WorkerGroup] C -->|RPC| CR[Critic WorkerGroup] AG -.- RP1[ResourcePool GPU 0-7] RG -.- RP2[ResourcePool GPU 8-11] RM -.- RP3[ResourcePool GPU 12-13] CR -.- RP1

调度逻辑:ResourcePool 提供 GPU;WorkerGroup 在 ResourcePool 上跑;Controller 调用 WorkerGroup 上的方法,背后是 Ray 远程调用。可以做"actor 用 8 卡 ZeRO-3、reward 用 2 卡、rollout 用 4 卡 vLLM"的精细调度。

1.4 它和 OpenRLHF / TRL 的对比

维度verlOpenRLHFTRL
背后理论 HybridFlow 论文 工程驱动 HF Trainer 延伸
控制流 单进程 + 远程调用 Ray Actor 间消息传递Trainer.step() 顺序
训练后端 FSDP / Megatron 两条 DeepSpeed accelerate
配置 Hydra YAML bash 脚本 Python API
Megatron 集成一等公民 没有 没有
入门难度 中-高

1.5 设计哲学:算法 / 系统解耦 + Megatron 友好

代价:抽象层多,初学者难以一眼看清调用栈;对 Hydra / Ray 不熟悉时调试复杂度高版本迭代快,0.1 / 0.2 之间 API 变化不少。

1.6 它适合用来做什么、不适合做什么

判断典型场景
✅ 适合大规模 PPO/GRPO/DAPO 训练(百亿 - 千亿模型)
已经使用 Megatron-Core 的团队做 RL 训练
长思考链 RL(R1 风格)研究
想做"算法新颖度高 + 系统性能也够"的研究工程结合
❌ 不适合单机 / 单卡环境,不需要分布式调度
只做 offline 对齐(DPO 等)
不愿意花时间搞清楚 controller / worker 这套抽象的应用层用户

1.7 本书将怎么带你走完这趟旅程

1.8 verl 在 2025–2026 引入了什么

verl 的演进速度比 DeepSpeed / Megatron-LM 都更激进。下表按时间倒序,列出本书基线 commit 9c38b8bb1876(2026-05-26)当时已经在 master 的关键节点——每个都有源码可查、本书有对应小节:

时间事件 / 特性是什么本书章节
2026-05VeRL-Omni 预发布 扩散 + 全模态(文本/图像/音频)后训练统一栈;独立仓库 verl-project/verl-omnich05.9 / ch06.6
2026-05vexact 零失配 HF rollout 用 batch-invariant kernel 让训练侧和 rollout 侧输出完全一致,调试黄金标准ch07.10
2026-04Megatron LoRA + Router Replay PyTorch Conference Europe 上展示;DeepSeek-671B / Qwen3-235B MoE 训练支持ch06.9 / ch11.11
2026-03NVIDIA GTC26 / verl-project 组织迁移完成 volcengine/verl 已转 verl-project,旧 URL 走重定向ch01 元信息
2026-01recipe/ 拆成独立子模块 外部 recipe 不再随主仓发布;本仓 git submodule update --init recipe 才拿得到ch02.5
2025-12Mind Lab × Megatron-bridge 万亿模型 LoRA 1T 参数 GRPO LoRA 训练在 64 H800 上 10 小时完成ch11.10
2025-11SAPO / GSPO 新 policy lossSAPO 用 sigmoid soft-clip;GSPO 走序列级 IS × token-level ratioch09.11 / ch09.12
2025-10PyTorch Conference 2025 verl 专题 Fully Async Policy 与 NCCL 参数同步首次公开 benchmarkch05.7
2025-08Fully Async Policy rollout/train 分到独立资源池,NCCL 参数同步;128 卡 Qwen2.5-7B DAPO 提速 2.35–2.67×ch05.8 / ch11.10
2025-06DeepSeek-671B / Qwen3-235B MoE 正式支持 Megatron 路径 + Router Replay R2/R3 模式ch06.7
2025-05PF-PPO(ICML25)+ VAPOPriority Filtering PPO;VAPO 在 Qwen-32B-base 上 60.4 AIMEch09.13
2025-03DAPO SOTA 50 AIME(Qwen2.5-32B) 超过 DeepSeek-R1-Zero-Qwen-32B;DAPO clip + filter groups 落地ch09.7 / ch12

结论:verl 的版本基线每隔 3-6 个月会带来一次能力跃迁。读这本书时,重点把 ch04–ch09 这条主线吃透,新特性都建立在那套抽象上。