Best Practices of Reinforcement Learning with verl

Liwei Ma, Yan Bai, DevTech China | NVIDIA AI Open Day, Nov. 7th, 2025

议程 (Agenda)

  1. Verl 和 VLM 概览
  2. 关键问题与解决方案
  3. Verl 中的高级优化
  4. 总结与要点

1. Verl 和 VLM 概览

LLM RL 及近期进展

Verl 当前内部架构与工作流

Verl 当前内部架构与工作流 - Page 4
Verl 当前内部架构与工作流 - Page 4

verl 的用户界面

verl 的用户界面位于 verl/trainer/config 路径下,其主要特点如下:

verl的用户界面 - Page 5
verl的用户界面 - Page 5

模型:Qwen 2.5 VL,数据集:geometry3k

模型与数据集详情 - Page 6
模型与数据集详情 - Page 6

2. 关键问题与解决方案

RL 的关键步骤和问题

下图展示了实施强化学习的流程及其中的关键问题:

  1. 定义业务目标: 更高的推理智能,展示更多优化机会。
  2. 选择数据集和模型: 数据整理,工具格式,基础模型能力。
  3. 验证算法和工作流: 算法选择 (GRPO, DAPO, ...),RL工作流是否就绪,Nsight系统检查。
  4. 扩展到业务模型/适配GPU: 资源估计,内存估计。
  5. 找到正确的并行策略: Rollout, Training (TP, PP, VPP, CP, EP, ETP, DP)。
  6. 覆盖引擎细节特性: 动态批处理,卸载参数,固定视觉部分。
RL的关键步骤和问题 - Page 8
RL的关键步骤和问题 - Page 8

使用 Nsight System 理解工作负载

通过 Nsight System 的时间线视图,可以清晰地分析各个阶段的耗时,例如 generation(生成)、reward(奖励计算)、update_actor(Actor 更新),以及各个步骤(Step 1, Step 2 等)和开销(overhead)。

使用Nsight System理解工作负载 - Page 9
使用Nsight System理解工作负载 - Page 9

verl 执行模型 (on-policy)

从资源和计算角度看:

下表展示了在 Hopper 80G 上的典型时序:

7b (n1) 32b (n4) 72b (n8)
Step 160 165 170
rollout 60 55 70
training 50 60 60
verl执行模型(on-policy)- Page 10
verl执行模型(on-policy)- Page 10

实验总结

下图展示了基于 Qwen 模型的实验设置和结果。

实验配置:

配置项
Model Qwen 2.5/3 VL
Model Size 7b, 32b, 72b
GPUs 8, 32, 64
algorithm GRPO, DAPO
Training engine FSDP, Mcore
Rollout engine vLLM
Rollout parallelism Valid space
Training parallelism Valid space
Offload parameters Yes/No
Dynamic batching (training) Yes/No
Fixed vision Yes/No

性能曲线:
右图展示了前10次运行的 critic/score/mean 随训练步骤的变化。图中比较了不同模型大小(如 Qwen 3 30b, Qwen 2.5 72b, Qwen 2.5 32b, Qwen 2.5 7b)和算法(DAPO)的性能。

实验总结 - Page 11
实验总结 - Page 11

GRPO vs DAPO 对比 (Qwen2.5 VL 7b fsdp vllm)

算法特性对比:

PPO GRPO DAPO
Models 4 2 1
Rollout/prompt low medium high
Computation medium medium high
Static Memory high medium low

配置差异:

Config GRPO DAPO
entry verl/ppo recipe/dapo
train_batch_size 512 512
gen_batch_size 512 512*3
rollout.n 5 16
adv_estimator grpo grpo
actor.use_kl_loss True False
kl_ctrl.kl_coef 0.001 0
filter_groups Disable Enable
Nnodes 1 1,4

从右侧的图中可以看出,DAPO n1 在 Reward 上显著优于 GRPO n1,并且在 Timing step 和 Timing generation 方面也表现出更优的性能。

GRPO vs DAPO 对比 - Page 12
GRPO vs DAPO 对比 - Page 12

将大模型适配到 GPU 资源:内存估计 (Qwen 3 VL 30B)

将大模型适配到GPU资源:内存估计 - Page 13
将大模型适配到GPU资源:内存估计 - Page 13

vLLM 探索 (32b 4 nodes, fsdp, rollout TP=2, 4, 8, 16, Hopper 80G)

TP 与 kvcache 关系表:

TP 2 4 8 16
kvcache 0.5 0.5 0.5
OOM valid valid invalid

右侧的图表展示了不同 TP 设置下(TP=8 vs TP=4)的 timing_s/gen, timing_s/update_actor, 和 timing_s/step 的性能曲线。

vLLM探索 - Page 14
vLLM探索 - Page 14

FSDP 探索 (Base vs fix-vision, dynamic-batch-size, rollout engine/server vs all, 32B)

下图展示了 timing_s/gentiming_s/step 在不同配置下的性能曲线,比较了开启和关闭动态批大小,以及关闭卸载(offload)后的性能表现。结果显示,关闭 offload 可以获得最佳性能。

FSDP探索 - Page 15
FSDP探索 - Page 15

FSDP 动态批次大小分析

FSDP 动态批次大小分析的时间线视图
FSDP 动态批次大小分析的时间线视图

Megatron-Core 并行性探索

本节探讨了在 Qwen3 VL 30B 模型中,不同张量并行(TP)和专家并行(EP)设置对性能的影响(TP=1, 2, 4, EP=4, 8)。

下图展示了不同并行策略下的 timing_s/gen, timing_s/steptiming_s/update_actor 指标。右侧的 timing_s/update_actor 图表清晰地表明,TP1+EP8+recompute 配置的执行时间最短,性能最优。

Megatron-Core 并行性探索的性能图表
Megatron-Core 并行性探索的性能图表

Megatron-Core 微调

本节分析了在微调过程中,重计算(Recompute)策略在性能和内存占用之间的权衡。

下图左侧的 timing_s/update_actor 图表显示 TP2TP1+recompute 的性能(执行时间)相近。右侧的 perf/max_memory_allocated_gb 图表则显示,TP1+recompute 的峰值内存分配显著低于 TP2,这验证了重计算以计算换取内存的有效性。

Megatron-Core 微调中重计算与内存的权衡
Megatron-Core 微调中重计算与内存的权衡

性能优化指南

以下是进行性能优化的通用指南:


3. Verl 中的高级优化

长尾数据训练中的工作负载均衡

下图展示了典型的长尾序列长度分布情况。

长尾序列长度分布图
长尾序列长度分布图

数据并行中的不平衡

下图的时间线显示,不同 rank 的计算时间不同,部分 rank 会提前完成并进入等待状态(例如 Rank 2),造成 GPU 空闲。

数据并行中的工作负载不平衡
数据并行中的工作负载不平衡

流水线并行中的不平衡

下图展示了两个设备在流水线并行执行时,由于各 micro-batch 的处理时间不同而产生的空闲气泡。

流水线并行中的不平衡与气泡
流水线并行中的不平衡与气泡

解决方案

为了解决工作负载不均衡问题,提出了以下解决方案:

下图详细展示了“排序动态批处理”(Sorted Dynamic Batching)的机制,通过对 micro-batch 重新排序来优化流水线执行效率。

排序动态批处理解决方案示意图
排序动态批处理解决方案示意图

性能

本节展示了负载均衡解决方案的性能提升效果。

负载均衡解决方案的性能对比
负载均衡解决方案的性能对比

多轮对话与智能体学习:通过 Agent-loop 实现

Agent-loop 流程图
Agent-loop 流程图

用例

多轮对话与智能体学习用例
多轮对话与智能体学习用例

为实现最佳吞吐量进行异步训练

下图展示了异步训练的架构,包括 ActorRolloutRefRollouterMessageQueueTrainer,实现了数据生成与模型训练的并行化。

此部分由美团搜索团队贡献。

异步训练架构图
异步训练架构图

异步训练模式

下图展示了四种不同的异步训练流水线模式:

这些模式在 Rollouter 和 Trainer 的同步方式、数据新鲜度等方面有所不同。

此部分由美团搜索团队贡献。

四种异步训练模式
四种异步训练模式
Page 31: (b) 流式离策略流水线图示
Page 31: (b) 流式离策略流水线图示
Page 32: (c) 带有过时样本的异步流式流水线图示
Page 32: (c) 带有过时样本的异步流式流水线图示
Page 33: (d) 带有部分部署的异步流式流水线图示
Page 33: (d) 带有部分部署的异步流式流水线图示

性能

Page 34: DAPO与7B模型在H20上的性能对比表格
Page 34: DAPO与7B模型在H20上的性能对比表格

4. 总结与要点

总结与要点 (Takeaways)

Page 36: 总结与要点
Page 36: 总结与要点