Library / SDK
verl-project/verl avatar
verl-project/verl

verl: A HybridFlow-Based RL Post-Training Framework for LLMs

verl/HybridFlow: A Flexible and Efficient RL Post-Training Framework.

23,438 stars4,543 forksPythonApache-2.0

At a glance

What is it?
verl is an open-source RL post-training library from ByteDance Seed, built on the HybridFlow architecture. It targets teams that need flexible, production-ready RL dataflows for large language models, with a focus on throughput and device mapping.
Who is it for?
Adopt verl if you are a research or production team that needs a flexible, high-throughput RL post-training framework for LLMs, especially if you already use HuggingFace models or Megatron-LM. Do not adopt it if you require a minimal, single-GPU setup or prefer a simpler, less configurable library.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem: RL Post-Training Dataflows Are Hard to Build and Scale

The core problem is that RL post-training is not a single training loop. It is a dataflow that interleaves rollout generation, reward computation, and policy updates, often across multiple GPUs. Traditional frameworks couple these steps, making it hard to change the algorithm or the hardware layout. verl decouples computation from data dependencies, so you can build a GRPO or PPO dataflow with a few lines of code. This is aimed at teams that need to iterate on RL algorithms at scale, not just run a fixed pipeline. The README stresses flexibility and production readiness, which means it targets both research and deployment use cases.

HybridFlow: A Hybrid-Controller Programming Model

The architecture of verl is based on the HybridFlow paper, which the README cites as the foundation. The hybrid-controller model splits the RL dataflow into a control plane and an execution plane. The control plane, written in Python, defines the high-level sequence of operations, such as 'generate rollouts', 'compute rewards', 'update policy'. The execution plane handles the actual tensor operations, which are delegated to existing LLM infrastructure like FSDP or Megatron-LM. This separation is what allows verl to integrate with multiple backends without changing the algorithm code. For example, the same GRPO dataflow can run on a Megatron backend for dense models or a vLLM backend for rollout generation. The README also mentions 3D-HybridEngine, which reshard the actor model between training and generation phases. This reduces memory redundancy and lowers communication overhead, a key performance feature for large models.

Getting Started: Real Commands and Configuration

The README does not provide a full installation guide, but it points to the documentation at verl.readthedocs.io. The repository is on GitHub, and you can clone it with `git clone https://github.com/verl-project/verl.git`. The README notes that the `recipe` directory is a submodule, so after cloning you need to run `git submodule update --init --recursive recipe` to get the recipes. The library is Python-based, so you would typically install it with `pip install verl` or build from source, but the README does not specify the exact command. For configuration, the README mentions that verl integrates with HuggingFace models, so you can use a model name like `Qwen2.5-32B` in your config. The documentation likely provides a YAML config file for each algorithm, but the README does not show one. You should check the docs for the exact CLI entry point, such as `verl.train` or a script like `examples/grpo_train.py`. The README also mentions experimental modules under `verl.experimental`, which you can import directly, e.g., `from verl.experimental.vla import ...`. For a quick start, the README suggests using the recipe submodule, which contains ready-to-run examples. Without the full README, the safest path is to read the official documentation before running anything.

Performance and Scalability: What the Claims Actually Say

The README makes strong performance claims: 'State-of-the-art throughput' and 'SOTA RL throughput'. It also highlights the 3D-HybridEngine for efficient actor resharding, which reduces memory redundancy and communication overhead during transitions between training and generation. These are concrete mechanisms, but the README does not provide benchmark numbers. You cannot verify the throughput claims from this material alone. What is clear is that verl is designed for large-scale training, with support for MoE models like DeepSeek-671B and Qwen3-235B when using the Megatron backend. It also supports flexible device mapping, meaning you can place different models (actor, critic, reward) on different sets of GPUs. This is important for clusters with heterogeneous GPU sizes. The mention of a trillion-parameter model trained on 64 H800 using verl and Megatron-bridge, as reported by Mind Lab, gives a concrete example of its scalability. However, that is a third-party report, not a benchmark from the verl team. So, the performance story is plausible but must be validated with your own tests.

Integration with Existing LLM Infrastructure

One of verl's selling points is that it does not reinvent the wheel for model training and inference. It integrates with FSDP, Megatron-LM, vLLM, and SGLang. This means you can use the best tool for each phase: Megatron for large-scale training, vLLM for fast rollout generation, and FSDP for simpler setups. The README states that this integration is 'seamless' and that verl decouples computation and data dependencies, which is the key to making these integrations work. For example, the Megatron backend enables training MoE models at scale, while the vLLM integration handles the generation phase. This modularity is a real advantage over monolithic RL frameworks. However, it also means you need to be familiar with these underlying frameworks. If you are new to Megatron or vLLM, there is a learning curve. The README also mentions a Megatron backend LoRA and router replay support, which was showcased at PyTorch Conference Europe 2026, indicating active development in this area.

Limitations and Wrong-Tool Scenarios

verl is a large, complex framework. It is not designed for small-scale experimentation on a single GPU. The README emphasizes production readiness and large clusters, so if you are a hobbyist or a small team with limited compute, verl is likely overkill. Another limitation is that the README is truncated, so you cannot see the full list of supported algorithms or the exact configuration options. The experimental modules, such as `transfer_queue`, `fully_async_policy`, `one_step_off_policy`, and `vla`, are not yet merged into the main library. Using them means you are on the bleeding edge, and they may have bugs or breaking changes. The README also notes that the `recipe` directory has been moved to a separate repository and is added as a submodule. This adds a step to the setup process. If you forget to initialize the submodule, you will miss examples. Finally, the performance claims are not backed by published benchmarks in the README, so you cannot assume the SOTA throughput without testing it on your workload.

Alternatives: What Else Is Out There

The most direct alternative is NVIDIA's NeMo-Aligner or the open-source TRL (Transformer Reinforcement Learning) library. TRL is a simpler, HuggingFace-native library that focuses on PPO and DPOT, but it does not offer the same level of scalability or the hybrid-controller abstraction. TRL is easier to get started with, especially for single-node experiments, but it may struggle with large-scale distributed RL. Another alternative is Ray's RLlib, which provides a general RL framework but is not specifically optimized for LLM post-training. The key difference is that verl is built from the ground up for LLM RL, with a focus on dataflow flexibility and integration with LLM-specific infrastructure like vLLM and Megatron. TRL, in contrast, is more of a lightweight wrapper around HuggingFace models. If you need production-grade scale and are willing to invest in learning a more complex framework, verl is a better fit. If you need a quick experiment on a single GPU, TRL is more appropriate.

Maintenance, License, and Upgrade Cost

verl is licensed under Apache-2.0, which is permissive and allows commercial use, modification, and distribution, with the requirement to retain copyright notices. The project is actively maintained, with a recent release v0.9.0 on 2026-08-14 and a consistent release cadence (v0.8.0 in June, v0.7.1 in March). This suggests regular updates and bug fixes. However, the rapid release cycle also means that APIs can change between versions. The README notes that the recipe directory has been migrated to a separate repository and is now a submodule, which is a structural change that could require users to update their setup. The experimental modules are planned to be merged into the main library, so you may need to adjust imports in the future. The upgrade cost is moderate: you should monitor release notes and test your existing configs after each version bump. The documentation is hosted on ReadTheDocs, which is a good sign for long-term usability. Overall, the maintenance is active, but you should be prepared for occasional breaking changes.

Editorial conclusion

Adopt verl if you are a research or production team that needs a flexible, high-throughput RL post-training framework for LLMs, especially if you already use HuggingFace models or Megatron-LM. Do not adopt it if you require a minimal, single-GPU setup or prefer a simpler, less configurable library. Before adopting, verify that your target RL algorithm (e.g., GRPO, PPO) is supported in the current version, and check the compatibility of your model with the chosen backend (FSDP, Megatron, vLLM, SGLang). Also, confirm that the experimental modules you need (e.g., transfer_queue, vla) are stable enough for your use case, as they are not yet merged into the main library.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes