← Home

World Action Models are Zero-shot Policies

Seonghyeon Ye、Yunhao Ge、Kaiyuan Zheng et al. · NVIDIA · 2026-02-19 · arXiv:2602.15922

把 14B video diffusion 模型改造成同时生成未来视频和动作的 World Action Model,用 inverse-dynamics 视角让 video prior 直接成为 policy,并通过系统优化把它压到 7Hz 实时闭环。

问题

要解决什么:现有 VLA 只能在语义层泛化(换物体、换指令),但换一个没见过的动作/技能(如未训练过的解鞋带)就失败。作者要解决的是:如何让机器人策略真正泛化到未训练过的 motion 和 environment,同时能利用异质、非重复的真实数据。

为什么 prior work 不够:VLA 从 VLM 初始化,继承了 web 的语义先验,但没有继承物理动态先验——它学到的是 observation->action 的映射,缺'动作会让世界怎么变'的建模。所以它必须靠大量重复示教覆盖每个技能。之前的 WAM(如 BagelVLA、Cosmos-Policy)虽然用了 video diffusion,但要么只做关键帧/cascaded,要么没解决实时推理,要么没系统验证数据多样性与跨本体迁移。

输入 / 输出

输入

名称类型说明
visual contextimage/video当前与历史观测;多视角在通道维拼接为单帧;经 VAE 编码为 latent
language instructiontext经文本编码器(训练时冻结)编码为条件
proprioceptive statevector本体感受状态,经 state encoder(新增模块)编码

输出

名称类型说明
future video latentslatent未来 K=2 个 latent 视频帧(每 chunk)
action chunkcontinuousH=48 (AgiBot, 30Hz) 或 H=24 (DROID, 15Hz) 步连续动作,表示为相对关节位置

控制频率:推理 ~7Hz(150ms/chunk);AgiBot 控制频率 30Hz、chunk 跨度 1.6s;DROID 15Hz、chunk 同样 1.6s

输入拼接 protocol

<bos_context>[VAE(o_{1:M}) = (C_1, A_1), ..., (C_{k-1}, A_{k-1})]<eos_context><bos_lang>TextEnc(c)<eos_lang><bos_state>StateEnc(q_k)<eos_state><bos_chunk>[noisy z_k^t, noisy a_k^t]<eos_chunk>
逐 token 解释:

...:历史 chunk 序列;训练时是 clean teacher-forcing context {(z_j, a_j)}_{j

...:语言指令 c 经冻结的 text encoder,以 cross-attention 注入每个 DiT block(不是序列拼接)

...:当前 chunk k 的 proprioceptive state,经新增 state encoder

...:当前要联合去噪的 [video latent z_k^t, action latent a_k^t];z 是 Wan-VAE latent(空间 104×60,channel 16,时间 K=2),a 是归一化连续动作;两者共享 timestep t_k,联合预测 velocity v_k = [z_k^1, a_k^1] - [z_k^0, a_k^0]

注意:多视角在图像层就已在通道维拼成单帧再过 VAE,不是序列拼接;text 是 cross-attention 而非 token 拼接;真正做序列拼接的是 chunk 级的 [video, action] 对。

数据集

数据规模备注
AgiBot G1 自采(主)~500h7193 episodes,22 个真实环境(家、餐厅、超市、咖啡店、办公室),平均 4.4 分钟/episode、42 subtasks/episode,强调多样非重复
DROID公开数据集Franka 单臂,用于验证方法在开源异质数据上同样有效,并保证可复现
YAM robot video-only20 min72 轨迹/9 任务,robot-to-robot 跨本体迁移,只用视频不用动作标签
Human egocentric video-only12 min72 轨迹/9 任务,human-to-robot 跨本体迁移,只用视频
Post-training data33h+12h+40h叠衣服/水果打包/收餐桌三个下游任务微调

架构(摘要)

主干与结构

backbone:Wan2.1-I2V-14B-480P(image-to-video diffusion, 14B)

参数:14B(冻结 text encoder / image encoder / VAE;更新 DiT + 新增 state/action encoder/decoder)

类型:autoregressive DiT + flow matching(chunk-wise, teacher forcing)

关键组件

为什么这样设计

保留 video diffusion 的物理先验(只动最小参数);AR 结构能保原生帧率、避免双向模型因 subsample 造成 video-action 错位;chunk-wise + KV-cache 让长上下文(6.6s)一次前向搞定;闭环时用 GT 观测替换 KV-cache 里的预测帧,消除 AR 的误差累积——这是 WAM 相对纯视频生成的独有优势。

数值 sense

DiT 规格14B, hidden_dim=5120, 40 layers × 40 heads, ffn_dim=13824
分辨率480P (面积固定,宽高比随输入,典型 832×480)
VAEWan 3D causal VAE; 空间 8× 下采样 (832×480→104×60), 时间 4× 下采样 (4 raw 帧→1 latent 帧), latent channel=16
每帧 latent 维~104×60×16 ≈ 1.0e5 维/latent 帧
ChunkK=2 latent 帧 = 8 raw 帧; 视频 5FPS → 1.6s/chunk; AgiBot: 动作 30Hz/H=48, DROID: 动作 15Hz/H=24
上下文M=4 chunks = 8 latent 帧 = 33 raw 帧 = 6.6s 视觉记忆
动作连续相对关节位置; AgiBot G1 双臂移动平台(自由度~十几到二十几), DROID Franka 7-DOF+夹爪
训练100K steps × global batch 128 (AgiBot 与 DROID 都是); 全参数更新 (LoRA 试过不行); 冻结 text/image encoder + VAE

→ 详见 Architecture tab。

关键结果

指标最强 baselinesetup
Seen tasks avg task progress62.2%27.4% (best pretrained VLA)AgiBot G1, unseen env+objects
Unseen tasks avg task progress39.5%16.3% (pretrained VLA)AgiBot G1, 10 个训练中未出现的任务
Unseen tasks success rate22.5%12.5% (GR00T N1.6 pretrained)DROID-Franka
Cross-embodiment (Robot2Robot)55.4% (从 38.3% 提升)20min YAM video-only
Cross-embodiment (Human2Robot)54.3% (从 38.3% 提升)12min human egocentric video-only
Few-shot 新本体适配30min play data 迁移到 YAM 并保留 zero-shot 泛化55 轨迹/11 任务
Inference latency150ms (7Hz)5.7s (naive)GB200, 全部优化 + Flash
Flash 1-step vs 4-step74% task progress (1 step)83% (4 step) / 52% (naive 1 step)Table bussing

Insights

vs 同类工作

局限

可复现性

WAM video diffusion autoregressive flow matching cross-embodiment KV-cache NVIDIA joint world-action

DreamZero 架构详解

> 配套 card.json。下面先用一张 Mermaid 图把数据流和模块关系画清,再用文字把每个组件讲透。所有数字都来自论文(页码标注)。

1. 总体数据流(训练 vs 推理)

flowchart LR
  subgraph Inputs
    V["视觉观测<br/>(多视角,通道拼接)"]
    L["语言指令"]
    Q["本体感受 state"]
  end

  subgraph Encoders
    VAE["VAE(冻结)<br/>image/video -> latent"]
    T["Text encoder(冻结)"]
    SE["State encoder(新)"]
  end

  subgraph Backbone
    DiT["Autoregressive DiT 14B<br/>flow matching, chunk-wise<br/>KV-cache 推理"]
  end

  subgraph Heads
    VD["Video decoder<br/>(latent -> frame)"]
    AD["Action decoder(新)<br/>latent -> H 步连续动作"]
  end

  V --> VAE --> Z["video latent z"]
  L --> T --> C["text cond c"]
  Q --> SE --> AQ["action latent input a"]

  Z --> DiT
  C --> DiT
  AQ --> DiT
  DiT --> Zout["未来 video latent z_1..K"]
  DiT --> Aout["action chunk a_1..H"]
  Zout --> VD
  Aout --> AD

训练时:对每个 chunk k,把 clean context {(z_j, a_j)}_{j

推理时:先 prefill context(初始观测)的 KV-cache,然后循环——对 noisy [z_0, a_0] 做 N 步去噪得到一个 chunk 的 video+action;执行动作的同时,把真实观测回填 KV-cache,继续下一个 chunk(p6, p8 Algorithm 2)。

2. 输入/输出契约

方向名称类型说明
输入视觉上下文image/video latent当前+历史观测;多视角在通道维拼成单帧,不改 backbone
输入语言指令text冻结的 text encoder
输入本体感受vector新增 state encoder
输出未来视频 latentlatent每 chunk K=2 latent 帧
输出动作 chunkcontinuousAgiBot: H=48 @30Hz;DROID: H=24 @15Hz;每 chunk 1.6s

最大上下文 = M=4 chunks × K=2 = 8 latent 帧 = 33 raw 帧 = 6.6 秒(p21)。

数值 sense:模型到底多大

出处
DiT14B;hidden_dim=5120;40 layers × 40 heads;ffn=13824Wan2.1 HF model card
分辨率480P,面积固定,宽高比随输入(典型 832×480)Wan2.1
VAEWan 3D causal VAE;空间 8× 下采样(832×480→104×60);时间 4×(4 raw→1 latent);latent channel=16Wan2.1 vae.py + HF spec
每帧 latent 维~104×60×16 ≈ 10 万推算
ChunkK=2 latent 帧 = 8 raw 帧;视频 5FPS → 1.6s;AgiBot H=48@30Hz,DROID H=24@15Hz论文 p21
上下文M=4 chunks = 8 latent = 33 raw = 6.6s论文 p21
动作连续相对关节位置;AgiBot G1 双臂移动平台(DOF~十几到二十几),DROID Franka 7-DOF+夹爪论文 p10-11
训练100K steps × global batch 128(AgiBot 与 DROID 都是);全参数更新(LoRA 试过不行);冻结 text/image encoder + VAE论文 p11, p21

3. 为什么选 Autoregressive 而不是 Bidirectional

这是论文最有论证的一条架构选择(p7, Appendix B)。

Bidirectional 的问题:它要求固定长度序列,长程示教里语言指令通常只对应任务区间的一部分。如果不 subsample,模型生成的视频只覆盖任务片段,语言和视频错位;如果 subsample,在闭环里从任务中段(如 T=20)采样会扭曲原生帧率,video-action 对齐就崩了(Figure 13)。

AR 的解法:用视频上下文做条件而不是 subsample,既保住语言-视频对应,又保住原生帧率,语言/视频/动作三模态对齐才稳。副作用是 AR 推理因 KV-cache 比 BD 快 3-4x(p17)。

4. 关键机制:闭环 KV-cache 替换

这是 DreamZero 作为 WAM 比纯视频生成器强的地方(p6, p8):

sequenceDiagram
  participant Robot
  participant Cache as KV-cache
  participant Model as DiT

  Robot->>Model: 初始观测 o_init
  Model->>Cache: prefill KV(条件帧)
  loop 每个 chunk
    Model->>Model: 噪声 -> 去噪 -> (z_future, a_chunk)
    Model->>Robot: 执行 a_chunk
    Robot->>Robot: 真实环境产生 o_new
    Robot->>Cache: 用 o_new 的 KV 替换预测帧的 KV
    Cache->>Model: 下一 chunk 基于真实上下文生成
  end

为什么重要:纯 AR 视频生成会 compounding error(越生成越偏)。闭环里每 chunk 用 GT 观测纠正 KV-cache,误差不累积——这是它能做实时控制的根基,也是它配叫 "policy" 而不是 "video generator" 的原因。

5. 推理加速栈(38× 的拆解)

层级优化H100GB200
baselinenaive1.1×
系统CFG 双卡并行1.9×1.8×
系统+ DiT caching(速度相似时复用)5.5×5.4×
实现+ torch.compile + CUDA Graphs8.9×10.9×
实现+ kernel/scheduler(cuDNN, GPU 化)9.6×14.8×
实现+ NVFP4 量化16.6×
模型+ DreamZero-Flash(解耦 schedule)38×

最终:5.7s → 150ms → 7Hz(p9-p10 Table 1)。

注意:DiT caching 和 NVFP4 不是数学等价,论文报告 minimal quality loss 但未给完整对照(我们读出的局限)。

6. DreamZero-Flash 的核心 trick

标准 DreamZero:video 和 action 共享 timestep t~U(0,1)。few-step 推理时 video 还很噪,但模型训练时学的是"两者同噪声级别",于是 action 从噪声 video 读条件 → 不准。

Flash:训练时把 video 的 timestep 偏向高噪声(t_vid = 1 - η, η~Beta(7,1),E[t_vid]=0.125),action 仍 uniform。让模型专门学"video 还很脏时也能输出干净 action",正好匹配 1-step 推理的真实条件(p9 Figure 5)。

结果(p17 Table 3):1 步推理从 52% → 74%,只比 4 步 baseline(83%)低 9 个点。这是论文里性价比最高的一个工程创新。

7. 与其它世界模型路线的根本区别(Appendix A)

路线建模对象部署
Latent world model(JEPA2/Dreamer)p(s_{t+1}\s_t,a_t) 前向动力学需要 goal-conditioned planning 或搜索
3D 点云 world model(PointWorld)3D 点流 conditioned on action需要 MPPI 等显式优化
WAM(DreamZero)**p(o,a\history)** 联合直接出动作轨迹,无 test-time 优化

这是 WAM 能做 7Hz 实时、search-based 路线做不到的根本原因(p20)。

Figure 1 p.1 key

Overview 四大卖点

Overview 四大卖点

原文 caption:By jointly predicting video and action, WAMs inherit world physics priors that enable 1) effective learning from diverse, non-repetitive data, 2) open-world generalization, 3) cross-embodiment learning from video-only data, and 4) few-shot adaptation to new robots.

门面图。多种数据源(双臂/单臂/人类第一视角/纯视频/语言/proprio)汇入中间的 DreamZero WAM;下方分别展示 30min play data few-shot 适配新本体、和 zero-shot 泛化到未见任务(解鞋带/按电梯/放橙子进南瓜)。核心信息:WAM 已经能直接当 policy 用,做零样本策略,且能从异质无动作标签数据学。

Figure 2 p.3 key

Video-Action 对齐(成功案例)

Video-Action 对齐(成功案例)

原文 caption:DreamZero jointly generates video and action. Predicted actions closely align with the generated video. Examples from totally unseen tasks.

上行为模型生成的未来视频,下行为实际执行,帧对帧吻合(任务:用锅铲炒蔬菜,训练未见)。支撑核心论断:失败主要来自 video 预测错,不是 action 提取错——说明 video 和 action 对齐很紧。

Figure 3 p.4 supportive

Free-form 自由测试

Free-form 自由测试

原文 caption:DreamZero performs a diverse range of tasks when conditioned on natural language instructions, including object manipulation, tool use, and human-robot interaction.

18 个自由测试任务的可视化清单(叠碗/扔垃圾/抽牌/双手交接/递工具给人/擦白板/拔电缆/碰拳等)。强调不是在固定任务集过拟合,能跟随自然语言做没见过的操作。100+ 自由测试任务里挑出来的。

Figure 4 p.6 key

Model Architecture(最重要)

Model Architecture(最重要)

原文 caption:Three inputs: visual context (VAE), language (text encoder), proprio (state encoder). Autoregressive DiT with flow matching jointly predicts video and action. Training: teacher forcing on noisy chunk conditioned on clean context. Inference: GT observations fed back into KV cache to prevent error accumulation.

全文最该看的图。左训练:三路输入→AR DiT(flow matching)→video/action 两路输出,前 chunk clean latent 作上下文,对当前 chunk 的 noisy [z_t,a_t] 联合去噪。右推理:chunk 执行后真实观测回填 KV-cache 替换预测帧,下个 chunk 基于真实上下文生成。同时回答输入怎么拼、video-action 怎么联合、闭环怎么消误差。

Figure 5 p.9 key

Flash 解耦 noise schedule

Flash 解耦 noise schedule

原文 caption:DreamZero (blue) uses coupled uniform noise. DreamZero-Flash (red) biases video toward high-noise via Beta(7,1) while keeping action uniform, training to predict clean actions from noisy visual context.

两子图:video timestep 和 action timestep 采样分布。蓝(标准)都 U(0,1);红(Flash)video 偏高噪声 Beta(7,1) E[t]=0.125,action 仍均匀。设计动机:1-step 推理时 video 还很脏但 action 要从干净 video 读条件——训练时让模型见惯'video 脏时也输出干净 action'。这是 Flash 把 1 步从 52% 拉到 74% 的关键。

Figure 6 p.11 supportive

AgiBot 数据统计

AgiBot 数据统计

原文 caption:Distribution statistics for the AgiBot pretraining corpus: episode durations, subtask density, and skill coverage across 7.2K episodes (~500 hours).

三子图。(a) episode 时长:7193 个,均 4.4min,长尾到 10min+。(b) 每 episode 子任务数:均 42.4,有的 100+。(c) 技能分布:导航/躯干调整/抓放/工具使用占比。支撑'数据多样性>重复性'——这些 episode 是长程多子任务跨环境真实部署式采集,和'一个任务重复 100 次'完全不同。

Figure 7 p.12 supportive

评测协议

评测协议

原文 caption:First-citizens of generalization evals: default setting is unseen environment and unseen objects.

训练地与评测地不同地理位置,默认评测即 OOD(unseen env+obj)。三档任务:seen(训练有类似动作,如换颜色叠衣)/unseen(动作完全没见过,如解鞋带/熨衣)/post-training 下游(叠衣/水果打包/收餐桌)。定义了论文所有结果的评测口径——unseen env+obj 是底线不是加分项。

Figure 8 p.13 key

Seen Task 结果

Seen Task 结果

原文 caption:DreamZero effectively learns from diverse data and generalizes to new environments, outperforming VLAs across all task categories. VLAs trained from scratch achieve near-zero success.

分组柱状图,三档任务(PnP Easy/Hard/Contact-Rich)× 5 checkpoint。AgiBot DreamZero 均 62.2%,最好 pretrained VLA 27.4%,scratch VLA≈0。回答 Q1:WAM 能从异质非重复数据学,VLA 不能——即使 VLA 在数千小时跨本体数据预训练过。

Figure 9 p.14 key

Unseen Task 结果

Unseen Task 结果

原文 caption:DreamZero achieves non-trivial task progress on 10 tasks absent from training, while VLAs struggle across both embodiments.

10 个训练完全没出现的任务(解鞋带/摘帽/画画/握手/拉车等)。AgiBot DreamZero 39.5%,pretrained VLA 16.3%;DROID success rate DreamZero 22.5%,GR00T 12.5%,π0.5 7.5%。关键观察:pretrained VLA 不管指令都倾向抓物体——过拟合到 pick-and-place,不理解新任务语义;DreamZero 能做视觉规划并执行。

Figure 10 p.15 supportive

Post-training 结果

Post-training 结果

原文 caption:WAMs enable stronger post-training results across three tasks, indicating environment generalization of DreamZero is retained after post-training.

三个下游任务(叠衣 33h/水果打包 12h/收餐桌 40h)post-training 结果。DreamZero 叠衣和收餐桌持平或略胜 pretrained VLA,水果打包明显胜出(76% vs 56%)。post-training 仍在 unseen 环境评测,说明 DreamZero 环境泛化能力 fine-tune 后没丢——WAM 的隐性优势。

Figure 11 p.15 key

Cross-Embodiment 跨本体迁移

Cross-Embodiment 跨本体迁移

原文 caption:Robot-to-robot (YAM → AgiBot) and human-to-robot embodiment transfer to unseen tasks.

两设置:Robot2Robot 用 YAM 双臂 video-only(20min,无动作标签)共训;Human2Robot 用人类第一视角视频(12min,无动作标签)共训。两条都让 unseen tasks 从 38.3% 涨到 54%+。关键:WAM 能用无动作标签视频增益 policy——video prediction objective 本身强化 world model 对任务动态的理解,不需 action。打开人类视频 scaling 路径。

Figure 12 p.16 key

Few-shot 新本体适配

Few-shot 新本体适配

原文 caption:Few-shot embodiment adaptation by post-training on 30 minutes of new embodiment play data, evaluating on pick-and-place variants requiring strong language following.

AgiBot 上训好的 checkpoint 用 55 轨迹(~30min)YAM play data post-train,迁移到全新本体 YAM,保留 zero-shot 泛化(能处理南瓜/泰迪熊/笔/杯面/纸袋等未见物体)。论文称数据效率新标杆。机制假设:学的是 implicit IDM(从视觉未来反推动作),比直接 policy learning 更 sample-efficient。

Figure 13 p.20 key

为什么 AR 不选 bidirectional

为什么 AR 不选 bidirectional

原文 caption:When sampling point falls mid-task (T=20), bidirectional WAMs must subsample video to align with language caption, distorting native FPS and degrading video-action alignment. AR avoids this by conditioning on video context.

双向模型要求固定长度。不 subsample,生成视频只覆盖任务片段,语言视频错位(mismatch 1/2);subsample 到任务区间,从任务中段(T=20)采样会扭曲原生帧率,video-action 对齐崩(mismatch)。AR 用视频上下文做条件,既保语言-视频对应又保原生帧率。这是 DreamZero 选 AR 的根本理由。

Figure 14 p.21 supportive

Attention mask 细节

Attention mask 细节

原文 caption:(a) QKV self-attention mask for training: given C0/C1/C2 conditioning, predict velocities of Z1/Z2/Z3 and Y1/Y2/Y3. (b) Inference: KV-cache of conditional frames concatenated; C0/C1/C2 during inference replaced with GT observations.

对应 chunk-wise teacher forcing 和 KV-cache 推理。训练下三角 mask 保证当前 chunk 能 attend 前面所有 clean context 但不看未来。推理 C0/C1/C2 换成 GT 观测,KV-cache 复用,Y3 能 attend C0/C1/C2——这就是'闭环用真实观测替换预测帧'的实现。是 Figure 4 推理部分的细节展开。

Figure 15 p.25 supportive

数据采集环境

数据采集环境

原文 caption:22 diverse real-world environments: offices, laboratories, restaurants, supermarkets, coffee shops, warehouses, homes, hotels.

22 个真实数据采集环境照片网格。是'数据多样性'的视觉证据,和 Figure 6 配合:Figure 6 给统计数字,Figure 15 给环境多样性证据。是 DreamZero 反直觉结论'多样性>重复性'的数据基础。

Figure 16 p.29 key

失败也对齐(关键 insight)

失败也对齐(关键 insight)

原文 caption:Generated video and action execution pair. Two examples where video prediction failed and robot followed the failed prediction faithfully.

两个失败案例。上行为模型生成的未来视频,下行为实际执行。模型生成的视频错了(如动作方向预测反),机器人忠实执行了错误轨迹。反向证明 action 和 video 对齐很紧——失败主要来自 video 预测错,action 提取本身没问题。这是论文最有力论断之一:'改进 policy 等价于改进 video backbone'。

🎧 音频版

时长 15:15 · Edge TTS

DreamZero:把视频模型变成零样本策略

2026 年 2 月 19 日,NVIDIA 的 Seonghyeon Ye 等人发布的论文,标题是 World Action Models are Zero-shot Policies。

这篇论文要解决一个很具体的问题:现有的 VLA 只能在语义层泛化——换物体、换指令能行;但换一个它没训练过的动作,比如解鞋带,它就失败。

为什么 VLA 做不到?因为 VLA 是从视觉语言模型 VLM 初始化的,它继承了 web 数据的语义先验,知道"可乐罐是什么、Taylor Swift 在哪",但没有继承物理动态先验——它学到的是"看见什么就出什么动作"的映射,没有学"我这样做,世界会怎么变"。所以它必须靠大量重复示教,把每个技能覆盖一遍。

DreamZero 的核心命题是:如果你让模型既预测未来视频、又预测动作,让动作变成"从想象的未来里反推出来"的,那你就能从异质、非重复的真实数据里学到泛化策略。 这条路它走通了,还顺带把一个 14B 的视频扩散模型压到了 7 赫兹实时闭环。

它的输入和输出到底是什么

你需要在脑子里先建一个模块图。

输入有三路:视觉观测,当前和历史画面,如果是多视角,直接在通道维拼成一帧,不改主干;语言指令,一个冻结的文本编码器处理;本体感受,机器人自己的关节状态,走一个新增的、参数量很小的 state encoder。

输出有两路,是同时出来的:未来视频的 latent,每 chunk 出两个 latent 帧;以及一个 action chunk,Agibot 平台是 48 步动作,30 赫兹控制频率,DROID 平台是 24 步,15 赫兹。一个 chunk 跨度固定 1.6 秒。最大上下文能看 6.6 秒。

这两路输出共用同一个主干,这是 DreamZero 最关键的设计——它不是两个 head 各做各的。

输入到底怎么拼成一条序列

光说三路输入还不够具体,我把它拆成一条显式的拼接序列,你在脑子里能建出来。

序列大致长这样:开头是 <bos_context>,里面是历史 chunk 序列——每个 chunk 是一个 (video latent, action latent) 对,按时间从老到新排,比如 (C_1, A_1)、(C_2, A_2),一直到当前的上下文边界。然后是 <eos_context>。接着 <bos_lang> 包语言指令经 text encoder,<eos_lang>。再 <bos_state> 包当前 chunk 的 proprioceptive state,<eos_state>。最后 <bos_chunk> 是当前要联合去噪的 [video latent z, action latent a] 对,<eos_chunk>

这里有几个坑要特别说清,不然容易误解。第一,语言指令不是像 LLM 那样跟视觉 token 拼在一起做自回归——它是用 cross-attention 注入到每个 DiT block 里,是个条件,不是序列的一部分。真正做序列拼接的,是 chunk 级的 video 和 action 对。

第二,多视角不进入序列拼接,它在更早就被处理掉了——多个视角的图像在通道维拼成一张图,再一起过 VAE 编码成一个 video latent。所以从序列层面看,一个 chunk 就是一个 chunk,不区分视角。

第三,训练和推理时这条序列长得不一样。训练时,历史 chunk 是干净的 teacher-forcing context,里面是真实视频和真实动作的 latent。推理时,这些历史 chunk 的位置在 KV-cache 里被替换成了真实环境的观测——动作是模型自己生成的、但视频是真实世界给的。这就是闭环替换:序列结构没变,但 context 里的内容从"模型预测"换成了"真实观测"。

记住这条序列,后面听别的 WAM 论文你会反复遇到类似的拼接,区别往往就在 context 怎么组织、language 怎么注入、video 和 action 怎么耦合。DreamZero 的答案是:context 是 chunk 级 [video, action] 对,language 是 cross-attention,当前 chunk 的 video 和 action 在同一个 timestep 下联合去噪。

架构:一个 14B 的视频扩散模型,加最小的新参数

主干是 Wan2.1-I2V-14B,一个 image-to-video 的 diffusion 模型。DreamZero 的策略是尽量不动它——VAE、文本编码器、图像编码器全冻结,只新增三样小东西:state encoder、action encoder、action decoder。这样做的目的是保住视频模型从 web 视频里学到的物理先验。

训练用 flow matching,也就是让模型预测一个 velocity,把噪声移到干净样本。重点是它对 video latent 和 action latent 是联合去噪的:同一个 chunk 内,两者共享 timestep,一起插值、一起预测 velocity,loss 是一起算的。

结构上它选了 autoregressive,不是 bidirectional。这一点论文有专门的论证,值得讲。双向 diffusion 要求固定长度序列,但长程示教里语言指令往往只对应任务的一段。你不 subsample,生成的视频只覆盖任务片段,语言和视频对不上;你 subsample,在闭环里从任务中段采样会扭曲原生帧率,视频和动作就对不齐。autoregressive 用视频上下文做条件,既保住语言-视频对应,又保住原生帧率,三模态对齐才稳。顺带一提,AR 加 KV-cache,推理比双向快 3 到 4 倍。

给你一个数值 sense:这套模型到底多大

光说 14B 可能没感觉,我把维度念细一点。

主干 DiT 是 14B 参数,hidden dimension 5120,40 层 transformer block,每块 40 个注意力头,feedforward 维度 13824。视频输入分辨率是 480P,实际面积固定、长宽比跟输入图走,典型是 832×480。

VAE 是 Wan 自家的 3D causal VAE,把 raw 视频压到 latent:空间 8 倍下采样(832×480 → 104×60),时间 4 倍下采样(每 4 帧压成 1 个 latent 帧),latent 通道数 16。也就是说每帧 raw 视频大约对应 104×60×16 ≈ 10 万维的 latent,但时间维被压了 4 倍。

回到 DreamZero 的 chunk 设置:每个 chunk K=2 个 latent 帧,对应 8 个 raw 视频帧;视频采样率 5FPS,所以一个 chunk 跨 1.6 秒,跟前面说的 action chunk 跨度一致。默认 M=4 个 chunk 上下文,共 8 个 latent 帧 = 33 个 raw 帧 = 6.6 秒视觉记忆。AgiBot 上视频 5FPS、动作 30Hz、H=48;DROID 上视频 5FPS、动作 15Hz、H=24——两边 chunk 时长都精确锁在 1.6 秒。

动作那边是连续的相对关节位置,论文没给每维具体含义,但 Agibot G1 是双臂移动平台,自由度应该十几到二十几;DROID 用 Franka 单臂 7 自由度加夹爪。action latent 和 video latent 是在同一个 DiT 里联合去噪的,共享 timestep、共享 velocity 预测头——这是"joint"这个词的物理含义。

训练规模:AgiBot 和 DROID 都是 100K steps、global batch 128,更新所有 DiT 块加 state/action encoder/decoder,冻结 text/image encoder 和 VAE。论文试过 LoRA,结果不行,所以是全参数更新。

记住这套数字,后面听其它 WAM 论文时,你可以拿它当标尺:14B DiT、16 通道 latent、K=2/M=4、1.6 秒 chunk、6.6 秒上下文、100K steps × batch 128。这是个非常大的训练量。

真正让 WAM 能做实时控制的:闭环 KV-cache 替换

这是 DreamZero 区别于"纯视频生成器"最根本的一点,也是它配叫 policy 的原因。

纯 autoregressive 视频生成有个老毛病——误差累积,越生成越偏。DreamZero 的解法是在闭环里,每生成一个 chunk 的视频加动作、把动作执行掉之后,用真实环境的观测,把 KV-cache 里那个 chunk 的预测帧替换掉,再生成下一个 chunk。

也就是说,KV-cache 始终被真实观测不断纠正,误差不累积。视频模型在这里充当"想象下一步"的中间件,动作执行完立刻被真实世界校准。这是它能做 7 赫兹实时控制、而不只是停留在生成漂亮视频层面的根本。

38 倍加速是怎么堆出来的

一个 14B 的 diffusion 模型,naive 实现单卡要 5.7 秒一个 chunk,完全没法闭环。论文把加速拆成三层,我按性价比给你念一遍。

系统层:CFG 双卡并行,把 conditional 和 unconditional 两个前向分到两张卡,单步延迟降 47%;DiT caching,连续两步预测的 velocity 方向余弦相似度超过阈值就复用,把 16 步有效降到 4 步。

实现层:torch.compile 加 CUDA Graphs 消 CPU 开销;NVFP4 量化(Blackwell 上,敏感层 QKV 和 Softmax 保 FP8、非线性保 FP16);attention 用 cuDNN、scheduler 搬到 GPU 消同步。

模型层:这就是 DreamZero-Flash,也是我认为这篇论文里最聪明的一个工程 trick,单独讲。

三层叠加:H100 上 9.6 倍,GB200 上 16.6 倍,加上 Flash 共 38 倍,把 5.7 秒压到 150 毫秒,7 赫兹闭环。

有一点要诚实说:DiT caching 和 NVFP4 这两项不是数学等价,论文只说 minimal quality loss,没给完整精度对照。这是我们读出的局限。

DreamZero-Flash:一个解耦 noise schedule 的小设计

问题是这样的。标准 DreamZero 训练时,video 和 action 共享 timestep,两者噪声级别一致。但你做 few-step 推理时——比如只跑 1 步——video 还没去噪干净,action 却要从干净的 video 里读条件。训练学和推理用对不上,action 就崩。naive 把 4 步砍到 1 步,table bussing 任务进度从 83% 掉到 52%。

Flash 的解法:训练时把 video 的 timestep 偏向高噪声——t_vid 等于 1 减 η,η 服从 Beta(7,1),期望 t_vid 是 0.125,也就是模型主要在 video 很脏的条件下训练;action 的 timestep 还是 uniform。等于专门训练模型"video 还很噪时也能输出干净 action",正好匹配 1 步推理的真实条件。

结果:1 步推理从 52% 恢复到 74%,只比 4 步 baseline 的 83% 低 9 个点,速度 2.33 倍。这是整个论文里杠杆比最高的一个设计。

数据哲学:多样性大于重复性

这点很反直觉,值得记住。同样 500 小时数据,一组是 diverse 的——22 个环境、7193 个 episode、平均每个 episode 4.4 分钟 42 个子任务;另一组是 repetitive 的——70 个任务,每个任务大量重复示教。在简单的 pick-and-place 上,diverse 是 50%,repetitive 是 33%。

论文给的解释是:video prediction 主要是从预训练继承的,真正要在机器人数据上学的是 inverse dynamics——从视觉未来反推动作。inverse dynamics 要稳,就需要多样的状态-动作对应,repetitive 数据天然没有。

关键结果:不仅赢,而且赢在 VLA 最弱的地方

我挑几个有对照的数字。

Seen tasks,unseen 环境 + unseen 物体:Agibot G1 上,DreamZero 平均 task progress 62.2%,最好的 pretrained VLA baseline 是 27.4%。注意这些 baseline 是在数千小时跨本体数据上预训练过的,DreamZero 只用了 500 小时自采数据。从零训的 VLA 基本是 0。

Unseen tasks,10 个训练里没出现过的任务,比如解鞋带、熨衣服、画画、握手:Agibot 上 DreamZero 39.5%,pretrained VLA 是 16.3%。DROID-Franka 上 success rate DreamZero 22.5%,GR00T N1.6 pretrained 是 12.5%,π0.5 是 7.5%。

跨本体迁移:用 20 分钟 YAM 机器人的 video-only 数据(没有动作标签)共训,unseen tasks 从 38.3% 提到 55.4%;用 12 分钟人类第一视角视频,从 38.3% 提到 54.3%。两条路都涨,robot-to-robot 涨得更多,因为形态更接近。

Few-shot 新本体适配:把 Agibot 上训好的 checkpoint,用 55 轨迹、约 30 分钟 YAM play data post-train,就能迁移到全新机器人 YAM 上,还保留 zero-shot 泛化。论文说这是数据效率的新标杆。

一个最值得记住的 insight

论文里有一句话,我建议你重点记:"Most DreamZero failures stem from video generation errors rather than action prediction—the policy faithfully executes whatever trajectory the video predicts."

翻译过来:DreamZero 失败,主要是 video 预测错了,而不是 action 提取错了——policy 忠实执行 video 描述的轨迹。

这句话分量很重。它意味着两件事:第一,动作和视频已经对齐得很紧,模型没有"乱动";第二,改进 policy 等价于改进 video backbone。这给了 WAM 路线一个非常直接的 scaling law 论证——video 模型越强,policy 就越强。这是 VLA 路线给不出的论证。

局限:别替它过度外推

论文自己承认的:它还是 System 1,视觉记忆只有 6.6 秒,长程推理要靠 System 2 planner 或更长上下文;高精度任务(亚厘米级,比如钥匙插入)仍是 behavior cloning 的通病,diverse pretraining 反而稀释了密集示教;7 赫兹依赖 2 张 GB200,比消费级 GPU 上的 VLA(20 赫兹以上)还是贵。

我们读出的:跨本体实验里 YAM 和 Agibot 都是双臂 parallel gripper,形态接近,收益部分来自此;人类视频迁移在形态差异更大时是否仍成立,论文没证。seen 和 unseen task 的边界依赖人工定义(动作加物体类型),有主观空间。

所以,DreamZero 是 WAM 路线的一个强证据,但它支持的是"world 和 action 应该一起建模"这个方向,不等于工业现场的连续运行、节拍、干预率和 ROI 已经解决。

一句话收束

DreamZero 把一个 14B 的视频扩散模型,通过联合 video-action 训练、闭环 KV-cache 替换、和一套包括 Flash 在内的加速栈,变成了 7 赫兹实时闭环的 zero-shot policy。它最有力的论证落在"失败来自视频、不来自动作"这一点上——这把 policy 的改进问题,变成了 video backbone 的改进问题。