Multinode Runs
Launchers, Ray startup, cluster geometry, and pre-run checks.
Training semantics live in recipe YAML under examples/. Shell scripts only prepare the runtime
environment, start Ray, set path/logging defaults, and forward the recipe name
plus Hydra overrides.
Launchers
Use the single-node launcher for local or one-node jobs, and the multinode
launcher when workers need to join a Ray head before training starts. The first
argument is the recipe path below examples/ (<path-under-examples>, without
.yaml); ENTRY selects a non-diffusion
entrypoint (train_ar, train_sft, train_async_ar,
train_async_diffusion, train_pe, train_unified_model, or
train_agentic).
bash examples/run_experiment_single_node.sh diffusion/sd3/sd3_trainside
bash examples/run_experiment_multinode.sh diffusion/sd3/sd3_sglang_rollout_colocate
ENTRY=train_ar bash examples/run_experiment_multinode.sh ar/qwen_vl_grpo_geo3k_mc_sglang_4x8
ENTRY=train_sft bash examples/run_experiment_multinode.sh sft/qwen3_sft
ENTRY=train_agentic bash examples/run_experiment_multinode.sh deep_research/deep_research_search_judgeThe launcher defaults to scheduler-fanned LAUNCH=spmd. For an interactive
head node with passwordless SSH to workers, set LAUNCH=ssh and provide
NODE_IP_LIST=IP:GPUS,.... NUM_NODES, GPUS_PER_NODE, NODE_RANK,
HEAD_IP, and RAY_PORT override topology discovery.
Environment-Derived Overrides
Launchers preserve the environment; each recipe decides which values it
interpolates (commonly PRETRAINED_MODEL, data paths, and W&B settings).
Inspect the selected YAML instead of assuming every recipe reads the same
variables.
Cluster Geometry
For different cluster geometry, override the recipe's placement and batch-geometry fields together, for example the device count and the train-stack mini-batch shape:
bash examples/run_experiment_multinode.sh diffusion/sd3/sd3_sglang_rollout_colocate \
num_devices=16 \
stack.micro_batch_size=1 \
stack.num_updates_per_batch=2Hydra composition does not prove that this geometry is valid. Live geometry checks run later in trainer/worker construction, and their exact constraints differ by trainer. Review the owning trainer plus the selected recipe whenever changing topology or batch fields.
Pre-Run Checks
For any large run, first compose and resolve the recipe without launching Ray work:
python -m unirl.train_diffusion \
--config-name=diffusion/sd3/sd3_sglang_rollout_colocate \
--cfg job --resolveThis command checks Hydra composition, overrides, and interpolation/environment resolution only. It does not instantiate dataclasses or run trainer, cross-component, or batch-geometry validation. A small real smoke launch on the target topology is still required to exercise construction-time checks.