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 path | Entrypoint | Canonical recipe |
|---|---|---|
| Diffusion RL | python -m unirl.train_diffusion | diffusion/sd3/sd3_trainside |
| AR/VLM RL | python -m unirl.train_ar | ar/qwen_vl_grpo_geo3k_mc_4x8 |
| SFT | python -m unirl.train_sft | sft/qwen3_sft |
| Async AR RL | python -m unirl.train_async_ar | ar/qwen3_grpo_4b_base_dapo_sglang_async |
| Async diffusion RL | python -m unirl.train_async_diffusion | diffusion/bagel/bagel_vllmomni_async |
| Prompt enhancement | python -m unirl.train_pe | pe/pe_trainside_pickscore |
| Unified AR + diffusion | python -m unirl.train_unified_model | unified_model/hi3_vllmomni |
| Agentic tool use | python -m unirl.train_agentic | deep_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 --resolveLaunchers 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_colocateHow to Pick a Recipe
Use this decision order when a task does not name a specific recipe:
- Choose the training path and model family.
- Choose direct
trainsidesampling or a dedicated SGLang/vLLM-Omni engine. - Match algorithm, adapter, synchronization, and placement suffixes.
- Match topology-specific variants such as
4x8, VeOmni SP/EP, or HSDP. - Read the YAML and run a compose check before launching Ray.
Editing Guidance
When adding a recipe:
- Start from the closest existing YAML under the correct domain/model directory.
- Keep model, reward, rollout engine, backend, stack, sync, placement, and batch geometry in YAML, each instantiated by
_target_. - Use environment interpolation only for deployment-specific paths and logging identity.
- Compose it with the entrypoint that owns its training domain.