UniRL 文档
配置

实验配方

分桶的 examples/ 目录树下的 recipe,以及每个入口如何选择 recipe。

recipe 是 examples/ 下按训练域分桶的自包含 YAML 文件(diffusion/vlm/llm/pe/unified_model/)。每个都是 model、algorithm、rollout engine、placement、reward、sync 和 batch geometry 的 source of truth。用 --config-name=<domain>/<recipe>(不含 .yaml)选择。

每个领域的入口

recipe 所属家族决定用哪个入口运行:

入口bucketrecipe 家族
python -m unirl.train_diffusiondiffusion/sd3_*qwen_image_*flux2_klein_*wan21_*wan22_*hunyuan_video*
python -m unirl.train_vlmvlm/llm/qwen_vl_argrpo_*qwen3_ar_drpo_*
python -m unirl.train_pepe/pe_*
python -m unirl.train_unified_modelunified_model/hi3_*

维护中的家族

家族recipe
SD3(GRPO)sd3_trainsidesd3_trainside_tq_mooncakesd3_dancegrposd3_mixgrpo
SD3 NFTsd3_nftsd3_nft_reward_servicesd3_nft_sglang
SD3 Flow-DPPOsd3_flowdpposd3_flowdppo_vllmomni
SD3 SGLangsd3_sglang_native_colocatesd3_sglang_replay_colocatesd3_sglang_full_nccl_separatesd3_sglang_full_tensorsd3_sglang_lora_separate
SD3 vLLM-Omnisd3_vllmomnisd3_vllmomni_full_ipcsd3_vllmomni_full_nccl_separatesd3_vllmomni_full_tensorsd3_vllmomni_lora_separate
Qwen-Imageqwen_image_trainsideqwen_image_dancegrpoqwen_image_mixgrpoqwen_image_nft
Flux.2-Kleinflux2_klein_trainsideflux2_klein_sglang
WAN 2.1wan21_t2vwan21_t2v_dancegrpowan21_t2v_mixgrpowan21_i2v
WAN 2.2wan22_t2v_14bwan22_t2v_14b_dancegrpowan22_t2v_14b_mixgrpowan22_i2v
HunyuanVideohunyuan_video_t2v_trainsidehunyuan_video15_t2v_dancegrpo_trainsidehunyuan_video15_t2v_vllmomni_nccl_separate
HunyuanImage3hi3_vllmomni
Qwen-VL ARGRPO(VLM)qwen_vl_argrpo_geo3k_mc_4x8qwen_vl_argrpo_geo3k_mc_4x8_loraqwen_vl_argrpo_geo3k_mc_sglang_4x8qwen_vl_argrpo_geo3k_mc_sglang_4x8_lora
Qwen3 DRPO(LLM)qwen3_ar_drpo_4b_base_dpao_sglang
PE(prompt enhancer,AR + diffusion)pe_trainside_pickscorepe_sglang_full_pickscorepe_sglang_full_wisepe_sglang_lora_pickscore

选择 Recipe

python -m unirl.train_diffusion --config-name=diffusion/sd3_trainside

启动器传入同样的 bucket 化 recipe 名(ENTRY 选择非 diffusion 入口):

bash examples/run_experiment_single_node.sh diffusion/sd3_trainside
ENTRY=train_vlm bash examples/run_experiment_single_node.sh vlm/qwen_vl_argrpo_geo3k_mc_4x8
bash examples/run_experiment_multinode_taiji.sh diffusion/sd3_sglang_native_colocate

如何选择 Recipe

当任务没有指定具体 recipe 时,按此顺序决定:

  1. 先选模态和模型:图像用 SD3 或 Qwen-Image;视频用 WAN 2.1 / 2.2;AR + diffusion 混合用 HunyuanImage3;VLM / LLM 用 Qwen-VL / Qwen3;prompt-enhancer 用 PE。
  2. 再选 rollout topology:trainside 是 direct sampling;SGLang/vLLM-Omni 是 dedicated rollout;colocate 表示 train 和 rollout 共享 GPU bundle(相对 separate)。
  3. 再选算法:GRPO / DanceGRPO / MixGRPO 是 on-policy ratio loss,Flow-DPPO 是 KL-masked policy optimization,NFT 是 off-policy forward-process training,DRPO 用于 AR 文本。
  4. 最后按硬件选择如 4x8 等变体。
  5. 启动 Ray 作业前先做 compose check。

新增 Recipe

  1. 从最接近的 examples/<domain>/<recipe>.yaml 复制。
  2. 把 model、reward、rollout engine、backend、stack、sync、placement、batch geometry 放在 YAML 中,每个用 _target_ 实例化。
  3. 只把路径和 logging identity 这类部署相关值放到环境变量插值中。
  4. 运行 python -m unirl.train_diffusion --config-name=<domain>/<recipe> --cfg job --resolve
  5. 把该 recipe 补到本页。

目录