<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VeRL on Fain的Blog</title><link>https://Koas-W.github.io/tags/verl/</link><description>Recent content in VeRL on Fain的Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 21 Apr 2026 18:24:07 +0800</lastBuildDate><atom:link href="https://Koas-W.github.io/tags/verl/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM 学习日志 #5 后训练框架：veRL、OpenRLHF、TRL和NeMo</title><link>https://Koas-W.github.io/posts/20260421-posttrain/</link><pubDate>Tue, 21 Apr 2026 18:24:07 +0800</pubDate><guid>https://Koas-W.github.io/posts/20260421-posttrain/</guid><description>&lt;p&gt;上一篇博客系统性的整理和介绍了“预训练框架”，那么接下来就是“后训练框架”了。如果读者了解过的话，可以知道这个领域一个很有意思的现象：在“后训练框架”中，中国的社区、开发者和公司所占据的影响力和份额比预训练框架要高得多的多。这很大程度上要归功于Deepseek这一家公司：DeepSeek-R1几乎以一己之力引爆了RLVR的热潮，而GRPO也是DeepSeek提出的，这两个贡献直接定义了当前后训练的主流方向。随着Qwen、Seed的快速追赶，中国的相关实体在这一领域的早期贡献产生了明显的奠基者效应。在接下来的介绍中，将会更深刻的体会到这一点。我们将从一些先前遗漏的（因为较为不重要，或者较为陈旧了）较为小的后训练专用技术开始，随后扩展到当前的主流框架都有哪些。&lt;/p&gt;
&lt;p&gt;⚠️注意事项：这部分我也是初学，许多内容原本不甚了解，因此大量参考了网络资料和其他在线内容进行学习后整理，供读者参考。如有问题，欢迎指出。&lt;/p&gt;
&lt;h2 id="一些后训练技术"&gt;一些后训练技术
&lt;/h2&gt;&lt;h3 id="peftparameter-efficient-fine-tuning"&gt;PEFT（Parameter-Efficient Fine-Tuning）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Prefix/Prompt-Tuning&lt;/strong&gt;：在模型的输入或隐层添加$k$个额外可训练的前缀tokens（这些前缀是连续的伪tokens，是在Embedding空间内可微梯度下降训练找到的，不对应真实的tokens），只训练这些前缀参数；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adapter-Tuning&lt;/strong&gt;：将较小的神经网络层或模块插入预训练模型的每一层，这些新插入的神经模块称为adapter（适配器），下游任务微调时也只训练这些适配器参数；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LoRA&lt;/strong&gt;：通过学习小参数的低秩矩阵来近似模型权重矩阵$W$的参数更新，训练时只优化低秩矩阵参数。&lt;/p&gt;
&lt;p&gt;历史上这三种方法几乎同期出现（2021-2022 年），但LoRA最终成为事实标准，原因是几个优势的叠加：推理零开销（合并后消失）、实现简单（包一层wrapper就行）、效果最好（直接改权重比改输入或加模块更有效）、和量化技术的配合更自然（QLoRA）。&lt;/p&gt;
&lt;h2 id="openrlhf开源jian-hu等"&gt;OpenRLHF（开源，Jian Hu等）
&lt;/h2&gt;&lt;p&gt;以&amp;quot;简洁 + 高性能&amp;quot;的平衡为核心的开源 RLHF 框架，代码量最小但性能不输重量级方案。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：面向学术研究者和想深入理解 RLHF 工程的开发者。核心卖点是代码精简易读（约 8,500 行），同时通过 Ray + vLLM + DeepSpeed 的组合实现了工业级性能。已被多所大学课程采用为教学框架。适合的场景是从单机到多机的 RLHF/RLVR 训练，模型规模支持到 70B+。不适合的场景是需要 Megatron 后端做超大规模训练的场景（只支持 DeepSpeed）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;组成&lt;/strong&gt;：Python + PyTorch，核心依赖三个组件——Ray（分布式编排和 GPU 资源调度）、vLLM（高效 rollout generation，支持 AutoTP 和 PP）、DeepSpeed ZeRO-3（训练端显存优化）。架构上为每个模型（Actor/Critic/Reward/Ref）分配独立的 worker group，通过 Ray 调度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有什么&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;算法方面：PPO、REINFORCE++、REINFORCE++-baseline、GRPO、RLOO、DAPO、SFT、DPO、Reward Model 训练。&lt;/p&gt;
&lt;p&gt;推理引擎：集成 vLLM，支持 AutoTP 和 PP，rollout 吞吐量很高。&lt;/p&gt;
&lt;p&gt;分布式方面：基于 Ray 的灵活 GPU 分配，Hybrid Engine 支持所有模型和 vLLM 引擎共享 GPU 资源。支持 DeepSpeed ZeRO-3、deepcompile、AutoTP、RingAttention。&lt;/p&gt;
&lt;p&gt;高级特性：异步 RL 训练（async_train）、异步 agent RL、统一的 token-in-token-out agent 执行范式（SingleTurn 和 MultiTurn 统一接口）、VLM RLHF（支持 Qwen3.5 等视觉语言模型）、多 agent RL（MARTI 基于 OpenRLHF 构建）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有什么/不足&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;训练后端只支持 DeepSpeed，不支持 FSDP 和 Megatron。多轮 agent RL 的支持相对较新，成熟度不如单轮场景。没有专门的环境接口（需要通过 agent_func_path 自定义）。&lt;/p&gt;
&lt;h2 id="verl火山引擎bytedance"&gt;veRL（火山引擎，ByteDance）
&lt;/h2&gt;&lt;p&gt;为性能和灵活性而生的 RLHF 框架，支持最多的训练后端和最高的显存效率。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：面向需要大规模 RLHF/RLVR 训练的工业团队和高级研究者。核心卖点是灵活的多后端架构和 resharding 机制。适合的场景是大规模训练（支持到数千 GPU）、需要 Megatron 后端的超大模型训练、需要精细控制训练-推理资源分配的场景。不适合的场景是快速原型验证（代码复杂度高、上手门槛大）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;组成&lt;/strong&gt;：Python + PyTorch，核心依赖 Ray（编排）+ vLLM（推理）。训练后端灵活——同时支持 FSDP、DeepSpeed 和 Megatron Core 三种选择。核心创新是 WorkerDict（把多个模型放在同一组 worker 上共享资源）和 HybridEngine（同一组 GPU 上在训练和推理模式之间动态切换）。代码量约 32,000 行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有什么&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;算法方面：PPO、GRPO、REINFORCE、SFT、DPO、Reward Model 训练。&lt;/p&gt;
&lt;p&gt;训练后端：FSDP + DeepSpeed + Megatron Core 三选一（其他框架最多支持一到两个）。&lt;/p&gt;
&lt;p&gt;推理引擎：集成 vLLM。&lt;/p&gt;
&lt;p&gt;核心创新——Resharding：在训练和推理之间动态转换参数的并行分布方式（比如训练时用 FSDP 的 sharding，推理时转成 TP），实现最高的显存效率。In-place transformation 避免了多余的参数拷贝。&lt;/p&gt;
&lt;p&gt;分布式方面：基于 Ray 的 WorkerDict 架构，多个模型共享同一组 GPU，资源利用率高于 OpenRLHF 的独立 worker group 方案。&lt;/p&gt;
&lt;p&gt;高级特性：支持 agentic mode（多轮 RL）。&lt;/p&gt;
&lt;p&gt;特别值得一提的贡献：HybridEngine + resharding 的设计思想影响了后续很多框架，veRL 的论文（HybridFlow）发表在 EuroSys'25。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有什么/不足&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;代码复杂度最高（32,000 行），上手门槛大。resharding 引入了额外的延迟（虽然显存效率最高）。文档和教程不如 TRL 和 OpenRLHF 完善。异步 RL 的支持不如 OpenRLHF 成熟。VLM RLHF 支持相对较新。&lt;/p&gt;
&lt;h2 id="trltransformers-reinforcement-learninghuggingface"&gt;TRL（Transformers Reinforcement Learning，HuggingFace）
&lt;/h2&gt;&lt;p&gt;HuggingFace 官方的后训练库，以易用性和生态集成为核心卖点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：面向不想深入分布式细节、只想快速跑通后训练流程的研究者和应用开发者。最适合的场景是在 HuggingFace 生态内做 SFT/DPO/GRPO 实验，模型规模在 7B-70B，硬件在 1-8 卡。不适合的场景是需要大规模分布式 RLHF（多模型协调）、需要高吞吐 rollout generation、或者需要灵活的多轮 agent RL 的场景。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;组成&lt;/strong&gt;：Python + PyTorch，深度集成 HuggingFace Transformers + PEFT（LoRA/QLoRA）+ Accelerate（封装了 FSDP/DeepSpeed 做分布式）+ Datasets。不直接集成 vLLM 等高效推理引擎。代码量约 19,000 行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有什么&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;算法方面：SFT、DPO、SimPO、KTO、PPO、GRPO、RLOO、Reward Model 训练、Online DPO。&lt;/p&gt;
&lt;p&gt;PEFT 集成：原生支持 LoRA、QLoRA（通过 PEFT 库），可以一行代码启用。&lt;/p&gt;
&lt;p&gt;分布式方面：通过 Accelerate 支持 FSDP 和 DeepSpeed 后端，但用户不需要直接接触底层。&lt;/p&gt;
&lt;p&gt;易用性方面：和 HuggingFace Hub 无缝对接（数据集加载、模型推送），Trainer 风格的 API，配置简单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有什么/不足&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;没有集成 vLLM 等高效推理引擎，PPO rollout 阶段用的是 HuggingFace 的原生 generate，吞吐量远低于 vLLM。没有 Ray 等分布式编排，多模型（Actor/Critic/Reward/Ref）的 GPU 分配不灵活。不原生支持多轮 RL 和任意环境交互。不支持 Megatron 后端。不支持异步 RL。整体大规模训练效率不如 OpenRLHF 和 veRL。&lt;/p&gt;
&lt;h2 id="其他值得注意的后训练框架"&gt;其他值得注意的后训练框架
&lt;/h2&gt;&lt;h3 id="nemo-rl"&gt;NeMo RL
&lt;/h3&gt;&lt;p&gt;NVIDIA 官方的后训练引擎，NeMo-Aligner 的下一代替代品，面向企业级部署。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：面向使用 NVIDIA 基础设施的企业团队，需要一站式、有官方支持的后训练方案。适合的场景是在 DGX 集群 / SLURM / Kubernetes 上做大规模后训练，需要和 NeMo 生态（Curator、Evaluator、Guardrails、NIM 部署）打通。不适合的场景是个人研究者或小团队快速实验（太重、依赖太多）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;组成&lt;/strong&gt;：Python + PyTorch，底层训练用 Megatron Core，编排用 Ray，和 HuggingFace 有一定程度的集成。是 NeMo 全家桶的一部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有什么&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;高性能 Megatron Core 后端，支持各种并行策略。支持端到端 FP8 训练。支持异步 RL。和 NeMo Gym（RL 训练环境库）配合。支持和 TRL、veRL 的互操作。被用于训练 Nemotron 3 模型家族。结构化数据流设计、清晰的接口定义。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有什么/不足&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;生态相对封闭（深度绑定 NVIDIA 全家桶）。社区活跃度和开源影响力不如 OpenRLHF 和 veRL。安装和配置复杂（推荐用 NGC 容器）。文档在 NeMo 重组过程中仍在完善。&lt;/p&gt;
&lt;h3 id="deepspeed-chat"&gt;DeepSpeed-Chat
&lt;/h3&gt;&lt;p&gt;最早的完整 RLHF 开源方案之一，但维护停滞，逐渐被取代。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：历史上是第一个把 SFT → Reward Model → PPO 全链路打通的开源方案，对 RLHF 工程的普及有重要贡献。但现在已经不推荐新项目使用——社区维护活跃度低，bug 多，性能不如 OpenRLHF 和 veRL。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;组成&lt;/strong&gt;：Python + PyTorch + DeepSpeed ZeRO。不使用 Ray 做编排（用 DeepSpeed 自己的 engine），不集成 vLLM（rollout 用自己的推理实现）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有什么&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;完整的 SFT → Reward Model → PPO 三阶段 pipeline。和 DeepSpeed ZeRO 深度集成。Hybrid Engine（在同一 GPU 上切换训练和推理模式）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有什么/不足&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;不支持 GRPO、DPO、RLVR 等较新的算法。不集成 vLLM，rollout 吞吐量低。不使用 Ray，GPU 资源调度不灵活。不支持异步 RL、多轮 agent RL。社区广泛反映的问题包括：配置复杂、调试困难、某些场景下训练不收敛。&lt;/p&gt;
&lt;h3 id="chatlearn"&gt;ChatLearn
&lt;/h3&gt;&lt;p&gt;阿里内部的后训练框架，开源但社区影响力有限。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：面向阿里内部及其云服务用户。支持 RLHF 的多模型编排和训练。在阿里内部有一定使用，但在开源社区中的采用率和讨论度远低于 OpenRLHF 和 veRL。&lt;/p&gt;
&lt;h2 id="后训练框架核心特性汇总表"&gt;后训练框架核心特性汇总表
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;特性 TRL OpenRLHF veRL NeMo RL DS-Chat
─────────────────────────────────────────────────────────────────────────────────────
维护方 HuggingFace 社区(中国) ByteDance NVIDIA Microsoft
代码量 ~19K ~8.5K ~32K - -
定位 易用生态 简洁高性能 灵活极致性能 企业级 已过时

SFT ✓ ✓ ✓ ✓ ✓
DPO/SimPO/KTO ✓ ✓ ✓ ✓ ✗
PPO ✓ ✓ ✓ ✓ ✓
GRPO ✓ ✓ ✓ ✓ ✗
REINFORCE++ ✗ ✓ ✗ ✗ ✗
RLOO ✓ ✓ ✗ ✗ ✗
DAPO ✗ ✓ ✓ ✗ ✗
Reward Model训练 ✓ ✓ ✓ ✓ ✓

推理引擎集成
 vLLM ✗ ✓ ✓ ✗ ✗
 自有推理 HF generate - - Megatron推理 DS推理

分布式编排
 Ray ✗ ✓ ✓ ✓ ✗
 自有编排 Accelerate - - - DS Engine

训练后端
 FSDP ✓(Accelerate)✗ ✓ ✗ ✗
 DeepSpeed ✓(Accelerate)✓(ZeRO-3) ✓ ✗ ✓
 Megatron Core ✗ ✗ ✓ ✓ ✗

LoRA/QLoRA ✓(PEFT) ✓ ✓ ✓(PEFT) ✗
异步RL ✗ ✓ 部分 ✓ ✗
多轮Agent RL ✗ ✓ ✓(agentic) ✓(NeMo Gym) ✗
VLM RLHF ✗ ✓ 部分 ✓ ✗
FP8训练 ✗ ✗ ✗ ✓ ✗

GPU资源共享
 (Hybrid Engine) ✗ ✓ ✓(WorkerDict) ✓ ✓
Weight Sync方式 - NCCL/IPC Resharding Megatron内部 共享内存

易用性 最高 高 中 低 低
学习/教学价值 中 最高 中 低 低(已过时)
社区活跃度 高 很高 很高 中 低
─────────────────────────────────────────────────────────────────────────────────────
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>