UniRL 文档
快速开始

首次运行

组合并启动一个 UniRL 实验配方。

启动 Ray 作业前,先做 Hydra compose check。--cfg job --resolve 检查 Hydra 组合、 override 语法以及插值/环境变量解析;它不会实例化运行时 dataclass,也不会运行 trainer 或跨组件校验。

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

单机运行

单机通用启动器的第一个参数是 examples/ 下的 recipe 路径 (<path-under-examples>,不含 .yaml):

bash examples/run_experiment_single_node.sh diffusion/sd3/sd3_trainside

默认入口是 diffusion;用 ENTRY 选择其他入口:

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_pe      bash examples/run_experiment_single_node.sh pe/pe_trainside_pickscore
ENTRY=train_agentic bash examples/run_experiment_single_node.sh deep_research/deep_research_search_judge

只检查启动命令,不真正跑训练:

DRY_RUN=1 bash examples/run_experiment_single_node.sh diffusion/sd3/sd3_trainside

Async AR 和 diffusion 使用独立的 train/rollout slab:

ENTRY=train_async_ar bash examples/run_experiment_single_node.sh \
  ar/qwen3_grpo_4b_base_dapo_sglang_async
ENTRY=train_async_diffusion bash examples/run_experiment_single_node.sh \
  diffusion/bagel/bagel_vllmomni_async

多机运行

多机 role-aware 启动器:

bash examples/run_experiment_multinode.sh diffusion/sd3/sd3_sglang_rollout_colocate

直接调用 Hydra 入口

可以直接调用入口并在命令行覆盖字段:

python -m unirl.train_diffusion \
  --config-name=diffusion/sd3/sd3_trainside \
  num_devices=8

Override 优先级:

CLI Hydra override > launcher env var > YAML default

示例 prompt

已提交的 prompt 列表在 datasets/ 下,例如 datasets/pickscore/train.txt(每行一个 prompt)和 datasets/pickscore/test.txt。recipe 的 data_source 默认指向它们。

真实运行时使用所选 recipe 暴露的环境变量插值或 Hydra 字段。例如 WAN recipe 的 prompt 文件:

bash examples/run_experiment_single_node.sh diffusion/wan21/wan21_t2v \
  data_source.args.run.data_path=/abs/path/train.json

目录