Q1:π0 开源吗?权重能下吗?
能。官方 openpi(github.com/Physical-Intelligence/openpi),权重已开放,提供 LoRA 微调 recipe,单张 A100/4090 可跑。🌐论文 Table I 的延迟数据就是在 RTX 4090 消费级 GPU 上测的。
论文:Black, Brown, Driess, ... Finn, Hausman, Levine, et al. π0: A Vision-Language-Action Flow Model for General Robot Control. Physical Intelligence, arXiv:2410.24164. 🌐
让机器人一次吐出整段连贯动作,不是一步一吐。秘诀是把动作当成连续的"水流"去拟合。π0 之于离散 VLA,就像流畅口语之于逐字拼读——一口气说出来。
要解决的问题:让 VLA 做灵巧家务。叠衣服、收桌子、装购物袋这类长程任务。📎
老办法:之前的 VLA 把动作离散成 token。每维 256 bin(如 RT-2、OpenVLA)。📎这套对"抓取-放置"够用。但灵巧操作上崩得厉害。手要在布料上反复搓、扭、拽。动作连续光滑、且同一刻常有多种合理走法。离散 token 把信号硬掰成 256 阶,损失太大。
π0 的转身:不再离散化。用 flow matching——一个连续的动作生成头——直接生成整段动作。📎
flow matching 是什么:用大白话讲,零公式。📎先想象一条直线,从一团纯噪声指向 50 步真动作。起点是随机乱抖的数字,终点是机器人要执行的真动作。模型不直接猜终点。它学的是这条路径上每一点该往哪边走——一个小箭头,叫速度。训练时喂大量"半噪声半真"的中间状态。模型练就的本事:指着任意中间点,都能说出该往哪走。推理时从纯噪声出发,照模型指的方向连走 10 小步,就走到真动作。妙在路径是直的,步数少、走得稳。这就是 "flow"——从噪声流到动作的水流。"matching"是把模型的小箭头对齐到真实方向。diffusion 是反向走弯路去噪。flow matching 走的是拉直的近路,所以步数更少。
分工:光有动作生成头还不够。VLM 出语义理解,也就是看懂图、听懂指令。📎专门的 action expert 负责出动作。两者共享 attention 焊在一起,一次预测 50 步动作 chunk。
你会看到:同一个模型在 7 种机器人本体上跑。叠衣服、收桌子、折纸盒、装鸡蛋盒都做通。📎这是 learned policy 在灵巧家务上的新基线。
一句话类比:π0 把动作从"逐字拼写"换成"连续说话"。一口气说出整段——一次出 50 步 chunk、开环执行、少推几次。注意单步内部仍要跑 10 步去噪,比 token VLA 单步慢。优势在少推,不在单步更快。
核心机制:三块拼起来——VLM backbone + 独立 action expert + flow matching action head。📎
Backbone:用 PaliGemma 3B(开源 VLM:SigLIP 视觉编码器 + Gemma 2B 语言模型)。📎论文用它 "for convenience"——框架兼容任何 base VLM。
Action expert:约 300M 参数的小 transformer。从零初始化,不继承 VLM 权重。📎它和 VLM 共享 self-attention 层的 K/V。但不共享 FFN 和 token embedding。本质是 2-expert MoE。图文+语言走 VLM expert。state+action 走 action expert。整体约 3.3B 参数。
Flow matching action head:动作 chunk 长度 H=50。从纯噪声出发,回归一个向量场把噪声推向数据。📎训练目标:让模型预测 $u = A_t - \epsilon$(数据减噪声),$\epsilon$ 是初始高斯噪声。推理用固定 10 步 Euler ODE,每步 $\delta=0.1$。
关键加速 trick:3-block causal attention。三个块——image+lang、state、noisy-actions。📎块内全双向、块间 causal。state 块的 K/V 在 10 步推理时跨步缓存。这是把 10 步压到 27 ms 的关键。
Timestep 采样的反直觉点:论文故意多采低 τ(高噪声)样本。用 shifted Beta 分布。参数 α=1.5、β=1、cutoff s=0.999。📎和图像生成的 logit-normal 相反。作者论证:观测信息量大,预测条件均值本身就难。所以要在高噪声端多练。
常见误区(先抛一个):"π0 就是 diffusion policy 吧?"——不是。📎diffusion 是反向 SDE/ODE。flow matching 是回归向量场,路径用 OT 路径。两者数学形式不同。π0 选 flow matching 是因为路径更直、推理步数更少。
Backbone 精确配置(Appendix B):PaliGemma 3B,其中 Gemma 2B 语言模型配置 {width=2048, depth=18, mlp_dim=16384, num_heads=18, num_kv_heads=1, head_dim=256}——用 multi-query attention。视觉端是 SigLIP ViT。Action expert 配置 {width=1024, mlp_dim=4096} ~300M 参数。整体约 3.3B。📎
Attention mask(Appendix B):3 个 block 严格区分——[I_1..I_n, ℓ](image+lang)、[q_t](state)、[a^τ_t..a^τ_{t+H-1}](noisy actions)。块内全双向、块间 causal。关键设计:state 块看不到 action 块——这样 state 的 K/V 可在 10 步 flow matching 推理时缓存。Flow matching timestep 注入用 MLP:W3·swish(W2·concat(W1·a^τ, φ(τ))),φ 是 sinusoidal positional encoding。Action expert 没用 DiT/AdaLN-Zero(只在 π0-small baseline 用 DiT)。📎
非 VLM 基线 π0-small(Appendix C,作为 ablation):470M 参数,用 DistilBERT 编码语言、encoder-decoder 结构、更小 ViT (R26-S-32)、用 DiT 架构 + AdaLN-Zero 注入 τ。
Flow matching 精确公式(Sec.IV):概率路径用 linear-Gaussian / optimal-transport:
$$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}\big[\|v_\theta(A^τ_t, o_t) - u(A^τ_t|A_t)\|^2\big]$$
action expert 输出 $v_\theta$,用 full bidirectional attention(action token 互相 attend)。📎
Timestep 采样:精确分布 $p(\tau) = \text{Beta}(\frac{s-\tau}{s};\ \alpha=\mathbf{1.5},\ \beta=\mathbf{1})$,cutoff $s=0.999$——偏向低 τ(高噪声)端。作者论证与图像生成相反:观测 $o_t$ 信息量极大,预测 $\mathbb{E}[A_t|o_t]$ 本身就难,所以故意多采高噪声样本。该 cutoff 允许 $\delta > 1/1000$,支持最多 1000 步 Euler 积分(实际只用 10 步)。📎
推理(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、不聚合。
数据(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"——这是当时最大的机器人操作预训练混合数据。9.1% 来自公开数据集,90.9% 来自自家。7 种机器人配置(论文 Fig.5 把硬件相近的并为一组)含 UR5e(单臂,6 关节 + 1 夹爪 = 7 维动作)、Bimanual UR5e(14 维)、Franka(8 维)、Bimanual Trossen(ALOHA 风格,14 维)、Bimanual ARX/AgileX(14 维,并为一组)、Mobile Trossen/ARX(Mobile ALOHA 风格,并为一组)、Mobile Fibocom。所有 $q_t$ 和 $a_t$ 统一 pad 到 18 维(小本体 zero-pad、缺图位 mask)。任务权重按 $n^{0.43}$ 加权(down-weight 过表达组合)。📎
Pre-training vs Post-training:Pre-training 全混合训练 700k steps(宽能力但不专精);Post-training 用高质 curated 数据 fine-tune 到具体任务(5–100+ 小时数据,因任务难度而异)。Compute parity 消融:160k steps 版本(与 OpenVLA/Octo baseline 同等计算预算)仍优于全部 baseline。📎
实验灵巧任务:复杂多阶段任务(Fig.12–13,post-training fine-tune,10 trials 平均):Laundry Folding(5 件衣物,从 crumpled 状态开始,5 分钟/次)、Table Bussing、Box Building、Packing Eggs、Packing Food。论文以 normalized score(每任务满分 1.0、部分完成给分)报告——full π0 在所有任务上都拿到 >50% 满分;逐任务打分 rubric(laundry /4、bussing /12、eggs /7 等)见 Appendix E。📎论文称这是 learned policy 灵巧操作的新 SOTA。Language-following 评估:π0-flat(仅整体指令)< π0-human(专家中间指令)< π0-HL(高层 VLM 给中间指令);π0-small 几乎不从中间指令受益——证明 VLM pre-training 是语言能力来源。
局限:
图谱定位:π0 是 T06 VLA 五段演进的第四段转折点,同时被 T05(diffusion policy 谱系)引用为 flow/diffusion action head 的 VLA 化代表。📎它第一次让端到端 VLA 在叠衣服、收桌子这类长程灵巧家务上跑通,是 VLA 从"操作"迈向"灵巧"的分水岭。
继承 / 催生:
Open problems:
"π0 就是 diffusion policy" —— 错。diffusion 是反向 SDE/ODE 推导;flow matching 是直接回归向量场,路径用 linear-Gaussian(OT)。📎
两者数学形式不同,π0 选 flow matching 是因为路径更直、推理步数更少。
"action expert 是 VLM 的一部分" —— 不完全。Action expert 是 ~300M 独立参数、从零初始化、不继承 VLM 权重。📎它和 VLM 只在 self-attention 层共享 K/V,FFN 和 token embedding 完全独立。本质是 2-expert MoE。
"10 步推理是 temporal ensemble" —— 错。10 步是 flow matching ODE 的 Euler 积分(连续去噪)。Temporal ensemble 指 chunk 间聚合——论文实测 ensemble 反而降性能,所以选择开环执行 chunk、不聚合。📎
10 步 ODE 是单次推理内部的事,与 chunk 间聚合无关。
"Timestep 采样偏中间时刻(像图像生成)" —— 错。论文原话强调偏 lower (noisier) timesteps——即低 τ(高噪声)端。📎
观测 $o_t$ 信息量大,预测条件均值本身就难,所以要在高噪声端多练。
"VLM backbone 必须用 PaliGemma" —— 错。论文用 PaliGemma 是 "for convenience and because of its comparatively small size"。📎框架兼容任何 base VLM,PaliGemma 只是论文复现的选择。
RT-2/OpenVLA 把动作离散成 256 档 token;π0 为什么不这么干,改用 flow matching?请用"灵巧动作是连续、光滑、多模态的"这个角度说。
💡 参考答案
用自己的话讲清 flow matching 在干什么:模型从哪里出发、要走到哪里、学的是路径上的什么东西。
💡 参考答案
π0 一次出 50 步动作 chunk,但单步内部要跑 10 步去噪、比纯 token VLA 的单步慢。那它整体的速度优势从哪来?
💡 参考答案
用"流畅口语 vs 逐字拼读"或自己举的类比,向没学过机器人的人解释 π0 解决了 RT-2/OpenVLA 的什么病。
💡 参考答案
π0 把 VLM(出语义)和 action expert(出动作)分工,不让 VLM 自己直接出动作。为什么这么分工更合理?
💡 参考答案
能。官方 openpi(github.com/Physical-Intelligence/openpi),权重已开放,提供 LoRA 微调 recipe,单张 A100/4090 可跑。🌐论文 Table I 的延迟数据就是在 RTX 4090 消费级 GPU 上测的。
论文 Table I:73 ms on-board(RTX 4090,3 张相机图)。state 块 K/V 跨步缓存是关键加速。📎多步会加延迟,对开环执行没好处;论文实测 temporal ensemble 反而降性能。
能。论文覆盖 7 种本体含 bimanual UR5e、ALOHA 风格双臂 Trossen/ARX/AgileX。📎所有 $q_t$ 和 $a_t$ 统一 pad 到 18 维(最大本体 = 双 6-DoF 臂 + 2 夹爪 + 移动底座等,共 18 维),小本体 zero-pad、缺图位 mask。
flow matching 是直接回归向量场,路径用 linear-Gaussian(OT);diffusion 是反向 SDE/ODE 推导,路径用 forward SDE。📎前者路径更直、推理步数更少。π0 选 flow matching 是因为 10 步 Euler 就够。
LoRA 微调不难(单卡、自家数据 1–2 天可见结果)。🌐从零复现跨 7 本体预训练基本不可行——1 万小时真机数据 + 工程都顶不住。