【免费下载链接】verl-omni
Multimodal RL training framework for diffusion & omni models
本文带你用VeRL-Omni多模态强化学习训练框架,对Qwen3-Omni 全模态模型进行 RL 后训练,逐一解析 GSPO、DAPO、DPO 三套官方训练配方:从数据准备、一键启动脚本,到验证指标与显存配置,帮助你在 4 张 H800 上跑通多模态 RL 全流程。
为什么选择 VeRL-Omni 做多模态 RL 后训练
VeRL-Omni 是一个专注于多模态生成式模型的 RL 训练框架,基于verl构建,核心解决三类模型的强化学习后训练问题:
- Diffusion 生成模型(Qwen-Image、Wan2.2 等文生图/视频/音频模型)
- 统一理解+生成模型(BAGEL 等)
- 全模态模型(Qwen3-Omni,同时处理文本、图像、音频、视频)
对 Qwen3-Omni-30B-A3B 的 Thinker 部分,官方提供了三套已验证的算法配方,覆盖"在线生成→打分→更新"的完整 RL 闭环和"离线偏好对"的对齐路线:
| 配方 | 算法 | 数据来源 | 适用场景 | 官方入口 |
|---|---|---|---|---|
| GSPO | 序列级策略梯度 + GRPO 优势 | 在线 rollout + 规则奖励 | 数学/视觉/音视频推理任务 | examples/gspo_trainer/README.md |
| DAPO | token 级策略损失 + 非对称裁剪 | 在线 rollout + 选择题奖励 | 多模态选择题(AVQA)稳定训练 | examples/dapo_trainer/README.md |
| DPO | 离线直接偏好优化 | Omni-Preference 偏好对 | 图像/视频/音频偏好对齐 | examples/dpo_trainer/README.md |
下面这张架构图展示了 VeRL-Omni 的整体分层:上层是算法训练器(FlowGRPO、Omni-PPO、DPO),中层是 Actor 引擎与 TransferQueue 训练系统,下层由 vLLM-Omni 负责多模态 rollout,Reward Engine 对生成结果进行视觉/音频打分。
GSPO 配方:一条命令覆盖 4 种模态任务
GSPO(Group Sequence Policy Optimization)配方是 Qwen3-Omni 的主力在线 RL 配方,官方提供了 4 种输入任务,全部复用同一套 GSPO loss + GRPO 优势估计,只切换数据集和奖励函数:
| 任务 | 模态输入 | 数据集 | 启动脚本 |
|---|---|---|---|
| 数学推理 | 文本 → 文本 | GSM8K | run_qwen3_omni_thinker_gspo_lora_v1.sh |
| 视觉数学 | 图像 → 文本 | MMK12 | run_qwen3_omni_thinker_gspo_lora_mmk12_v1.sh |
| 音视频问答 | 文本+图像+音频 → 文本 | AVQA-R1-6K | run_qwen3_omni_thinker_gspo_lora_avqa_v1.sh |
| 视频问答 | 视频帧+音轨+文本 → 文本 | NExT-QA(NPU 全参) | run_qwen3_omni_thinker_gspo_npu_nextqa_v1.sh |
三步跑通 GSM8K 数学任务
安装环境:在 安装指南 的基础上追加 omni 与 flash attention 2 依赖:
uv pip install -e ".[omni,fa2]"准备数据:用 verl 的 GSM8K 转换脚本生成
~/data/gsm8k/{train,test}.parquet。启动训练(4 × H800 80GB,LoRA r=32):
bash examples/gspo_trainer/qwen3_omni/run_qwen3_omni_thinker_gspo_lora_v1.sh
脚本采用"默认值 + CLI 覆盖"的 Hydra 配置模式,任何参数都能在命令行直接覆盖,无需改脚本,例如:
MODEL_PATH=/local/Qwen3-Omni-30B-A3B-Instruct \ bash examples/gspo_trainer/qwen3_omni/run_qwen3_omni_thinker_gspo_lora_v1.sh \ trainer.total_epochs=10 actor_rollout_ref.actor.optim.lr=2e-6只训练 Thinker:LoRA 精准打点
所有 GSPO/DAPO 配方都遵循同一个参数策略——只训练 Thinker 的语言主干,冻结其余模块:
- LoRA rank 32 / alpha 64,挂在
q_proj/k_proj/v_proj/o_proj四个注意力投影上 exclude_modules剔除 Talker、code2wav、code_predictor、visual、audio_towerfreeze_vision_tower=True冻结视觉编码器
模型适配逻辑由注册好的 V1 adapter 处理(verl_omni/pipelines/qwen3_omni/thinker_training_adapter.py),自动把前向重定向到 Thinker,无需手写 monkey-patch。
多模态数据如何接入
音频/视频任务需要音频感知的数据集类。以 AVQA(文本+图像+音频四选一问答)为例,先用转换器生成 parquet:
python examples/gspo_trainer/data_process/avqa.py \ --input_dir /path/to/AVQA_R1 --output_dir ~/data/avqa_r1_6k关键配置三处:data.custom_cls指向 QwenOmniRLHFDataset(解析<audio>占位符并加载 WAV)、采样率 16000、以及 colocated 场景下的 rollout 显存调优(gpu_memory_utilization=0.7、prompt_length=4160等,详见 omni 模型集成指南)。奖励函数统一从响应中提取<answer>…</answer>标签做精确匹配打分,实现见 verl_omni/utils/reward_score/choice_reward.py。
官方验证的性能与"健康信号"
官方在单节点 4 × H800(LoRA r=32,batch 128 × rollout.n 16)上的结果:
| 任务 | 验证指标 | 最终值 | rollout↔actor 概率 Pearson | 显存峰值 |
|---|---|---|---|---|
| GSM8K | val acc@1 | 0.971 | 0.998 | ~43 GB |
| MMK12 | val reward@1 | 0.811 | 0.998 | ~59 GB |
| AVQA-R1-6K | val reward@1 | 0.877 | 0.996 | ~46 GB |
训练中值得盯的健康信号:training/rollout_actor_probs_pearson_corr应 >0.995(训练与推理权重同步正确性的核心指标)、rollout_corr/log_ppl_diff接近 0、actor/grad_norm落在 1e-3~1e-2 且不 OOM。
DAPO 配方:token 级策略损失的稳定化选择
DAPO 配方是 Qwen3-Omni 上的首个 DAPO 里程碑,定位是Phase 1 基线:
- token 级 vanilla 策略损失 + 非对称裁剪(
clip_ratio_low=0.2/clip_ratio_high=0.28,即 clip-higher) - GRPO 优势估计,不加 KL 惩罚(
use_kl_in_reward=false、use_kl_loss=false) - 刻意关闭动态采样(
algorithm.filter_groups.enable=false)与超长奖励缓冲,以便独立验证 token 级策略路径
启动方式与 GSPO 一致,使用 AVQA 数据:
bash examples/dapo_trainer/qwen3_omni/run_qwen3_omni_thinker_dapo_lora_v1.sh启动脚本 中可以看到完整的 DAPO 配置面:动态 batch(ppo_max_token_len_per_gpu=20480)、FSDP2 参数/优化器 offload、vLLM-Omni rollout(TP=2、AR 输出模式、prefix caching 关闭)、贪心解码验证(每 10 步一次)。LoRA 打点、冻结模块、奖励函数与 GSPO 基线完全对齐,方便横向对比。
💡 经验法则:GSPO 的序列级裁剪在多模态长响应下更稳,DAPO 的 token 级裁剪对格式遵循(如
<answer>标签)更敏感,可先跑 GSPO 再试 DAPO 对比曲线。
DPO 配方:离线偏好对齐 Qwen3-Omni
没有在线 rollout 预算时,可以直接走离线 DPO。官方支持基于Omni-Preference数据集(约 4.1 万对图像/视频/音频偏好对)训练 Thinker-only LoRA:
- 数据准备:按 Omni-Preference 数据指南 将数据集转换为三种模态各自的 parquet,每行是一个
[chosen, rejected]偏好对(含多模态 prompt、win_score/lose_score)。 - 启动训练:
DATA_DIR=/path/to/Omni-Preference/parquet_dpo \ MODEL_PATH=/path/to/Qwen3-Omni-30B-A3B-Instruct \ bash examples/dpo_trainer/qwen3_omni/qwen3_omni/run_qwen3_omni_omni_preference_lora.sh关键配置(见 omni_trainer.yaml):
algorithm.sample_source=offline+paired_preference=true:不启动 rollout 与 reward worker,直接读偏好对actor_rollout_ref.actor.omni_loss.*:DPO 的beta(默认 0.1)、loss_type(sigmoid)、label_smoothing等- LoRA 扩展覆盖注意力与 MoE 模块(
q/k/v/o_proj+gate_up_proj/down_proj),rank 32 / alpha 64 ModalityGroupedBatchSampler保证每个 batch 单模态,配合按模态均衡的验证采样
官方在 4 × H800 上验证:验证准确率 0.907、偏好 margin 0.843,单步吞吐约 1.35 samples/card/s。模型质量层面,仓库还附带 VLM-as-judge 评估流水线(examples/dpo_trainer/qwen3_omni/vlm_as_judge.py),支持 reference/trained/judge 三阶段可断点续跑的对比评估。
训练监控与性能剖析小贴士
- 验证曲线:在线配方绘制
val-core/<任务名>/reward/mean@1随 step 变化;DAPO 默认贪心解码验证,曲线可直接横向对比 - 日志:启动脚本已配置 console + W&B/TensorBoard;NPU 全参配方额外落盘 TensorBoard events 与运行日志
- 性能剖析:遇到 rollout 与 actor 时间分配异常时,可用 Nsight Systems 对齐控制器与 worker 时间线,观察 rollout(
generate)与 actor update 的间隔是否重叠合理,参考 性能剖析文档:
核心文件清单
| 路径 | 说明 |
|---|---|
| examples/gspo_trainer/README.md | GSPO 完整指南(4 种任务 + 性能数据) |
| examples/dapo_trainer/README.md | DAPO Phase 1 配方说明 |
| examples/dpo_trainer/README.md | DPO 三种工作流(含 Qwen3-Omni 离线 DPO) |
| verl_omni/trainer/main_omni.py | omni 训练入口(verl_omni.trainer.main_omni) |
| verl_omni/trainer/config/omni_trainer.yaml | omni 训练器默认配置 |
| verl_omni/utils/reward_score/choice_reward.py | 多模态选择题奖励函数 |
| docs/contributing/integrating_an_omni_model.md | 接入新 omni 模型 / rollout 显存调优指南 |
总结
VeRL-Omni 把 Qwen3-Omni 全模态 RL 后训练拆成了三条清晰路线:有奖励信号选 GSPO/DAPO(在线 rollout + 规则打分),有偏好数据选 DPO(离线对齐)。三套配方共享同一套 Thinker-only LoRA 参数策略与 V1 训练器,数据、奖励、启动脚本均可通过环境变量和 Hydra 覆盖快速定制。4 张 H800 即可跑通 LoRA 版多模态 RL,16 卡 Ascend NPU 则支持全参数训练——从 GSM8K 到 NExT-QA 视频问答,一条命令切换任务模态,这就是 VeRL-Omni 在多模态后训练上的核心价值。
【免费下载链接】verl-omni
Multimodal RL training framework for diffusion & omni models
相关推荐
Sana × Cosmos-RL 后训练实战:图像与视频扩散模型的 SFT / RL 配置、训练与本地实现解析
Sana × Cosmos RL 后训练实战:图像与视频扩散模型的 SFT / RL 配置、训练与本地实现解析 本指南以 docs/sana_cosmos_rl
人工智能大模型媒体生成预训练微调LoRA视频verl 强化学习训练实战指南:基于 HybridFlow 的 PPO/GRPO 大模型后训练
verl 强化学习训练实战指南:基于 HybridFlow 的 PPO/GRPO 大模型后训练 verl(Volcano Engine Reinforcemen
AI 技能人工智能大模型深度学习fragments 安装配置指南:10 分钟跑通 AI 应用生成器
fragments 安装配置指南:10 分钟跑通 AI 应用生成器 fragments 是 E2B 开源的 Next.js 模板,把一句话需求变成能直接运行的应
AI 应用大模型代码生成前端后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考