【VLA与模仿学习】DreamZero论文精读
源码阅读入口(2026-11-04)
公开仓库按 HEADab790c1核对。
- 先大框架,再读数据、编码、注意力、loss、KV与Flash的具体代码。
- Wan完整训练框架图:VAE、I2V条件、DiT和Flow Matching。
- 仓库默认 Flash 关闭、推理循环默认16步;不要把论文一步150ms直接当成仓库默认状态。局部检查与整网/真机边界均在源码导读列出。
一句话定位
用 14B 预训练视频扩散当骨干,同一模型联合去噪「未来视频 + 机器人动作」(称为 WAM),让策略从「杂而不重复」的真机数据里学物理,并在真机上比 SOTA VLA 更好泛化到新任务/新环境;系统优化后约 7 Hz 闭环。
本页概念卡
- 范式:World Action Model · 世界模型 · VLA
- 本文:DreamZero · DreamZero-Flash
- 机理:IDM · Flow Matching · DiT
- 对照:GR00T-N1 · π0.5
1. 背景概念(给新人)
- Vision-Language-Action Model(VLA,视觉-语言-动作模型):看图 + 听指令 → 直接出机器人动作。像「看一眼就动手」的熟练工。见 VLA。
- World Model(世界模型):学「世界下一会儿会怎样」,常预测未来观测/latent。见 世界模型。
- World Action Model(WAM,世界动作模型):世界模型当策略——同时预测视觉未来与动作,让「手怎么动」跟「画面怎么变」对齐。见 WAM。
- Inverse Dynamics Model(IDM,逆动力学模型):已知「从画面 A 到画面 B」,反推该发什么动作。DreamZero 把「视频预测 + IDM」揉进一个端到端扩散网络,而不是两套模型拼装。见 IDM。
- Flow Matching(流匹配):一种生成模型训练目标,学「噪声 → 干净样本」的速度场;DreamZero 对视频 latent 与动作一起做。见 Flow Matching。
技术线:具身操作基础模型;站在「视频基础模型下凡做策略」这条线上,和 Cosmos Policy 等并列,阅读路线见《近期 World Action Model 论文地图与阅读路线》。
2. 论文在干什么
- 问题:VLA 会认物体、懂「把可乐放到 Taylor Swift 旁边」这类语义,但若训练里没「解鞋带」这类运动本身,就很难零样本做出来;而且传统 VLA 数据哲学偏「同一任务多遍重复演示」,对「长 episode、多子任务、少重复」的杂数据吃得费劲。
- 设定:
- 本体:AgiBot G1(移动双臂)~500h 自采异质遥操作;Franka + 公开 DROID;跨本体用 YAM / 人类第一人称视频。
- 输入:语言指令 c c c、本体 q q q、当前及历史观测;输出:未来视频块 + 连续动作块(默认相对关节)。
- 评测默认:新环境 + 新物体(采集地与评测地不同地理),分 seen / unseen 任务(unseen = 训练里没有的动词/运动类型)。
2.1 DROID 数据先看图(2026-11-04补充)
为什么动作补到32维,补齐维度却不做直接监督?含padding、mask与实际loss代码。
**长度口径:**原视频长度可变(本地示例各419帧);当前样本最多4块、实际块数可变;每块固定24个源步。4块对应96条动作、33幅视频采样图,并非原视频固定96帧。详见源码导读§2.7。
不用跳文件的逐段代码讲解
8个视频偏移、24条动作、q99归一化、相机硬拼接:直接看代码与手算。

这是公开仓库三路示例 MP4 的真实画面,分别来自两台外部相机和腕部相机;下方拼图由当前源码生成。视频均为320×180、15 FPS、419帧。没有配套动作文件,因此不把画面与教学动作数字当成真实配对数据。

这张是按代码采样规则绘制的教学图:4块样本对应33幅视频采样图、96条动作、4条状态;视频经VAE变成9个latent时间位置。图像、动作与状态覆盖同一段过程,但采样频率不同。
完整的真实片段动画、逐时刻画面对比、动作归一化/mask和张量形状,见 源码导读第2节:DROID图文讲解。
3. 核心创新点
- 把 WAM 做成可落地的 14B 零样本策略:联合视频–动作,不再只当「辅助想象」。
- 能利用多样、少重复的机器人演示:在本文等时长数据对照中,多样数据比重复数据的 PnP Easy 平均任务进度更高(50% vs 33%);不是所有任务上“多样性永远胜过重复”的定律。PnP = Pick and Place(抓取并放置),术语与数据例子见下节。
- 自回归 chunk + 闭环用真观测刷新 KV:推理快、帧率对齐好、减轻视频自回归误差累积。
- 系统 + DreamZero-Flash:38× 加速量级,约 7 Hz 实时闭环。
- 两种跨本体:仅视频(无动作标签)10–20 分钟提升未见任务;30 分钟 play data 适配新本体并保留语言跟随。
3.1 术语问答:PnP 与“异质非重复数据”
2026-11-04 核对论文 §4.1、§5.2 Table 4 与附录 E/F 后补充。
**PnP = Pick and Place,抓取并放置。**例如机械臂抓起苹果,再放进盘子。动作过程包括靠近、抓住、搬运、释放。DreamZero 的 PnP Easy 是作者的评测分组名,实际包括水果抓放、从袋子取水果、擦拭污渍;因此这组并非每项都严格是抓放。PnP Hard 包含叉勺抓放、笔插笔筒、杯子放杯垫、碗杯堆叠等更要求精确操作的任务。
**异质(heterogeneous)**在这里表示演示经历差异大:任务、物体、场景、初始状态、动作和任务衔接等多种情况混合。并非专指多种文件格式、多传感器模态,也不等于必须混合不同机器人。本文主实验对 AgiBot 与 Franka 分别训练。
**非重复(non-repetitive)**表示采集重点不是把固定任务在相近布置下重复大量遍;不意味着每个动作或任务只出现一次,也不意味着随机无目的动作。多样数据仍是有任务目的的遥操作演示(人控制机器人执行,记录相机画面、机器人状态与动作)。
下面是教学对比,不是原始数据逐条清单:
| 重复为主的演示 | 多样为主的演示 |
|---|---|
| 苹果放左边,盘子放右边,抓放一遍后复位,再重复很多遍 | 收餐具、擦桌子、整理调料,下一段去其他场景做不同事情 |
| 有若干任务,但每项任务大量使用相似布置和位置 | 任务、物体、场景和开始状态不断变化 |
| 每项行为的示范更密集 | 相同时间预算覆盖更广的情境 |
论文多样数据约 500 小时、22 个环境。附录 E 说明每条 episode(一次连续记录)选三个较粗粒度的任务连续执行;“清理桌面”这样的粗任务还能细分为拿起、搬运、放下等多个子任务,因此论文的约 42 个子任务/episode 与三个粗任务不矛盾。某任务采满 50 条 episode 后会从任务表移除以鼓励采新任务,这也说明“非重复”不等于绝不重复。
**50% vs 33% 应如何读:**两组训练数据都是 500 小时,对照重复组有 70 个任务并在相似物体位置/配置下反复演示;消融模型统一训练 50K steps、batch size 32。Table 4 的 PnP Easy 平均任务进度为 Diverse 50% ± 6.3%、Repetitive 33% ± 4.2%(标准误),相差 17 个百分点。不能说“完整成功率是 50% vs 33%”。任务进度允许部分完成获得分数;平均进度 50% 不代表一半实验完整成功。教学例子:若人为把一个任务均分成四阶段,完成两阶段可记为 0.5;真实评测阶段与权重应以作者标准为准。
**作者的解释(假设而非证明):**视频预训练已提供丰富的视觉运动经验,机器人数据需要教会模型把画面变化和可执行动作联系起来;更广的状态—动作对应关系可能更利于泛化。重复演示仍能帮助特定技能稳定执行,表中结果只支持本实验条件下的多样数据优势。
来源:DreamZero 原文,§4.1 评测分组、§5.2 Table 4、附录 E/F。此处为论文核验,未复现实验。
4. 方法细节
4.1 问题分解(式 1 直觉)
联合预测可拆成:
π ( o l : l + H , a l : l + H ∣ … ) = π ( o l : l + H ∣ … ) ⏟ 视频预测 ⋅ π ( a l : l + H ∣ o 0 : l + H , … ) ⏟ IDM \pi(o_{l:l+H}, a_{l:l+H} \mid \ldots) = \underbrace{\pi(o_{l:l+H}\mid\ldots)}_{\text{视频预测}} \cdot \underbrace{\pi(a_{l:l+H}\mid o_{0:l+H},\ldots)}_{\text{IDM}} π(ol:l+H,al:l+H∣…)=视频预测 π(ol:l+H∣…)⋅IDM π(al:l+H∣o0:l+H,…)
作者不用两个独立网络,而是单模型端到端联合去噪,逼视频与动作深度对齐。
4.2 架构要点
- 骨干:Wan2.1-I2V-14B-480P;冻结 text / image encoder / VAE;更新全部 DiT、状态与动作编解码。
- 多相机:视角拼进同一帧,少改骨干。
- 只对视频做自回归 chunk(每 chunk K K K 个 latent 帧对齐动作 horizon);动作不在 chunk 间开环自回归,避免动作误差滚雪球。
- 训练:Flow Matching;视频与动作共享 denoising timestep(主训阶段);teacher forcing——当前噪声 chunk 条件在干净历史 chunk 上。
- 推理:KV cache;每执行完一块,用真实观测替换预测帧再进 cache(闭环特有优势)。
4.2.0 先读懂:DreamZero 里面的 Wan2.1 到底是什么
2026-11-04 问答补充。此处讨论 DreamZero,不能套用 InternVLA-N1 的 1.3B、S2 latent plan 替换 T5 的设定。
Wan2.1 是 DreamZero 的预训练视频生成基座。“基座/骨干”指模型的主要计算网络从已有模型的权重起步,再扩展接口并继续训练。DreamZero 具体使用 Wan2.1-I2V-14B-480P:2.1 是版本,I2V 是 Image-to-Video(图生视频),14B 约 140 亿参数,480P 是所用原始视频基座版本的分辨率标识,不能直接当成 DreamZero 所有训练图像的尺寸。
输入是什么、输出是什么、真值是什么
| 项目 | 原始 Wan 图生视频 | 改造成 DreamZero 后 |
|---|---|---|
| 输入条件 | 起始图像、文字提示 | 当前与历史视觉观测、语言指令、机器人本体状态 q(如关节位置) |
| 输出 | 后续视频 | 同一未来时间段的视频与机器人动作块 |
| 数据真值 | 视频片段 | 机器人演示中时间对齐的后续视频与记录动作;仅视频数据缺少动作标签,不能凭空当成完整动作监督 |
教学例子:指令“拿起桌上的杯子”。原始 Wan 可以生成手靠近杯子、杯子被拿起的画面,但这些画面不自带目标机器人的关节控制值。DreamZero 在机器人数据上学习,让“机械臂靠近杯子”的预测画面与同一时间段的实际动作配套生成。
Wan 内部三个部件,各自做什么
- 文本编码器:把指令变成条件向量。
- 视频 VAE:编码器把图像/视频压缩成 video latent,解码器把生成的 latent 还原为画面。latent 是数值张量,不是一段文字。
- DiT(Diffusion Transformer):主要生成网络。结合条件和当前噪声表示,预测如何更新生成内容;采用 Flow Matching 训练。
DreamZero 增加机器人状态编码、动作编码和动作解码接口,调整成分块自回归生成。动作数值被映射为网络可处理的 token,与视频表示共同参与生成。机器人训练阶段冻结文本编码器、图像编码器与 VAE,更新全部 DiT blocks 以及状态/动作编解码模块。
当前/历史画面 → 视觉编码/视频 VAE ─┐
语言指令 → 文本编码器 ────────────┼→ 条件
机器人本体状态 → 状态编码器 ─────┘
↓
待生成视频的噪声 + 待生成动作的噪声
↓
从 Wan 初始化并经过机器人训练的 DiT
联合、多步更新
↙ ↘
未来视频表示 未来动作表示
↓ ↓
视频解码 动作解码
↓ ↓
预测画面 动作序列 → 执行
这是教学图,省略具体投影、图像条件支路、注意力 mask 与缓存细节。关键是一次联合生成过程同时更新视频和动作,不是先把完整视频交给第二个独立网络再反推动作。
训练监督是什么
普通机器人演示中,同一时间段有两份配套答案:后续画面 o 与记录动作 a。画面经 VAE 得到 z;动作做归一化。训练将两者与随机噪声混合,网络学习两者各自从噪声指向真实数据的速度。
按论文式 2 的约定,t=0 为噪声,t=1 为干净数据:x_t=(1−t)ε+t x,目标速度 x−ε;这里 x 可以是视频 latent 或归一化动作。式 3 对联合速度的预测误差做加权平方损失。不要把“数据真值是视频/动作”误读为只比较最后解码出来的视频像素;生成时间 t 也不是机器人执行的实际秒数。
为什么选 Wan,是否原来就懂控制
Wan 的大规模视频预训练提供物体运动、视角、接触变化的视觉先验。DreamZero 用机器人演示进一步把这些视觉变化与具体机器人的动作对应起来。视觉先验是学到的统计规律,不是精确物理求解器;能生成拿杯子视频也不代表原始 Wan 已有机械臂控制能力。
执行动作后,DreamZero 重新接收相机真实观测,用真实观测刷新历史缓存,继续预测下一块,从而形成闭环。预测画面不等于未来已发生的事实。
来源:DreamZero 原文 §3.1 / Fig.4 / 附录 C、官方仓库、Wan2.1 官方架构。本节是论文与官方资料核验,未运行模型或验证真机。
4.2.1 附录 B:双向、自回归与视频—动作—语言对齐
**核验依据:**原论文 §3.1、附录 B 的 Figure 13(印刷页 20)与说明(页 21)、附录 C Figure 14 与训练参数(页 21);官方全文。本节的算例是教学假设,参数表另列论文原值。
先区分“双向”与“自回归”
- **双向(bidirectional)**说的是时间位置间的注意力:在一个待生成的视频窗口内,较早和较晚位置可以相互参考,一起参与去噪。不是“视频到动作、动作到视频”两个方向,也不是扩散正向加噪/反向去噪的两个过程。
- **自回归(autoregressive)**说的是按时间块继续预测:先有过去观测,再生成下一块。DreamZero 的每块内部仍用扩散/flow matching 联合生成视频和动作;“自回归”和“扩散”可以同时成立。
- 固定长度指常见双向视频生成实现使用固定帧数窗口,并不是数学上双向注意力只能接收固定长度。DreamZero 自回归的单个块也有固定长度。
对齐包含三件事
- **语言—视频:**整条指令描述的任务,与模型看见的历史/生成的片段相匹配。
- **视频—动作时间:**画面变化和动作覆盖同一段实际时间,采样比例一致。
- **视频—动作物理一致性:**配套动作能否真的造成预测画面里的变化。时间上对齐不自动保证物理正确。
附录 B 的两难:短视频窗口怎样对应长任务?
Figure 13 的全局指令是“把黑色物体放入抽屉,然后关上抽屉”。任务横跨 T=0 到 T=30,当前训练采样点位于 T=20;这些是图上的时间标记,不在本文擅自补成论文明确给定的秒数。
闭环机器人必须能在任务中途预测下一步,因为每执行一段就重新读取真实观测,并非永远从任务第一帧开始。
- **保持帧率、只给短未来窗口:**片段可能只出现“关抽屉”,但全局文字包含之前的“拿物体、放进抽屉”。如果没有足够历史,模型难以知道前面做过什么、现在处于哪一步。作者把这称为语言与视频不匹配,并报告内部视频预测测试上的语言跟随退化。
- **抽稀视频、让固定帧数覆盖长任务:**全任务更容易落进窗口,但帧间实际时间被拉大。动作若仍按原来的频率与固定 horizon 采样,视频和动作的跨度/比例便容易不匹配。图 13 用上方视频采样范围与下方动作采样范围的差别说明这一点。
不能把它简化为“每个短片段都必须完整展示整条语言指令”。关键在于该训练设置缺少足够上下文,又用固定帧数去兼顾全局任务语义和局部动作时序。
教学算例:抽帧怎样改变时间比例?
假设输入视频采用 5 FPS,动作 30 Hz。即每 0.2 秒一帧,每 1/30 秒一条动作。用左闭右开时间区间解释对应关系:
| 视频区间 | 对应动作样本 |
|---|---|
| [0.0, 0.2) 秒 | a0 至 a5,共 6 条 |
| [0.2, 0.4) 秒 | a6 至 a11,共 6 条 |
| [0.4, 0.6) 秒 | a12 至 a17,共 6 条 |
这不是“一帧一定对应一条动作”,而是同一实际时间内的 1:6 采样比例。
现在为了把更长任务装进同样帧数,每 5 帧留一帧:视频变为每 1 秒一帧,即 1 FPS。此时每对相邻帧之间应对应 30 条动作;若还按每帧 6 条动作配对,就把 1 秒的视觉变化对应到 0.2 秒的动作过程。即使同步调整动作、保证时间戳不出错,抽稀后也仍丢失中间抓取、接触、释放等视觉细节。
**抽帧不必然造成错误配对。**同步重采样动作、明确时间戳与时间间隔,可以维持时间对齐;代价是不同时间分辨率或其他设计复杂度。论文讲的是其对照配方下的困难,不能推导成所有双向模型必定失败。
自回归 + KV cache 怎样缓解?
把历史和预测拆开:
全局指令:放入黑色物体,再关抽屉
历史观测:已拿到物体 → 已放进抽屉 (条件上下文)
当前画面:手在抽屉边缘
下一小块:按固定采样率预测视频 + 同时间段动作
执行后:读取真实观测 → 更新历史缓存 → 继续下一块
于是当前小块只展示“关抽屉”也有上下文解释:前面已经放好了物体,不需要强迫这一小块重新覆盖整个任务。
**KV cache(键值缓存)**存的是历史 token 在注意力层中的 Key/Value 表示,不是原始视频,也不是动作时间戳表。因果上下文的历史表示可以复用,使处理历史的成本更可控。真正的时间对齐还依赖采样率、动作 horizon、视频块划分与配对规则;缓存本身不会自动同步相机和机器人。
论文实际数值:不要把 native FPS 解读成相机原始帧率
附录 C 明确写训练视频采样为 5 FPS,而非完全不抽帧:
| 数据 | 视频采样率 | 动作采样率 | 每块动作数 H | 每块时间 |
|---|---|---|---|---|
| AgiBot | 5 FPS | 30 Hz | 48 | 48/30 = 1.6 秒 |
| DROID | 5 FPS | 15 Hz | 24 | 24/15 = 1.6 秒 |
这里“保留帧率”应结合配方理解:不为了将长任务硬塞进固定预测窗口而进一步改变所选视频时间分辨率。不是承诺保留摄像头原始 30 FPS,也不是视频和动作必须同频。
每块设为 K=2 个视频 latent 帧,默认 M=4 块,最大上下文为 8 latent 帧;论文对应为 33 个 raw 帧、约 6.6 秒。latent 帧是视频编码后的压缩时间表示,不能当成单张原始相机图。
因此,正文“任意长度上下文”表达的是架构能够继续分块、复用历史的能力,不是实际模型具有无限显存或无限上下文。作者公开配置明确设有上限,也将扩大上下文列为未来工作。
**读完应记住:**作者用“历史条件 + 局部固定时间块”缓解“全局任务文字 + 固定帧数视频窗口”的矛盾;KV cache 使这种历史条件化更高效,精确时间对齐仍来自明确的跨模态时间采样设计。
4.3 实时:异步 + 系统优化 + Flash
| 层级 | 做法 | 作用 |
|---|---|---|
| 执行 | 异步闭环:边跑上一 chunk,边算下一 chunk | 延迟目标约 <200 ms(48 步@30Hz ≈1.6s/chunk) |
| 系统 | CFG 双 GPU、DiT velocity cache(16→~4 等效步) | 降每步延迟 |
| 实现 | torch.compile / CUDA Graphs、NVFP4 量化、cuDNN attention | 再砍开销 |
| 模型 | DreamZero-Flash:视频噪声偏高、动作均匀 | 支持 1 步去噪仍保动作质量 |
朴素单卡约 5.7 s/chunk;优化后 Flash 约 150 ms。
4.3.0 从零理解 KV cache 与 DreamZero-Flash
2026-11-04 问答;核对论文 §3.1、§3.2.5、Table 3、附录 D.3。两种加速针对不同计算:KV cache 复用历史上下文的注意力中间表示;Flash 改变训练噪声搭配以适应少步动作生成。
KV cache:已经看过的历史,不必每次从头加工
输入/输出:注意力层将历史 token 的特征 X 投影成 K、V,缓存起来;下一块当前 token 产生 Q,与缓存 K 匹配,再读取 V,得到含历史信息的新特征。token 是送入 Transformer 的一个数值向量;一张画面通常对应许多 token。
- Q(Query,查询):当前位置要找什么信息。
- K(Key,键):各位置供匹配的特征,可类比索引。
- V(Value,值):匹配后实际读取的内容。
教学公式:Q=X_new W_Q,K_old=X_old W_K,V_old=X_old W_V。忽略多头与当前位置 token 时,当前读取历史为 softmax(Q K_old^T / sqrt(d)) V_old。d 为单个注意力头 Q/K 的维度。实际注意力还按 mask 读取允许访问的当前位置等 token。
教学形状:假设缓存有三个历史 token、每个维度 d=2,则 K_old 和 V_old 都是 [3,2];当前 Q 为 [1,2],Q K_old^T 为 [1,3],softmax 后得到三个读取权重。若权重恰为 [0.1,0.2,0.7],输出即 0.1V1+0.2V2+0.7V3。缓存避免重新计算旧 K/V,但当前 Q 与旧 K 的匹配、加权读 V 仍需计算。此例不是模型实际只有三个 token 或 d=2。
拿杯子的历史可以是“杯子在桌上→手已靠近→夹爪已闭合”。预测下一块时复用这些历史的 K/V。每层、每个注意力头有各自表示;缓存不是原始视频、不是简单存一张最终特征图,也不是把模型训练权重改写成这段经历。缓存占显存且受上下文长度限制。因果/分块 mask 使已完成历史可复用,不能直接把未来还会改变的噪声 token 当作永久固定历史。
执行后若杯子滑落,DreamZero 接收真实相机观测,将其编码并刷新历史缓存,替换/丢弃对应生成预测的表示。不是把原始 RGB 字节直接塞进 K/V,也不是继续把“预测已拿稳”的画面当成事实。这种闭环反馈缓解预测误差连续累积,但不保证所有执行误差消失。
Flash:让动作先变得可用,不必等未来视频表示充分去噪
输入/输出与普通 DreamZero 的职责一致:语言、真实视觉上下文、机器人状态为条件,联合生成未来视频和动作。训练监督仍来自演示的视频与动作,经 Flow Matching 构造目标速度。Flash 是主训练后的训练变体,不是换一个小模型,也不是 FlashAttention。
普通训练让当前生成块的视频与动作共享噪声时间 t。按正文式 2,x_t=(1−t)ε+t x_clean:t=0 为噪声,t=1 为干净数据。两类信号噪声程度一起变化。
少步推理时,复杂的未来视频表示可能仍不准确,但机器人已经需要可执行动作。直接把普通模型从四步减成一步,动作会受不准确的视频表示影响。Flash 训练让视频更多处于高噪声状态,而动作覆盖从噪声到干净的整个范围,从而学习在未来视频表示仍粗糙时也完成动作生成。仍有真实观测和语言、机器人状态等可靠条件,不能理解成让机器人在真实相机完全看不清时盲动。
附录 D.3:t_video=1−η,η~Beta(7,1),因此 E[t_video]=1−7/8=0.125;t_action~Uniform(0,1),E[t_action]=0.5。0.125 是视频 t 的期望,不是每个训练样本的固定值,也不能解释成“画面清晰度12.5%”。教学样本可以取 t_video=0.1、t_action=0.8:视频输入0.9εv+0.1z,动作输入0.2εa+0.8a。训练仍预测速度,不是把干净动作直接作为所有训练输入。
这里的噪声是向数值张量混入随机量,涉及待生成的未来视频/动作;“糊画面”只是直觉,不能等同于对真实相机图片加模糊滤镜。生成时间 t 也不是机器人执行的时间。
Table 3(收餐具任务,Task Progress):普通四步83%±6.1%,350ms;普通一步52%±10.2%,150ms;Flash一步74%±10.1%,150ms。Flash恢复部分性能,仍低于四步基线9个百分点。所有百分数为任务进度,误差为标准误;一步指一次生成动作块的去噪步数,不是机器人只执行一个控制动作。150ms和7Hz为论文特定优化与硬件条件,38倍是全部优化累计。
| 名称 | 复用/改变的对象 | 解决的问题 |
|---|---|---|
| KV cache | 历史 token 的 K/V | 预测新块时重复处理旧历史 |
| DiT velocity cache | 去噪相邻步骤预测的更新方向 | 更新方向接近时重复调用大网络 |
| DreamZero-Flash | 训练中视频与动作的噪声时间分布 | 少步推理时视频仍不准确导致动作质量下降 |
学习记忆句:KV cache 省掉历史的重复加工;Flash 训练模型在未来视频还粗糙时就生成可用动作。
来源:DreamZero 原文,§3.1、§3.2.3/5、Table 3、附录 D.3。公式形状与拿杯子案例为教学展开,未运行模型。
4.3.1 为什么 NVFP4、FP8、FP16 混合使用?
核验来源:论文 §3.2.4、附录 D.2(印刷页 23)、Table 1;DreamZero 原文;NVIDIA NVFP4 格式说明。以下误差分析为数学与工程解释,不代表本次审查过其量化内核。
**核心取舍:**计算量大的、能承受部分误差的矩阵运算用低位宽来提速;决定注意力分配、归一化与位置关系的敏感环节保留更高精度。不是位数越低越好,也不是位数越高就一定值得。
先读懂术语
- 权重是训练学到的参数矩阵,例如线性层的 W。
- activation(激活值)是网络运行时产生的中间张量,例如线性层输入 X 或隐藏特征;不是 activation function(激活函数)这个算子本身。
- PTQ(训练后量化)是在已有训练结果上压低数值表示位宽;通常涉及校准,不等于必然重新训练整套模型。论文没有在这段说明完整校准数据与逐层排除表。
- FP4/FP8/FP16 是浮点数格式位宽,影响数值范围与可分辨的间隔。输入/存储精度、内部累加精度、输出精度可以不同。
NVFP4 为什么能快?
大量 Transformer 运算可写为 Y=XW。将 X、W 以更低位宽表示,可减少数据搬运和存储,并利用 Blackwell 的原生低精度 Tensor Core 矩阵计算。
NVFP4 的数据元素采用 E2M1:1 位符号、2 位指数、1 位尾数。其精度非常粗,因此还结合每 16 个元素共享的 FP8 块缩放与张量级缩放。不是把每个数简单截成四位,也不是所有中间计算都只用四位。
只按元素有效载荷计算,FP16→FP4 是 16/4=4 倍压缩;实际还有缩放元数据、未量化算子、缓存与工作区,不能据此声称整个模型显存或延迟降低四倍。
QKV 为什么更敏感?
注意力的教学表达:
Q
=
X
W
Q
,
K
=
X
W
K
,
V
=
X
W
V
,
Q=XW_Q,\quad K=XW_K,\quad V=XW_V,
Q=XWQ,K=XWK,V=XWV,
S
=
Q
K
T
/
d
,
P
=
softmax
(
S
)
,
O
=
P
V
.
S=QK^T/\sqrt d,\quad P=\operatorname{softmax}(S),\quad O=PV.
S=QKT/d,P=softmax(S),O=PV.
Q 是当前位置提出的查询,K 是其他位置可被匹配的特征,V 是实际读取的内容,d 是 Q/K 的向量维度。视频与动作共享注意力时,这些量参与决定哪些画面位置、历史帧和动作特征互相影响。
如果量化引入误差 δQ、δK,那么打分误差为:
Δ S = ( δ Q K T + Q δ K T + δ Q δ K T ) / d . \Delta S=(\delta QK^T+Q\delta K^T+\delta Q\delta K^T)/\sqrt d. ΔS=(δQKT+QδKT+δQδKT)/d.
这会改变注意力分配;V 的误差则影响读出的内容。不是任何微小误差都会造成错误,而是这类误差可能影响后续信息流,因此作者采用 FP8 而不是把这些投影压到 NVFP4。
Softmax 为什么需要照顾?
Softmax 把分数转成权重,涉及指数和归一化:
p i = e s i ∑ j e s j , p i p j = e s i − s j . p_i=\frac{e^{s_i}}{\sum_j e^{s_j}},\qquad \frac{p_i}{p_j}=e^{s_i-s_j}. pi=∑jesjesi,pjpi=esi−sj.
教学例子:分数 [0,1] 对应概率约 [0.269,0.731];如果误差让差值变成 2,即 [0,2],概率就变成约 [0.119,0.881]。这个人为算例只展示分数误差如何改变分配,不代表 NVFP4 的实测误差量级,也不是说 Softmax 会无条件放大所有误差。
论文写“Softmax 用 FP8”,应理解为作者报告的混合精度路径,不能未经源码确认就断言指数、求和、归一化每一步内部运算和累加均为 FP8。Softmax 本身也是非线性的,不能把文中分类当作严格数学上互不相交的集合。
LayerNorm / RoPE 为什么留较高精度?
LayerNorm 需要计算均值与方差并进行缩放:
y i = γ i x i − μ σ 2 + ϵ + β i . y_i=\gamma_i\frac{x_i-\mu}{\sqrt{\sigma^2+\epsilon}}+\beta_i. yi=γiσ2+ϵxi−μ+βi.
例如输入 [1.01,1.02,1.03] 本来有细小差别,过粗表示若将它们舍入成同一个值,统计量与归一化结果就会变。这里的数值是教学示意,实际取决于量化尺度。
RoPE 为注意力注入位置关系,包含位置相关的旋转计算;它并非通常所说的非线性激活函数。论文将其与 LayerNorm 一起列入需要 FP16 accumulation(累加)保护的操作,本文保留作者配置描述,不扩展成所有算子都以 FP16 输入和输出。
**为什么不全用 FP16?**敏感环节保护足够后,大矩阵仍可用低精度获得主要收益。**为什么不全用 NVFP4?**过粗量化可能伤害注意力分配、统计量或位置编码,最终影响视频和动作生成。
论文原值与证据边界
- 作者使用 NVIDIA Model Optimizer,在 Blackwell SM100 上对权重和激活值采用 NVFP4,QKV projections 与 Softmax 路径采用 FP8 E4M3;LayerNorm、RoPE 等采用 FP16 累加来维护数值稳定性。
- 作者称生成视频与动作质量受到的影响可忽略,是其配置与测试下的结论;不代表量化数学等价或所有机器人任务都不受影响。
- Table 1 的 GB200 累计加速由量化前 14.8× 变为量化后 16.6×,该步增益约 16.6/14.8=1.12×。16.6× 是叠加之前优化后的总增益,不能全部归给 NVFP4;38× 还包含之后的 DreamZero-Flash。
4.4 数据哲学
- AgiBot:~7193 episodes,均值 ~4.4 min、~42 子任务/episode,22 环境(家/餐厅/超市等),优先广度与真实效用而非任务重复。
- 动作:滤 idle;相对关节。
- 后训练任务例:叠衣 33h、装水果 12h、收拾桌子 40h。
5. 整体框架(Mermaid)
6. 实验与结论
主结果(作者报告数字)
| 设定 | DreamZero | 对照要点 |
|---|---|---|
| AgiBot seen(新环境/新物体)AVG task progress | 62.2% | 最佳预训练 VLA 续训约 27.4%;scratch VLA 近 0 |
| AgiBot unseen 任务 AVG | 39.5% | 预训练 VLA 约 16.3% |
| DROID seen / unseen | 优于同数据或官方预训练的 GR00T / π0.5 | 开源可复现方向 |
| 后训练(新环境仍测) | 与或优于预训练 VLA | 环境泛化在后训后仍保留 |
| 跨本体仅视频 10–20 min | 38.3% → 54.3% / 55.4% | Human2Robot / Robot2Robot |
| 新本体 YAM | 30 min play(55 traj) | 保留语言跟随与新物体 |
| Flash 1-step(table bussing) | 74% @150ms | 原 4-step 83%;原 1-step 无 Flash 仅 52% |
消融(50K step / bs32,PnP Easy)
- Diverse 50% ± 6.3% vs Repetitive 33% ± 4.2%,均为 Task Progress(任务进度),误差为标准误;不是完整任务成功率。两组均 500 小时,重复组包含 70 个任务,每项在相近物体位置/布置下反复演示。
- 14B 50% vs 5B 21%;同数据 VLA 5B/14B 均为 0%
- AR vs Bidirectional:均值都约 50%,但 AR 方差更小、运动更顺、模态对齐更好(作者定性)
局限(诚实)
- 失败常因视频想象错,动作会「忠实地错」。
- 跨本体与 30 分钟适配:形态仍较接近(双臂平行夹爪);不宣称任意本体万能。
- 未系统评「必须靠长期记忆」的任务;多本体联合预训练留作未来。
- 「史上最高效本体迁移」等表述以作者主张为准,本笔记不额外背书首创性。
7. 我该记住什么
- WAM ≠ 只预测世界:要联合未来视觉与动作。
- 相对 VLA:换的是监督形态——用稠密视频动力学当「中间语言」。
- 数据:杂而有用、少重复,可能比「同一招练一千遍」更吃香(在 WAM 设定下)。
- 工程:大视频扩散能实时,靠异步 + cache + Flash,不只靠砍模型。
8. 待消化疑问
- 若视频骨干更强(更高清/更长时序),真机进度是否近似线性提升?
- Flash 的 Beta 日程换到其他骨干是否同样稳?
- 人形全身(足+臂)异质数据上,拼帧多相机是否仍够用?
相关
- 专题:VLA与世界模型区别与主要范式 · Manipulation 全景综述 · WAM 地图
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)