概述
Cosmos3-Nano-Policy-DROID 是 Cosmos3 系列里的 policy model。Cosmos3 本身是面向 Physical AI 的 omnimodal world model;policy 版本接收语言指令和 DROID 机器人平台的视觉 observation,生成用于 manipulation 和 control 的 robot action trajectory。 本页讲的是 Cosmos3 policy 的多卡路径,也就是cosmos3_policy_wn plugin。它覆盖 policy、forward_dynamics 和 inverse_dynamics 三种 mode:视频 latent 和 action latent 在同一个 denoise loop 里推进,最终返回 action;如果开启 decode_video=True,还会返回 rollout video。
PhyAI 目前在这条路径上支持两类并行:policy transformer 沿 tp 轴做 tensor parallel;当 cfg=2 且 guidance_scale > 1 时,cond / uncond 两个 CFG branch 会被分到两个 TP group 上并行运行。rollout video 的 VAE decode 也会按 rank 做空间 tile 切分,并用 halo overlap 合并边界。
Mode 与输出
三种 mode 的 clean / noisy 规则如下:| Mode | Clean video | Clean action | 生成目标 |
|---|---|---|---|
policy | 默认第 0 个 latent frame,或 cond_frame_indexes 指定的帧 | 无 | action chunk,可选 rollout video |
forward_dynamics | 默认第 0 个 latent frame,或 cond_frame_indexes 指定的帧 | cond_action 全部动作步 | rollout video |
inverse_dynamics | 默认所有 video latent frame,或 cond_frame_indexes 指定的帧 | 无 | 解释 observation transition 的 action chunk |
decode_video=True 时,plugin 会额外返回 video latent 和 decoded pixels。
| Key | Shape / 类型 | 说明 |
|---|---|---|
action | [B, action_chunk, raw_action_dim] | padding tail 已经裁掉 |
video | [B, C, t_lat, h_lat, w_lat] | rollout / denoised video latent |
pixels | [B, 3, T, H, W],可选 | decode_video=True 且 checkpoint 有 VAE 时返回 |
action_dim=64。真实机器人动作宽度由 raw_action_dim 决定,scheduler 会在输出前裁掉 padding tail。
并行拓扑
下面用TP=4、CFG=2、world_size=8 作为例子。rank 0-3 是 cond branch 的一个 TP group,rank 4-7 是 uncond branch 的另一个 TP group。每个 denoise step 里,同一 branch 的 4 个 TP rank 会一起跑 transformer forward,不是流水顺序。
P.all_gather(axis="cfg") 使用 engine 初始化时创建的 parallel mesh。ParallelConfig(world_size=cfg_size * tp_size, cfg_size=cfg_size, tp_size=tp_size) 会把 rank 映射成 (cfg_rank, tp_rank);沿 cfg 轴 gather 时,只收集相同 tp_rank、不同 cfg_rank 的 rank。这样每个 TP 分片都能拿到 cond / uncond velocity,再在本地完成 CFG combine。
VAE 的 8 卡切分示意如下,cfg 作为 outer axis,tp 作为 inner axis:
运行路径
准备权重和输入
准备一份 Cosmos3-Nano-Policy-DROID checkpoint。如果需要输出 rollout video,checkpoint 里还需要
vae/。policy 和 inverse_dynamics 可以输入 observation image 或 video;forward_dynamics 还需要 action JSON。构造输入处理器
Cosmos3PolicyProcessor 负责 observation resize/pad、prompt tokenization、domain id、action padding 和输出后处理。所有 rank 同时运行
每个 rank 都必须调用
engine.step(request)。scheduler 内部会在 tp 和 cfg 轴上触发 collective,不能只让 rank 0 运行。运行示例
TP-only 的 4 卡 policy 推理:--nproc_per_node 必须等于 --cfg * --tp。Policy 示例默认 guidance_scale=1.0,这时 cfg=2 没有收益;只有把 --guidance-scale 设到大于 1,CFG parallel 才有意义。
实现注意
decode_video=True需要 checkpoint 里有vae/;否则只能返回 action 和 video latent。forward_dynamics必须提供cond_action,processor 会负责把原始 action pad 到action_dim。- 这条路径仍然是一次处理一个 request 的示例/基线路径,不是 continuous batching scheduler。

