跳转至

VeRL Feature Survey

导言

这篇文章现在作为 verl / RL infra 特性地图:把 vLLM 图模式、speculative decoding、router replay、FullAsync / AsyncFlow 和 TransferQueue 放到同一张系统图里,但不再承载所有细节。

核心结论仍然是:这些特性不在同一层。 有的减少推理执行开销,有的解决 decode 串行性,有的保证 MoE 路由一致性,有的把 rollout 与训练重叠,有的把数据从 single controller 中解耦。真正的收益来自先定位瓶颈,再打开对应特性。

verl RL 特性收益总览

公开资料中的收益口径并不完全可比:FullAsync、AsyncFlow、AReaL、StreamRL、TransferQueue 和 DFlash 的模型、硬件、任务和指标都不同,只能用于判断方向和量级。

四个时钟

RL 后训练系统可以拆成四个时钟:

  1. 推理时钟:vLLM / SGLang 负责把 prompt 变成 response,核心瓶颈常见于 decode 串行性、KV cache、batch shape 与 kernel launch。
  2. 策略时钟:actor 参数不断更新,rollout、old logprob、new logprob 和 ref logprob 必须知道自己使用的是哪个 policy version。
  3. 数据时钟:样本字段不是一次性出现,promptresponserewardold_log_probref_log_probadvantages 有不同生产者和消费者。
  4. 一致性时钟:MoE 路由、训练后端与推理后端的数值差异,会让“同一条样本”的概率比较混入框架差异。

先分层再开关

FULL_DECODE_ONLY、router replay、FullAsync 和 TransferQueue 都可能提升端到端效率,但它们解决的问题不同。把它们都叫“加速开关”会误导实验设计。

文章地图

专题 文章 解决的问题 主要风险
vLLM 图模式 VeRL Rollout Inference enforce_eagercudagraph_modecudagraph_capture_sizes 如何影响 rollout 推理 图显存、capture warmup、版本参数差异
speculative decoding VeRL Speculative Decoding MTP、EAGLE、DFlash 如何缩短 decode logprob 口径、draft stale、metadata 丢失
MoE 路由一致性 VeRL Router Replay R2/R3 如何拉齐 rollout、old logprob、actor update 的 expert 路径 routed experts 回传、后端支持、KL 解释
异步流水 VeRL Async FullAsync、AsyncFlow、AReaL、StreamRL 如何减少 stage bubble policy lag、stale samples、partial rollout
数据系统 VeRL TransferQueue TransferQueue 如何拆开 control flow 与 data flow 采样分布、字段生命周期、恢复语义

开启顺序

推荐按风险从低到高推进:

  1. 同步 baseline:先跑通 eager / 小 batch / 短 response,确认 reward、mask、logprob、KL 和 checkpoint 语义。
  2. vLLM graph:设置 enforce_eager=False,优先使用 FULL_AND_PIECEWISE;若是 P/D decode-heavy 或显存压力明显,再试 FULL_DECODE_ONLY
  3. capture sizes:基于真实 decode batch 分布选择尺寸,不要只照抄示例。
  4. MoE router replay:Dense 模型跳过;MoE 先 R2,确认稳定后再 R3。
  5. MTP / DFlash:先在纯 serving benchmark 看 acceptance、tokens/s、latency 和显存,再接入 RL rollout。不要只看 acceptance rate。
  6. FullAsync:先 staleness_threshold=0 做 stream off-policy,再逐步提高 threshold,通常不建议一开始超过 1。
  7. TransferQueue:当 single controller、对象传输、host memory 或样本字段生命周期成为瓶颈时打开。小规模实验里先不用急。

验证指标

每个 feature 至少要回答三件事:它减少了什么等待,它引入了什么不一致风险,它是否改变最终训练曲线。

层次 指标 解释
vLLM graph decode tokens/s、p50/p99 latency、capture hit ratio、warmup time、peak memory 判断图捕获是否覆盖主流 batch
speculative acceptance length、tokens/s、draft overhead、verify overhead、output quality 判断 MTP / DFlash 是否抵消额外成本
router replay routed expert diff、KL、clip ratio、old/new logprob delta 判断 MoE 路由是否被拉齐
async trainer idle ratio、rollouter idle ratio、stale sample ratio、policy version gap 判断流水是否减少空泡且 stale 可控
TransferQueue queue depth、field ready latency、KV put/get latency、single controller CPU time、host memory 判断是否绕开 controller 和对象传输瓶颈

总结

这组特性的共同目标是提高 RL 后训练的有效吞吐,但它们的作用层次不同:

  • vLLM CUDA Graph 解决单次推理执行开销。
  • MTP / DFlash 解决 decode 串行性。
  • router replay 解决 MoE 训推路径一致性。
  • FullAsync / AsyncFlow 解决 rollout 与训练的 stage bubble。
  • TransferQueue 解决数据依赖、single controller 和跨任务消费语义。

所以最实用的判断不是“哪个特性最强”,而是:当前瓶颈属于 kernel、decode、路由一致性、stage idle,还是数据流管理。 找准瓶颈后再开对应特性,收益才会稳定。

评论