跳到主要内容
Agentic RL

第8章:RL 训练框架对比 —— verl / OpenRLHF / TRL / NeMo-RL / Unsloth / DAPO

8 个主流 RL 训练框架横评,设计哲学、能力矩阵、最简启动代码、选型决策树

verl OpenRLHF TRL NeMo-RL Unsloth DAPO 选型

读懂算法和论文之后,真到生产你不会从零造轮子——选对训练框架直接决定你能不能跑得通、跑得快。本章把 8 个主流 RL 训练框架横评:verl / OpenRLHF / TRL / NeMo-RL / Unsloth / Axolotl / DAPO / Verl-Tool——每个给出哲学、最简代码、能力矩阵,最后给一棵决策树和”双栈策略”建议。

📑 目录


1. 框架全景速查表

框架出品方哲学GitHub Stars(2026)适合
verlByteDanceHybridFlow + async12K+工业大规模训练
OpenRLHFOpenRLHF TeamRay 模块化8K+研究 / 中等规模
TRLHuggingFaceHF 生态一体10K+入门 / 单卡 / 文本 RL
NeMo-RLNVIDIA企业级4K+NeMo 栈用户
Unsloth RLUnsloth单卡省显存21K+(全 Unsloth)个人 / Colab
Axolotl RLOpenAccess-AI-CollectiveYAML 驱动10K+微调爱好者
DAPOByteDance SeedGRPO 改进复现 SOTA
Verl-Tool中科大 + 合作者tool RL 专用1K+tool RL 场景

2. verl — 工业级霸主

GitHub: github.com/verl-project/verl 出品: ByteDance HybridFlow

2.1 设计哲学

“用 Ray 做调度,vLLM 做 rollout,FSDP 做训练,IPC 共享内存做 weight sync——把每一层都用最优工具。”

verl 是 2025 工业最强的 RL 框架,在 ByteDance 内部支持 Doubao 系列模型训练。

2.2 关键特性

特性说明
HybridFlow训练侧 FSDP + 推理侧 vLLM 在同一 Ray 集群,自动 weight sync
Fully Async Trainer2.35-2.67× 加速(vs sync)
Multi-algorithmPPO / GRPO / DAPO / RLOO / REINFORCE++
Multi-modal支持 VLM RL 训练
Recipes内置 Search-R1、Verl-Tool 等 recipe
可扩展性1K+ GPU 验证过

2.3 最简代码(GRPO)

# verl 用 hydra 配置
# configs/grpo_qwen.yaml
data:
  train_files: data/math_train.parquet
  prompt_key: prompt
  
algorithm:
  algo: GRPO
  group_size: 16
  
actor_rollout_ref:
  model:
    path: Qwen/Qwen2.5-7B
  rollout:
    name: vllm
    n: 16
    temperature: 1.0
  actor:
    optim:
      lr: 1e-6
    fsdp_config:
      param_offload: false

trainer:
  total_epochs: 5
  n_gpus_per_node: 8
  nnodes: 4
  fully_async:
    enable: true
python -m verl.trainer.main_ppo --config-path=configs --config-name=grpo_qwen

2.4 优劣

性能最强:async + IPC + 各种优化 ✅ 生态最完整:recipes、tool、multi-modal、RLHF/RLVR 全有 ✅ 大公司在用:ByteDance / 美团 / 蚂蚁等

学习曲线陡峭:hydra config + Ray + 多组件,新人易迷茫 ❌ 部署复杂:Ray cluster + 多 GPU 资源调度

2.5 适合谁

  • 大规模生产训练(8 卡 H100+)
  • 已有 Ray 基础设施
  • 性能敏感

3. OpenRLHF — 灵活研究派

GitHub: github.com/openrlhf/openrlhf

3.1 设计哲学

“模块化、Ray 友好、研究人员的瑞士军刀。”

OpenRLHF 的设计偏向研究——每个组件可独立替换、扩展。

3.2 关键特性

特性说明
算法PPO / DAPO / REINFORCE++ / GRPO / RLOO 全套
Async RL(0.8+)--train.async_enable
Agent RL(0.8+)--train.agent_func_path 自定义 multi-turn
VLM 支持视觉模型 RL
TIS(Token-level Importance Sampling)长 trajectory 稳定

3.3 最简代码

python -m openrlhf.cli.train_ppo \
    --pretrain Qwen/Qwen2.5-7B \
    --reward_funcs rewards.math_reward \
    --train_data data/math.jsonl \
    --advantage_estimator group_norm \
    --group_size 16 \
    --train.async_enable \
    --train.agent_func_path agents/search_agent.py \
    --gradient_checkpointing \
    --bf16

3.4 与 verl 的对比

维度verlOpenRLHF
配置YAML(详尽)命令行参数(简洁)
哲学一体化(HybridFlow)模块化(Ray Actor 拼装)
性能2.35-2.67× async1.8-2.2× async
学习曲线
灵活定制
适合工业生产研究 / 算法实验

3.5 适合谁

  • 研究人员(快速实验新算法)
  • 中等规模训练(4-32 GPU)
  • 想自定义 agent rollout 逻辑

4. TRL — HuggingFace 入门

GitHub: github.com/huggingface/trl

4.1 设计哲学

“让用 HuggingFace 的人零摩擦上手 RL。“

4.2 算法支持

PPO、DPO、GRPO、ORPO、KTO、CPO、SimPO…几乎你能想到的偏好/RL 算法都有。

4.3 最简代码(GRPO)

from datasets import load_dataset
from trl import GRPOConfig, GRPOTrainer

dataset = load_dataset("openai/gsm8k", "main", split="train")

def reward_func(completions, **kwargs):
    """简单的数学 verifier。"""
    rewards = []
    for completion, ground_truth in zip(completions, kwargs["answer"]):
        reward = 1.0 if extract_answer(completion) == ground_truth else 0.0
        rewards.append(reward)
    return rewards

config = GRPOConfig(
    output_dir="qwen-math-grpo",
    learning_rate=1e-6,
    num_generations=16,
    per_device_train_batch_size=2,
    bf16=True,
    num_train_epochs=2,
)

trainer = GRPOTrainer(
    model="Qwen/Qwen2.5-7B",
    reward_funcs=reward_func,
    train_dataset=dataset,
    args=config,
)
trainer.train()

20 行代码跑通——入门首选

4.4 优劣

极易上手(HuggingFace 用户零摩擦) ✅ 算法覆盖全HF 生态深度集成(datasets / accelerate / trainer)

大规模训练性能不如 verl(没有 async / IPC 等优化) ❌ multi-turn agent RL 支持弱(主要面向 single-turn)

4.5 适合谁

  • 入门学习 RL
  • 单卡 / 几卡训练
  • 文本 RL(non-agentic)

5. NeMo-RL — NVIDIA 企业栈

官方文档: docs.nvidia.com/nemo/rl

5.1 设计哲学

“企业级训练,与 NeMo 栈深度集成。”

NVIDIA 出品,主要面向企业用户——和 NeMo Megatron / NeMo Curator(数据处理)/ NeMo Skills(SFT)无缝衔接。

5.2 关键特性

特性说明
GRPO / PPO / DPO主流算法
Megatron 后端TP / PP / SP 全套并行
NIM 部署训完直接 NIM 服务
企业 SLANVIDIA 商业支持

5.3 适合谁

  • 已用 NeMo Megatron 训练栈
  • 大企业需要厂商支持
  • DGX SuperPOD 用户

不适合中小团队(企业级开销大)。


6. Unsloth RL — 单卡省显存

GitHub: github.com/unslothai/unsloth

6.1 设计哲学

“单 GPU 也能玩 RL,QLoRA + GRPO。”

Unsloth 把 LoRA + 4-bit 量化 + GRPO 组合,消费级 GPU 训 7B-14B 模型可行

6.2 最简代码

from unsloth import FastLanguageModel
from trl import GRPOConfig, GRPOTrainer

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Qwen2.5-7B",
    max_seq_length=2048,
    load_in_4bit=True,   # ← 4-bit
)
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_alpha=16,
)

# GRPO 配置同 TRL
trainer = GRPOTrainer(model=model, ...)
trainer.train()

6.3 优劣

单 4090 / A6000 跑 7B GRPO(显存 < 24GB) ✅ 训练快 2-5×(Unsloth 内核优化) ✅ Colab 友好

❌ LoRA 训练效果略差于 full FT ❌ 不支持大规模 multi-node

6.4 适合谁

  • 个人开发者 / 学生
  • 24-48GB 单卡资源
  • 实验性项目

7. Axolotl RL — YAML 驱动

GitHub: github.com/OpenAccess-AI-Collective/axolotl

7.1 设计哲学

“配置即代码,YAML 一切。”

Axolotl 强调完全配置式训练——不写一行 Python 代码,YAML 配好直接跑。

7.2 配置示例

base_model: Qwen/Qwen2.5-7B
load_in_4bit: true

datasets:
  - path: my_grpo_data.jsonl
    type: grpo

rl: grpo
grpo:
  group_size: 16
  reward_funcs:
    - my_module.math_reward

learning_rate: 1e-6
num_epochs: 3
axolotl train config.yaml

7.3 适合谁

  • 喜欢声明式配置的人
  • 快速复现别人的训练
  • 部署到自动化 pipeline

8. DAPO / Verl-Tool — 专题改进

8.1 DAPO

ByteDance Seed 团队 2025 的论文+system,专门改进 GRPO 在 long sequence 上的表现:

  • Clip-Higher
  • Token-level Loss
  • Dynamic Sampling
  • Overlong Reward Shaping

不是独立框架,而是一组可以接入 verl / OpenRLHF 的 recipe。配套官方 codebase 可复现 paper 数字。

8.2 Verl-Tool

中科大主导,基于 verl 的tool RL 专用扩展:

  • 内置 30+ tool stub
  • Async rollout 优化(2× 加速针对 tool)
  • e2b sandbox 集成
  • 多 task 训练

如果你做 tool RL,Verl-Tool 比纯 verl 起手更快


9. 能力矩阵与选型决策

9.1 能力矩阵

维度verlOpenRLHFTRLNeMo-RLUnslothAxolotlDAPOVerl-Tool
GRPO★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
DPO★★★★★★★★★★★★★★★★★★★★★★★★★★★
Async rollout★★★★★★★★★★★★★★★★★
Multi-turn agent★★★★★★★★★★★★★★★★★★★★★★★★
Tool RL★★★★★★★★★★★★★★★★★★
VLM RL★★★★★★★★★★★★★★★★★★★★★
大规模(64+ GPU)★★★★★★★★★★★★★★★★★★★★★★★★★
单卡★★★★★★★★★★★★★★★
学习曲线极低
生态成熟度极高

9.2 选型决策树

你的场景?

├─ 入门 / 单卡 / 学习
│   └─ Unsloth + TRL(QLoRA + GRPO,Colab 可跑)

├─ 研究新算法,要灵活
│   └─ OpenRLHF

├─ 中小规模生产(4-32 GPU)
│   ├─ HuggingFace 栈用户 → TRL + Accelerate
│   └─ Ray 用户 → OpenRLHF

├─ 大规模生产(64+ GPU)
│   ├─ 通用 → verl
│   ├─ NeMo 栈用户 → NeMo-RL
│   └─ Tool RL 重度 → Verl-Tool

├─ 复现 SOTA paper(尤其 R1 / DAPO)
│   └─ DAPO 配套 codebase + verl

└─ 喜欢 YAML 声明式
    └─ Axolotl

9.3 双栈策略(实际工业)

很多团队同时用多个框架,各取所长:

阶段用什么
算法实验 / 论文复现TRL 或 OpenRLHF(快迭代)
中小规模验证OpenRLHF
生产级大规模训练verl
移植到产品 / 部署NeMo-RL(NVIDIA 栈)或自研

🍎 2026 共识:入门用 TRL,研究用 OpenRLHF,生产用 verl——这是当前最稳的 3 件套。


✅ 自我检验清单

  • 8 框架一句话:能用一句话总结每个框架的设计哲学
  • verl 关键技术:能说出 HybridFlow / Fully Async / IPC weight sync
  • OpenRLHF 灵活点:能解释 agent_func_path 怎么自定义 multi-turn rollout
  • TRL 入门简洁度:能写 < 30 行 GRPO 代码跑数学任务
  • NeMo-RL 适用:能说出 NVIDIA 栈用户的好处
  • Unsloth 单卡:能写 QLoRA + GRPO 配置在 24GB 卡上训 7B
  • Axolotl YAML:能写一份完整 GRPO YAML
  • DAPO recipes:能列出 DAPO 4 项改进
  • Verl-Tool:能说出 tool RL 场景为什么选它
  • 能力矩阵:能从内存里画出 5 个核心能力 × 3-4 个框架的对比
  • 选型决策:面对 5 个具体场景,2 分钟内给出推荐

📚 参考资料

官方文档与代码

横向对比

  • OpenRLHF vs veRL: Ray Framework Deep Dive (2025):博文
  • Open Source RL Libraries for LLMs (Anyscale):博文
  • Anatomy of RL Frameworks (Hanif Leoputera):博文
  • OpenRLHF EMNLP demos paper:paper