概览
UniRL 的主循环、各领域 trainer、rollout engine、train stack 和同步边界。
UniRL 使用 Hydra 入口和按领域区分的 trainer 生命周期。本页只保留导航层说明;
贴近代码的契约来自 unirl/README.md 和各 package README,
并以页面形式内嵌在各文档分区的侧边栏中。
同步 RL:
train_diffusion | train_ar | train_pe | train_unified_model | train_agentic
-> rollout -> reward -> advantage -> train -> optional weight sync
监督训练:
train_sft
-> records -> build Part -> train
异步 RL:
train_async_diffusion | train_async_ar
-> 独立的 train 与 rollout placement slab
-> 带权重版本发布的 buffered rollout/reward/advantage/train每个入口都验证自己的 recipe,再交给对应 trainer。它们共享 single-controller 的
Remote / placement 基础设施和训练栈契约,但不共享同一种 placement 布局或同一个
RL 生命周期。早期的 v1 actor-group runtime 已退役。
主要参考
- Code Architecture README:模块地图和 runtime data flow。
- Rollout Package README:rollout mode 和 request/response contract。
- Train Stack README:FSDP backend、train-step 契约和结构注入。
- Algorithms Package README:每 track 的 loss contract 和 reward→advantage 路径。
- SDE Package README:SDE strategy、schedule 和 runtime kernel。
- Weight Sync README:dedicated rollout 同步。
数据流
RL trainer
-> 构建 request Sample,发送给 rollout engine
-> 填充后的 Sample,包含生成的 Part(conditions、segments、primitives、media previews)
-> RewardService.score_and_attach(sample) -> frontier Part.rewards
-> Part.compute_advantages -> Part.advantages
-> TrainStack.train_track(part) 在 train worker 间分片并运行 mini-batch loop
-> optional weight sync back to dedicated rollout workersSample 是端到端 rollout 边界:每个 engine 都接收并返回 Sample,其中有序的
Sample.parts 由 Part 对象组成。新的 rollout engine 应把 backend-specific 输出转换成
unirl/types/sample.py 中的这些类型,而不是把 backend object 泄漏到 training 代码中。
每个 trainer(unirl/trainer/<domain>.py)负责自己的 placement 块、worker 构建和阶段顺序。
SFT 没有 rollout、reward、advantage 或 weight-sync 阶段;异步 AR/diffusion 使用彼此独立的
train 与 rollout slab。
部署模式和 engine-specific 要求以生成的 Rollout Package README 为准。
每 track 一个算法
生成 Part 的训练 loss 由其配置的 StageAlgorithm 负责,例如 diffusion 的
unirl.algorithms.flowgrpo.FlowGRPO 或自回归的 unirl.algorithms.grpo.GRPO。
不存在独立的 driver 侧 "rollout control" 对象:
- reward→advantage 的 z-score 在
Part.compute_advantages(unirl/types/sample.py); - SDE-index 选择在
DiffusionSamplingParams.resolve_sde_indices(unirl/types/sampling.py)。
单 stage recipe 绑定一个 cfg.algorithm;PE 为每个生成 Part 嵌套一个 algorithm:
节点(diffusion.algorithm、ar.algorithm),并运行兄弟 TrainStack。
unified-model 训练则用 UnifiedModelTrainStack 把 AR 和 image loss 累积到 shared-backbone
的一次 optimizer step。见 Trainer 与训练栈。
Roadmap 路线图
近期方向围绕 框架 Infra、算法 Algorithm、模型 Model 三条线展开,详见 Roadmap 路线图。