UniRL
Configuration

Experiment Recipes

Recipes in the bucketed examples/ tree and how to select one per entrypoint.

Recipes are self-contained YAML files under examples/, grouped by training domain. Each recipe is the source of truth for model, algorithm, rollout engine, placement, reward, synchronization, and batch geometry. Select one with --config-name=<path-under-examples> and omit .yaml.

Entrypoint per Domain

The defaults below come directly from each entrypoint's @hydra.main; they are useful compose-check anchors, not universal recommendations.

Training pathEntrypointCanonical recipe
Diffusion RLpython -m unirl.train_diffusiondiffusion/sd3/sd3_trainside
AR/VLM RLpython -m unirl.train_arar/qwen_vl_grpo_geo3k_mc_4x8
SFTpython -m unirl.train_sftsft/qwen3_sft
Async AR RLpython -m unirl.train_async_arar/qwen3_grpo_4b_base_dapo_sglang_async
Async diffusion RLpython -m unirl.train_async_diffusiondiffusion/bagel/bagel_vllmomni_async
Prompt enhancementpython -m unirl.train_pepe/pe_trainside_pickscore
Unified AR + diffusionpython -m unirl.train_unified_modelunified_model/hi3_vllmomni
Agentic tool usepython -m unirl.train_agenticdeep_research/deep_research_search_judge

Choosing a Recipe Family

The tree currently contains more than 140 recipes, so this page intentionally does not duplicate a complete filename inventory. Inspect the matching directory and start from these stable families:

  • examples/diffusion/: image, video, audio-video, and image-editing RL. Model families such as SD3, Qwen-Image, WAN, HunyuanVideo, BAGEL, and LTX-2 usually have their own nested directory.
  • examples/ar/: Qwen text, VLM, Qwen3-Omni, and BAGEL autoregressive RL.
  • examples/sft/: text, VLM, agent trajectory, diffusion, Cosmos3, and WAN SFT.
  • examples/pe/: prompt-enhancer workflows.
  • examples/unified_model/: mixed AR + diffusion models.
  • examples/deep_research/: service-scored agentic workflows.

Selecting a Recipe

python -m unirl.train_diffusion \
  --config-name=diffusion/sd3/sd3_trainside \
  --cfg job --resolve

Launchers pass the same path. Set ENTRY for a non-diffusion entrypoint:

bash examples/run_experiment_single_node.sh diffusion/sd3/sd3_trainside
ENTRY=train_ar bash examples/run_experiment_single_node.sh ar/qwen_vl_grpo_geo3k_mc_4x8
ENTRY=train_sft bash examples/run_experiment_single_node.sh sft/qwen3_sft
ENTRY=train_agentic bash examples/run_experiment_single_node.sh deep_research/deep_research_search_judge
bash examples/run_experiment_multinode.sh diffusion/sd3/sd3_sglang_rollout_colocate

How to Pick a Recipe

Use this decision order when a task does not name a specific recipe:

  1. Choose the training path and model family.
  2. Choose direct trainside sampling or a dedicated SGLang/vLLM-Omni engine.
  3. Match algorithm, adapter, synchronization, and placement suffixes.
  4. Match topology-specific variants such as 4x8, VeOmni SP/EP, or HSDP.
  5. Read the YAML and run a compose check before launching Ray.

Editing Guidance

When adding a recipe:

  1. Start from the closest existing YAML under the correct domain/model directory.
  2. Keep model, reward, rollout engine, backend, stack, sync, placement, and batch geometry in YAML, each instantiated by _target_.
  3. Use environment interpolation only for deployment-specific paths and logging identity.
  4. Compose it with the entrypoint that owns its training domain.

On this page