UniRL 文档
架构

概念与术语

UniRL 文档与 recipe 中通用的核心心智模型与领域术语。

如果文档其余部分出现你不熟悉的术语,请先读本页。它是概念入门,不是 API 参考;贴近代码的契约见嵌入在各分区下的 package 页面,例如 Code Architecture

核心循环

每次训练都是一个重复循环:

prompts -> rollout(采样 media + 把 trajectory 记入 tracks)
        -> reward (把 media 打分为逐样本 reward)
        -> advantage(在组内/跨组归一化 reward)
        -> train  (replay trajectory,算 loss,backward,optimizer step)
        -> [可选] weight sync 回 dedicated rollout engine

每 track 一个算法

一次 rollout 产出一个或多个 trackRolloutResp.tracks[name],以 stage 名为 key,如 "diffusion""ar")。每个 track 绑定恰好一个 loss 算法——cfg.algorithm, 一个 StageAlgorithm:它消费该 track、replay stage、算 loss 并 backward()

不存在独立的 driver 侧 "rollout control" 对象。reward→advantage 的整形与 SDE-index 选择都在 typed 对象上:

关注点所在位置
Losscfg.algorithm → 一个 StageAlgorithm(如 DiffusionGRPO
reward → advantageRolloutTrack.compute_advantagesunirl/types/rollout_resp.py
哪些推理步跑 SDEDiffusionSamplingParams.resolve_sde_indicesunirl/types/sampling.py

单 track recipe 绑定一个顶层 cfg.algorithm;多 track recipe(如 PE)为每个 track 嵌套一个 algorithm: 节点(diffusion.algorithmar.algorithm),并运行兄弟 TrainStack

术语表

编排

术语含义
Driver跑训练循环的进程:一个入口(unirl.train_diffusion 等)构建 <Domain>Trainer
Trainerunirl/trainer/<domain>.py——负责 placement 块、构建 rollout/train worker 并跑循环。
Remote / placementsingle-controller 层(unirl/distributed/group/):Remote 是逻辑 worker;placement 块把 sibling Remote colocate,并携带 RankInfo(DP/TP/PP/SP/EP rank)。
Bundle一个模型包暴露给训练和 rollout 的可训练+冻结模块(transformer、VAE、text encoder)。
Pipeline模型的采样 pipeline(去噪/生成),用于产出 media 和 trajectory。

Rollout

术语含义
Rollout engine采样 backend:trainsidesglangsglang_llmvllm_omnicomposed
Direct samplingtrainside:被 FSDP wrap 的训练模块本身就是 sampler;无独立 engine、无 weight sync。
Dedicated sampling独立 engine(SGLang / vLLM-Omni)持有自己的权重,需要 trainer→rollout weight sync。
Colocate vs separatetrain 与 rollout 是否共享 GPU bundle(colocate)或跑在不同 GPU slab(separate)。
RolloutReq / RolloutResprollout 与 training 的 typed 边界。engine 把 backend 输出转换为 RolloutResp
Track / SegmentRolloutResp.tracks[name] 持有每 stage 的 segment(如带逐步 log-prob 的 diffusion trajectory)、rewards 和 advantages。
Group一条 prompt 的 sampling.samples_per_prompt 个同组样本;advantage 在组内归一化。

SDE 与 log-prob

术语含义
SDE strategy产生逐步 log-prob 的随机 kernel(FlowSDEStrategyDanceSDEStrategy ...)。
Sigma schedule各去噪步的 σ 值;作为 single source of truth 钉在 request 上。
old_logp / new_logprollout 时 vs 当前权重的 log-prob;其比值驱动 GRPO 的 clipped 目标。
Log-prob replay训练时通过 replay stage 重算 log-prob;多次更新间 old log-prob 保持固定。

训练

术语含义
Backendtraining-state RemoteFSDPBackend),负责结构注入 + optimizer + scheduler + EMA。
Stage / StageAlgorithm可训练 stage,以及 replay 它并做 forward/backward 的 loss 对象。
Train stackTrainStack——单 stage 的 loss/backward 驱动;多 track 用兄弟 stack;HI3 用 unified_model_stack
EMA rollout用 EMA 平滑权重采样 rollout(NFT 开启;GRPO / DPPO 不可)。
Batch geometrymicro_batch_sizenum_updates_per_batch;多更新会在每个 rollout shard 上冻结一次 π_old。

Reward

术语含义
RewardServiceunirl/reward/service.py——持有一个 backend:本地 scorer 或远程 HTTP 客户端。
Reward component / scorer给 media 打分的单元(PickScore、HPS、OCR、GenEval2、VideoPickScore ...)。
Advantageloss 相乘的归一化 reward 信号。

数据面 vs 权重面

术语含义
Weight sync(cfg.sync把最新训练权重发给 dedicated rollout engine(NCCL broadcast、tensor、IPC)。
Tensor transport数据面(unirl/distributed/tensor/),在 worker 间搬运体积大的rollout 输出

两者方向相反,不要混为一谈。

下一步

目录