π0: A Vision-Language-Action Flow Model for General Robot Control
作者 / 机构:Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn, Niccolo Fusai, Lachy Groom, Karol Hausman, Brian Ichter, Szymon Jakubczak, Tim Jones, Liyiming Ke, Sergey Levine, Adrian Li-Bell, Mohith Mothukuri, Suraj Nair, Karl Pertsch, Lucy Xiaoyang Shi, James Tanner, Quan Vuong, Anna Walling, Haohuan Wang, Ury Zhilinsky(Physical Intelligence)
发表:2024-10(arXiv 预印本,未走会议流程直接发布)
arxiv:2410.24164 · 代码/权重:开源 openpi(github.com/Physical-Intelligence/openpi)· 项目页:pi.website/blog/pi0
在线索中的位置:属于 [T06](VLA 五段演进)的第四段转折点,同时被 [T05](diffusion policy 谱系)引用为 diffusion/flow action head 的 VLA 化代表
一句话定位:第一个把"flow matching action head + VLM backbone"做通的通用 VLA,第一次让端到端 VLA 在叠衣服、收桌子这类长程灵巧家务上跑通,是 VLA 从「操作」迈向「灵巧」的分水岭。
动机
π0 之前,VLA 路线(RT-1 → RT-2 → OpenVLA)有一个共同的结构性瓶颈:动作被离散化成 token(每维 256 bin,再用 LLM 词表输出)。这套范式对"抓取-放置"够用,但在灵巧操作上崩得很厉害。原因是离散 token 表达连续、多模态、高频的动作分布先天吃力——叠衣服时手要在布料上反复搓、扭、拽,动作是连续光滑的、且高度多模态(同一个褶皱可以有多种抓法),离散 token 把信号硬掰成 256 阶,损失太大。
另一方面,diffusion policy([Chi 2023, arxiv:2303.04137])和 ACT([Zhao 2023, arxiv:2304.13705])证明:连续动作分布 + action chunking 才是灵巧操作的解。但它们都是小模型、单本体、纯模仿学习,没有 VLM 的语义先验。
π0 要回答的核心问题是:能不能把 VLM 的互联网语义知识,和 diffusion/flow 这类连续 action head 嫁接到一起,做一个跨本体、跨任务、能灵巧的通用 policy? 关键矛盾在于 VLM 是 autoregressive token 模型、diffusion 是迭代去噪模型,两者的训练范式和数据流根本不同。
方法核心
π0 的解法可以拆成三块:(1) VLM backbone 继承语义先验; (2) 独立的 action expert 处理连续动作; (3) flow matching 作为 action head,把两者用共享 attention 焊起来。
1. 架构:VLM + action expert,共享 attention、分离 FFN/参数(Sec.IV + Appendix B)
Backbone:PaliGemma 3B(论文原话:"open-source 3 billion parameter VLM"),SigLIP ViT 视觉编码器 + Gemma 2B 语言模型。论文用 PaliGemma 是"for convenience and because of its comparatively small size"——框架兼容任何 base VLM。
Gemma 2B 语言模型精确配置(Appendix B):{width=2048, depth=18, mlp_dim=16384, num_heads=18, num_kv_heads=1, head_dim=256},用 multi-query attention。
Action expert 精确架构(Appendix B):
- 配置:
{width=1024, mlp_dim=4096},约 300M 参数(论文明确),从零初始化(不经 VLM 预训练)。 - Attention mask(Appendix B):blockwise causal,3 个 block:
[I_1..I_n, ℓ](image+lang)、[q_t](state)、[a^τ_t..a^τ_{t+H-1}](noisy actions)。块内全双向、块间 causal(action 块能看到全部输入,state 块看不到 action 块——这样 state 的 K/V 可在 10 步 flow matching 推理时缓存,是关键加速 trick)。 - Flow matching timestep 注入:每个 noisy action $a^τ_{t'}$ 先用 MLP 编码:
W3·swish(W2·concat(W1·a^τ_{t'}, ϕ(τ))),其中 $\phi:\mathbb{R}\to\mathbb{R}^w$ 是 sinusoidal positional encoding;输出再用线性投影解码成 $v_\theta$。注意 action expert 没用 DiT/AdaLN-Zero(只在 π0-small baseline 里用 DiT)。
非 VLM 基线 π0-small(Appendix C,作为 ablation):470M 参数,用 DistilBERT 编码语言、encoder-decoder 结构(action expert cross-attend 到 observation encoder)、更小 ViT (R26-S-32)、用 DiT 架构 + AdaLN-Zero 注入 τ。
2. Flow matching action head:精确公式与超参(Sec.IV + Appendix B)
动作 chunk $A_t = [a_t, a_{t+1}, \dots, a_{t+H-1}]$,H=50。观测 $o_t = [I^1_t, \dots, I^n_t, \ell_t, q_t]$(2–3 张 RGB 图像 + 语言 + joint 角度向量 $q_t$)。
概率路径:linear-Gaussian / optimal-transport 路径(Eq.在 Sec.IV):
$$q(A^τ_t | A_t) = \mathcal{N}(\tau A_t,\ (1-\tau) I)$$
即 $A^τ_t = \tau A_t + (1-\tau)\epsilon$,$\epsilon\sim\mathcal{N}(0,I)$。目标向量场 $u(A^τ_t|A_t) = A_t - \epsilon$。
训练 loss:
$$\mathcal{L}_\tau(\theta) = \mathbb{E}_{p(A_t|o_t),\ q(A^τ_t|A_t)}\big[\|v_\theta(A^τ_t, o_t) - u(A^τ_t|A_t)\|^2\big]$$
action expert 输出 $v_\theta$,用 full bidirectional attention(action token 互相 attend)。
$$p(\tau) = \text{Beta}\!\left(\tfrac{s-\tau}{s};\ \alpha=\mathbf{1.5},\ \beta=\mathbf{1}\right),\quad s = 0.999$$
即 $\alpha=1.5, \beta=1$ 的 shifted Beta,cutoff $s=0.999$(高于 0.999 的 τ 完全不采)。该 cutoff 允许 $\delta > 1/1000$,即支持最多 1000 步 Euler 积分。
3. 推理:10 步 Euler ODE(Sec.IV + Appendix D)
从 $A^0_t \sim \mathcal{N}(0, I)$ 出发,前向 Euler 积分:
$$A^{τ+\delta}_t = A^τ_t + \delta\, v_\theta(A^τ_t, o_t)$$
固定 10 步($\delta = 0.1$)。关键加速:prefix $o_t$ 的 K/V 跨 10 步缓存,每步只重算 action token 部分。
推理延迟(Table I,NVIDIA RTX 4090 单卡,3 张相机图):
| 阶段 | 时间 |
|---|---|
| image encoders | 14 ms |
| observation forward pass(VLM 部分) | 32 ms |
| ×10 action forward pass(flow matching) | 27 ms |
| 总 on-board 推理 | 73 ms |
| off-board + Wi-Fi 延迟 | 86 ms |
执行节奏:chunk H=50 但开环执行子集——20 Hz 的 UR5e/Franka 每 0.8 s 推一次(执行 16 步),50 Hz 的双臂每 0.5 s 推一次(执行 25 步)。作者发现 temporal ensembling 反而降性能,所以选择开环执行 chunk、不聚合。
4. 数据:跨 7 种本体的大规模混合(Sec.V)
数据规模:自家数据集 903M timesteps(106M 单臂 + 797M 双臂)+ OXE/Bridge v2/DROID 公开数据;论文原话 "10,000 hours of dexterous manipulation data from 7 different robot configurations and 68 tasks"——这是当时最大的机器人操作预训练混合数据。68 "tasks" 定义比常规宽(如 bussing 一个 task 含多种餐具+垃圾)。
9.1% 来自公开数据集(OXE 等),90.9% 来自自家。9 个机器人平台:
| 平台 | action dim | 相机数 |
|---|---|---|
| UR5e(单臂 7-DoF + 夹爪) | 7 | 2 |
| Bimanual UR5e | 14 | 3 |
| Franka | 8 | 2 |
| Bimanual Trossen(ALOHA 风格) | 14 | 3 |
| Bimanual ARX / AgileX | 14 | 3 |
| Mobile Trossen / ARX(Mobile ALOHA,非完整驱动) | 14 配置 / 16 动作 | 3 |
| Mobile Fibocom(完整驱动底座) | 14 配置 / 17 动作 | 3 |
统一维度处理:所有 $q_t$ 和 $a_t$ 统一 pad 到 18 维(最大本体 = 双 6-DoF 臂 + 2 夹爪 + 移动底座 + 升降躯干);小本体 zero-pad,缺图位 mask。
任务权重:每个 (task, robot) 组合按 $n^{0.43}$ 加权($n$ = 样本数),down-weight 过表达组合(如 laundry folding)。
Pre-training vs Post-training(关键设计):
- Pre-training:全混合训练 700k steps,目标宽能力但不专精;
- Post-training:高质 curated 数据 fine-tune 到具体任务(5–100+ 小时数据,因任务难度而异)。
- Compute parity 消融:160k steps 版本(与 OpenVLA/Octo baseline 同等计算预算)仍优于全部 baseline。
5. 实验灵巧任务 setup(Sec.VI + Appendix E)
Out-of-box 评估(Fig.6–7,base 模型不 fine-tune,5 任务):Shirt Folding (Bi-ARX)、Bussing Easy/Hard (UR5e)、Grocery Bagging (UR5e)、Toast out of toaster (Bi-Trossen)。π0 全 700k 在所有任务上接近完美或大幅领先;160k parity 版仍 beat 所有 baseline;π0-small(无 VLM)也胜过 OpenVLA/Octo。
复杂多阶段任务(Fig.12–13,post-training fine-tune,10 trials 平均,分数 0–1):
- Laundry Folding(评分 0–4):5 件衣物(M/L/XL T 恤 + 28/36 短裤),从随机 crumpled 状态开始;5 分钟/次;full π0 在所有任务上 >50% 满分,比 scratch / out-of-box 显著好。
- Table Bussing(0–12):12 物体含 chopstick-on-trash 等难配置;
- Box Building(0–5):折纸盒+合 flap;
- Packing Eggs(0–7):6 蛋入盒+合盖;
- Packing Food / To-go Box(0–5):食物装盘+合盒。
- 论文:"这水平是 learned policy 灵巧操作的新 SOTA",但未给出具体百分比数字(Fig.13 是条形图,文字只说 ">50% across all tasks")。
Language-following 评估(Fig.8–9):π0-flat(仅整体指令)< π0-human(专家中间指令)< π0-HL(高层 VLM 给中间指令);π0-small 几乎不从中间指令受益——证明 VLM pre-training 是语言能力来源。
Baselines:OpenVLA 7B(OXE 训,自家混合 fine-tune;不支持 action chunk 是主要短板)、OpenVLA UR5e-only(更强 UR5e 基线)、Octo 93M(diffusion policy,但容量有限)、π0-small(自家 ablation)、π0 parity (160k steps)。
为什么重要
π0 在这条线索里是范式转换,不是渐进改进。三点定性:
- 第一次证明 VLA 能做灵巧家务。 叠衣服、收桌子、装购物袋、折纸盒——这些任务在 π0 之前的 VLA(RT-2、OpenVLA)基本做不了,只能做"抓取-放置"。π0 的 demo 视频直接打穿了这条天花板。
- 确立了 "VLM backbone + flow/diffusion action head + action expert" 这套范式。 之后 RDT-1B(diffusion 版)、CogACT(cognition-action 解耦)、GR00T N1(DiT action head)、π0.5 全部沿用这个骨架。openpi 开源后,这套架构成为开源社区默认起点,单卡可 LoRA 微调(用 Fast LoRA,10-50 条数据能适配新机器人)。
- 跨本体通用 policy 第一次有了产业级证据。 π0 不是学术 demo,是 Physical Intelligence 准备商业化部署的产品技术底座,跨 7 本体在同一套权重里跑通,证明"一个模型控制所有机器人"在工程上可行。
局限
- 延迟仍偏高:3.3B 参数 + 10 步 ODE,单步推理几十 ms 量级,离高频闭环(≥30Hz,最好 100Hz+)还有距离。这正是 Helix(200Hz S1)、GR00T N1(120Hz System-1)用双系统架构要解决的问题——把 VLM 和 action head 解耦到不同频率的模块。
- 数据门槛极高:1 万小时真机演示,普通团队复现不起;后续 π0-FAST 用 FAST tokenizer 把动作压回自回归 token,部分降低门槛。
- 长程任务仍弱:单 chunk 只有 50 步,多步任务要靠外部重规划。π0.5 + Hi Robot 用高层 VLM 把长程任务切成子指令喂 π0,是直接补丁。
- flow matching 的 10 步推理仍是瓶颈:相比纯 autoregressive token VLA(一步出动作)慢一个量级;后续 π0-FAST、CogACT 等在"连续 head 的精度 vs 自回归的速度"之间反复权衡。
复现要点
以下要点基于论文 Sec.IV–V + Appendix B/D 的精确数字。
- 起点:直接用官方
openpi(github.com/Physical-Intelligence/openpi),权重已开放,提供 LoRA 微调 recipe,单张 A100/4090 可跑。论文 Table I 的延迟数据就是在 RTX 4090 消费级 GPU 上测的。 - 架构精确数字:VLM backbone = PaliGemma 3B(Gemma 2B 配置
{w=2048, d=18, mlp=16384, heads=18, kv_heads=1, head_dim=256});action expert ={w=1024, mlp=4096}~300M 参数;总参数 3.3B。 - Attention mask:必须用 3-block causal(image+lang / state / noisy-actions);state 块的 K/V 要在 10 步 flow matching 推理时缓存——这是把 10 步压到 27 ms 的关键。
- Flow matching timestep 采样:$\tau \sim \text{Beta}(\alpha=1.5, \beta=1)$ shifted 到 $[0, s=0.999]$——偏向低 τ(高噪声),与图像生成的 logit-normal 相反。这是复现最易踩的坑。
- 训练 loss:OT 路径 $A^τ = τA + (1-τ)\epsilon$、回归目标 $A - \epsilon$;action expert 用 full bidirectional attention over action tokens。
- 推理:固定 10 步 Euler、$\delta=0.1$、从 $\mathcal{N}(0, I)$ 出发。开环执行 chunk(20 Hz 机型每 0.8 s / 16 步重推、50 Hz 机型每 0.5 s / 25 步重推),不要做 temporal ensemble(论文实测反而降性能)。
- 跨本体统一:$q_t, a_t$ 一律 pad 到 18 维,缺图位 mask。state 维度对齐错会让 action expert 输出乱动作(最常见坑)。
- 数据规模门槛:pre-training 用 10000 小时跨 7 本体;post-training 最简单任务 5 小时、最难(laundry)100+ 小时。
- 预期难度:自家双臂数据上 LoRA 微调 1–2 天可见结果;从零复现跨 7 本体预训练基本不可行(数据 + 工程都顶不住)。
相关
- 建立在:PaliGemma(VLM backbone)、Diffusion Policy / ACT(action chunking + 多模态动作思想)、Flow Matching / Rectified Flow 理论([Lipman 2023, arxiv:2210.02747]; [Liu 2022, arxiv:2209.14577])。
- 引出:RDT-1B(diffusion 1B 版)、CogACT、π0.5(加高层语言推理 + 异构数据)、GR00T N1(DiT action head 移植到人形 + 双系统)、π0-FAST(FAST tokenizer 把 π0 改成纯自回归)。
- 本仓库笔记交叉引用:T06-vla-five-stages.md(第四段)、T05-diffusion-policy-lineage.md(flow/diffusion action head 谱系)。