Welcome to VeRL-Omni’s documentation!
Last updated: 05/29/2026
VeRL-Omni is a general RL training framework focused on multimodal generative models, built on top of verl. It originated from the multi-modal generation RL effort in verl, and now has a dedicated home so it can evolve in a more focused way.
Scope
VeRL-Omni targets RL post-training for three families of generative models:
Diffusion generative models for image, video, and audio — e.g., Qwen-Image, Wan2.2.
Unified multimodal understanding + generation models — e.g., BAGEL, HunyuanImage-3.0.
Omni-modality models that jointly handle text, image, audio, and video — e.g., Qwen3-Omni.
Key capabilities
Specialized rollout via vLLM-Omni for high-throughput diffusion and multimodal generation.
Flexible reward pipelines spanning rule-based rewards, model-based rewards, and multimodal reward computation.
Modular training backends that plug into existing parallelism (FSDP, USP) and other optimizations rather than rebuilding the stack from scratch.
End-to-end examples and benchmarks validating co-located sync and fully-async RL on the model families above.
High training throughput — on our reference Qwen-Image FlowGRPO setup, VeRL-Omni achieves up to ~25% higher end-to-end throughput than the diffusers-based
flow_grporeference implementation, driven by vLLM-Omni rollout, FSDP/USP training, and asynchronous reward computation on a dedicated GPU pool.
Getting Started
Advanced Features
Algorithms
Performance Tuning Guide
Contribution
VeRL-Omni is free software; you can redistribute it and/or modify it under the terms of the Apache License 2.0. We welcome contributions. Join us on GitHub for discussions.
See the 2026 Q2 roadmap for planned work.
Code Linting and Formatting
We use pre-commit to help improve code quality. To initialize pre-commit, run:
pip install pre-commit
pre-commit install
To resolve CI errors locally, you can also manually run pre-commit by:
pre-commit run
Adding CI tests
If possible, please add CI test(s) for your new feature. Pick the most relevant workflow from .github/workflows/:
Workflow |
When to use |
|---|---|
|
New tests that run without a GPU (file name must end with |
|
GPU-requiring tests for trainer, worker, rollout, or agent-loop changes |
|
Same as above, but pinned against the latest |
|
Static / import-level checks under |
Steps:
Place your test file in the appropriate directory under
tests/(e.g.tests/trainer/,tests/workers/,tests/agent_loop/).Open the chosen workflow yml and add any missing path patterns to its
pathssection so the workflow triggers on your changes.Keep the test as lightweight as possible — use small models, reduced steps, and CPU where feasible (see existing
*_on_cpu.pyscripts for examples).