8. π₀:架构与训练配方
先修建议
- 已完成 RT-1 / RT-2 / ACT / Diffusion Policy 章节阅读,理解离散动作 token 与连续动作生成的差异。
- 熟悉行为克隆(BC)与条件生成模型的基本概念。
- 对 Transformer 的 token、attention mask、KV cache 有基础认识。
本节目标
- 建立 π₀ 的完整问题定义:输入、输出、训练目标与推理方式。
- 看懂 π₀ 为什么采用
VLM 主干 + Action Expert + Flow Matching的三段式设计。 - 理解 π₀ 的训练配方(pre-training / post-training)如何与架构配合。
- 理解
-FAST 与原始 的关系,为后续 的 FAST+Flow 配方做铺垫。 - 用论文中的实验结果判断 π₀ 的能力边界,而非只看单个 demo。
π₀ 是 Physical Intelligence 提出的通用机器人策略模型。它把互联网规模的视觉语言预训练、跨机体机器人数据、连续动作块生成和分阶段训练配方放进同一套框架,用来处理需要语义理解、灵巧操作和长期执行稳定性的真实机器人任务。
1. π₀ 定位
π₀ 关注的核心问题不是“单任务精度再提高一点”,而是:同一套参数如何在跨机体、跨任务条件下保持语义理解与连续控制能力。
π₀ 要解决的难点可以归为三类:
- 规模:足够多样的机器人数据才能覆盖不同物体、场景、失败状态和恢复行为。
- 架构:模型既要继承 VLM 的语义能力,又要能表达高频、连续、多峰的动作分布。
- 训练配方:预训练负责广覆盖,后训练负责让策略执行得更流畅、更稳定。
这三点决定了 π₀ 从一开始就不是”单机体策略”,而是”跨机体基础模型”路线。具体来说,作者自采数据覆盖 7 种机器人配置与 68 类任务,总计超过 10,000 小时的操作数据,并叠加 OXE、Bridge、DROID 等开源数据做跨机体训练。
这 7 种配置横跨单臂、双臂和移动操作平台:
| 机器人配置 | 臂数 | 自由度 | 相机数 |
|---|---|---|---|
| UR5e | 单臂 | 7D | 2 |
| Bimanual UR5e | 双臂 | 14D | 3 |
| Franka | 单臂 | 8D | 2 |
| Bimanual Trossen (ALOHA 式) | 双臂 | 14D | 3 |
| Bimanual ARX / AgileX | 双臂 | 14D | 3 |
| Mobile Trossen / ARX (Mobile ALOHA 式) | 双臂 + 非全向底盘 | 14D 配置 + 16D 动作 | 3 |
| Mobile Fibocom | 双臂 + 全向底盘 | 14D 配置 + 17D 动作 | 3 |
下图展示了这些机体的形态跨度——从单臂到双臂再到移动操作平台:

2. π₀ 在建模什么
π₀ 的核心建模对象是条件动作块分布:
其中:
- 观测
- 动作块
这一定义带来两个关键特点:
- 模型每次不是只预测一步,而是预测一个未来动作块(action chunk)。
- 输出是连续动作分布,不是离散 token 分类。
| 符号 | 含义 |
|---|---|
| 时刻 | |
| 从 | |
| 动作块长度,设为 50 | |
| Flow Matching 的时间步,范围 | |
| 推理积分步长,设为 0.1(10 步) |
3. 数据从哪来、怎么训
π₀ 的训练并非“单阶段端到端”,而是显式分为 pre-training 与 post-training 两阶段。
3.1 Pre-training:先学广覆盖
预训练混合数据由两部分组成:
- 自采高难灵巧操作数据。
- 开源机器人数据(OXE / Bridge / DROID 等)。
按 timestep 统计,数据规模的几个关键数字:
- 预训练混合中约
9.1%来自开源数据。 - 自采数据约
903Msteps,其中单臂约106M、双臂约797M。 - OXE 子集本身包含来自 22 种机器人的数据来源。
预训练阶段的语言标注不只有任务名(如”清理桌面”),还包含 segment annotation——对轨迹按约 2 秒粒度切分后标注的子行为描述(如”拿起杯子””把杯子放进箱子”)。这意味着 π₀ 在预训练时就在学习跟随细粒度的中间语言指令,而不只是理解一个笼统的任务目标。这一设计直接影响后面的语言跟随实验效果。
下图展示了不同数据源的规模与采样权重分布:

3.2 数据对齐与加权策略
为解决跨机体动作空间不一致,π₀ 采用统一表示:
- 配置向量与动作向量统一到 18 维。
- 低维机器人通过 zero-padding 对齐。
- 少于 3 路相机的机体,对缺失图像槽位做 mask。
采样方面,任务-机体组合按
这里的“任务”不是简单的动词-名词组合。例如 bussing task 内部可能包含识别餐具与垃圾、抓取、倾倒、分类放置等多个行为。因此,68 类任务低估了真实行为分布的复杂度。
3.3 Post-training:再学任务质量
post-training 使用更小但更高质量的任务数据集做专项适配。数据量因任务而异:简单任务约 5 小时,复杂任务可达 100+ 小时。
这套”先广覆盖、再高质量专项”的训练配方与大模型常见的 pretrain / post-train 分工一致:
- pre-training 提供广泛可迁移能力。
- post-training 提供任务执行风格、稳定性与完成质量。
两类数据的互补性是这套配方的核心直觉:预训练教会模型从错误中恢复,后训练教会模型流畅地执行。只用高质量数据训练时,模型很少见到失败状态,一旦出错就不知道怎么纠正;只用广覆盖预训练数据时,策略虽然鲁棒但执行不够高效流畅。π₀ 把这两者拆成两个阶段分别处理。
4. 模型架构
在前面几讲中,RT-2 / OpenVLA 等自回归 VLA 把动作离散化成 token 来预测。这种方式在低频简单任务上可行,但面对 50Hz 灵巧操作时有两个硬伤:离散化精度不够,且自回归逐 token 生成太慢,无法支持高频 action chunk。π₀ 的架构选择正是为了绕开这两个问题——用 Flow Matching 生成连续动作块,同时保留 VLM 的语义能力。
下图展示了 π₀ 的整体框架。左侧是预训练数据混合,中间是 VLM Backbone + Action Expert,右侧是同一模型面向不同机体输出连续动作块:

4.1 从 PaliGemma 到 π₀
π₀ 以 PaliGemma 3B 为主干,新增动作专家模块约 300M 参数,总规模约 3.3B。
相对标准 VLM,π₀ 额外引入:
- 本体状态输入
。 - 噪声动作块输入
。 - 对应动作 token 的向量场输出头
。
PaliGemma 不是唯一可选项。选择它主要是因为 3B 规模在语义能力与实时控制预算之间比较折中;原则上,这个框架可以替换成其他预训练 VLM。
4.2 Action Expert 与 token 路由
π₀ 可以理解为“单个 Transformer + 两套专家权重”:
- 图像与语言 token 路由到较大的 VLM backbone。
- 本体状态与动作 token 路由到 Action Expert。
- 两套权重主要在 self-attention 层发生交互。
作者将 Action Expert 做了降宽(例如 width=1024, mlp_dim=4096),核心目的是降低多次积分推理时的计算成本。
这部分设计受 Transfusion 类方法启发:同一个 Transformer 序列里既有离散语言 token,也有连续动作 token。语言侧仍保留 VLM 的预训练能力,动作侧则通过 Flow Matching 损失监督。π₀ 的额外变化是给机器人相关 token 单独使用 Action Expert 权重,避免把未在 VLM 预训练中出现过的 state/action token 全部压到原始 VLM 参数里。
4.3 Attention Mask 与 注入
π₀ 的 attention mask 机制是 blockwise causal(按 block 的先后做因果屏蔽),每个 block 内部是双向注意力:
- block 1:
- block 2:
- block 3:
这样设计的好处是:
- 前缀 block 不看未来 block,减少对 VLM 预训练分布的扰动。
- 状态 block 单独隔离,便于推理阶段缓存对应 KV。
- 动作 block 可看全输入,满足条件生成需要。
Flow timestep
flowchart LR
A[多视角图像+语言] --> B[VLM Backbone]
S[本体状态 q_t] --> E[Action Expert]
N[噪声动作块 A_t^tau] --> E
B --> M[Self-Attention 交互]
E --> M
M --> O[向量场 v_theta]
5. Flow Matching 训练机制
5.1 主线版:训练到底在拟合什么
π₀ 使用条件 Flow Matching 损失:
概率路径采用线性高斯形式:
训练时采样
直观上,网络学的是“从带噪动作块回到干净动作块的速度方向”。
5.2 推理版:如何把向量场变成动作
推理从纯噪声动作块开始,按 Euler 规则从
具体参数:
- 共 10 步积分
5.3 可选深入:为什么强调低
附录给出的采样分布并非简单均匀,而是 shifted Beta:
下图可以看到低
背后的直觉是:动作预测任务在高噪声区域往往更难,训练预算向低
6. 推理要多快、怎么执行
6.1 推理链路
一次动作块推理包含三段计算:
- 图像编码。
- 观测前缀前向(可缓存 KV)。
- 10 次动作后缀前向(Flow 积分步骤)。
RTX 4090 上的实测时延(3 路相机)如下:
| 模块 | 时延 |
|---|---|
| image encoders | 14 ms |
| observation forward pass | 32 ms |
| x10 action forward pass (flow) | 27 ms |
| network latency(off-board) | 13 ms |
| total on-board | 73 ms |
| total off-board | 86 ms |
这组数字说明:π₀ 的“可部署”不是免费获得的,而是依赖 前缀缓存 + 专家降宽 + 多步后缀复用 的系统优化。
6.2 控制执行策略
虽然模型每次生成
- 20Hz 的 UR5e / Franka:每 0.8s 推理一次(执行 16 步)。
- 50Hz 的其他机器人:每 0.5s 推理一次(执行 25 步)。
此外,作者报告早期尝试过 temporal ensembling,但性能下降,最终采用 open-loop 执行 chunk。
6.3 π₀-FAST 旁支:把动作块重新 token 化
前面几节讲的是原始

FAST 全称是 Frequency-space Action Sequence Tokenization。它不是回到 RT-1 / OpenVLA 那种逐维逐时刻的简单 binning,而是先对完整动作块做频域压缩,再量化并用 BPE 形成更短的动作 token 序列。这个设计的直觉是:高频动作序列里有大量时间相关性,如果先压缩动作块,再让 Transformer 预测 token,训练会更接近语言模型熟悉的自回归范式。

可以用下表区分三条路线:
| 模型 | 动作表示 | 训练信号 | 推理输出 | 主要取舍 |
|---|---|---|---|---|
| 连续 action chunk | Flow Matching | Action Expert 输出连续动作块 | 推理较快,适合高频控制;训练动作专家成本更高 | |
| FAST 离散 action token | 自回归交叉熵 | 自回归生成 token,再还原为动作块 | 训练更快、更贴近 VLM token 训练;推理需要逐 token 解码 | |
| FAST token + Flow 连续动作 | 离散 token 监督 + Flow Matching | 部署时仍输出连续动作块 | 用 FAST 做表示学习,用 Action Expert 保持实时控制 |
因此,
7. 实验结果分析
π₀ 的实验不只是在展示 demo,而是在回答四个问题:
- 只做 pre-training 的 base model 是否具备 out-of-box 能力。
- VLM 初始化是否改善语言跟随。
- 预训练对新任务微调是否有帮助。
- pre-train + post-train 是否能支撑复杂多阶段任务。
除非特别说明,真实机器人评估通常按每个任务、每个方法 10 次试验取平均,并使用部分完成分数。例如 bussing 类任务按正确分类/放置的物体数量计分,而不是只记录全成败。
7.1 Out-of-box 基础能力
这组实验想回答的问题是:不做任何 post-training,预训练出来的 base model 能直接干活吗?
评估方式是在 pre-training 后直接用语言命令触发 base model,并与 OpenVLA、Octo 以及不使用 VLM 初始化的 π₀-small 对比。
评测任务包括 shirt folding、bussing easy、bussing hard、grocery bagging、toast out of toaster。这些任务都可以直接用语言命令触发,用来测试 base model 是否已经学到可迁移的基础能力。

值得注意的是,即使是只训练 160k steps 的 compute-parity 版本(用来对齐 OpenVLA / Octo 的训练更新量),也能超过所有对比方法;完整 π₀ 训练 700k steps 后优势更大:

这组实验里有两个关键解释:
- OpenVLA 使用自回归离散动作,不支持高频 action chunk,因此在这些灵巧任务上吃亏。
- Octo 支持类似扩散的动作生成,但模型容量与语义主干弱于 π₀。
π₀-small 也优于部分基线,但它不是完全公平的”只去掉 VLM 初始化”消融。它参数量约 470M,架构上也有几个关键差异:用 DistilBERT 编码语言(而非 Gemma 语言模型)、采用 encoder-decoder 结构(而非 decoder-only MoE)、Action Expert 用 DiT 架构而非 Gemma 架构。因此,更适合把它理解为”没有互联网 VLM 语义底座的小模型参照”,而非严格的单变量消融。
7.2 语言跟随能力
这组实验想回答的问题是:VLM 初始化带来的语义理解能力,能否转化为更好的语言指令跟随?
语言实验比较了多种条件:
-flat:只给高层任务描述(如"清理桌面")。-human:由人类专家实时给出中间子任务语言指令(如"拿起杯子""把杯子放进箱子")。-HL:由高层 VLM 自动生成中间指令。具体做法类似 SayCan——高层 VLM 观察当前画面,输出下一步该做什么的语言指令,再喂给 π₀ 执行。
实验任务包括 bussing、table setting、grocery bagging。每个完整任务由多个约 2 秒粒度的语言标注片段组成,模型需要根据中间指令选择正确物体和目标位置。

结果显示,使用 VLM 初始化的 π₀ 在语言跟随准确性上显著优于 π₀-small,且这种差异会转化为复杂任务中的执行收益。尤其是 -human 与 -HL 的对比说明:中间指令本身有用,但前提是底层策略能可靠理解这些指令。
下图可以看到同一任务下,不同语言条件带来的性能分化:

7.3 新任务微调与预训练收益
这组实验想回答的问题是:面对预训练中没见过的新任务,π₀ 的预训练是否能带来迁移收益?
实验比较了三种设置:
- 从预训练 π₀ 继续微调。
- 同架构从零训练。
- 其他已有方法的微调或训练方案。
这些新任务按与预训练分布的距离分成不同难度层级:stack bowls 与 towel folding 更接近预训练任务;Tupperware in microwave 引入未见过的微波炉元素;paper towel replacement 与 Franka items in drawer 则需要新的物体、动作或机体组合。

实验呈现的趋势是:
- 与预训练更相近的任务,迁移收益更明显。
- 在小样本微调设置下,预训练版本常显著优于非预训练版本,部分任务可达约 2x 量级改进。

需要注意的是,ACT 与 Diffusion Policy 在这组实验中只使用目标任务数据训练;OpenVLA 与 Octo 使用公开预训练 checkpoint 后再微调。π₀ 的比较目标不是证明某个单点任务一定更优,而是说明“大模型语义初始化 + 连续动作块生成 + 跨机体预训练”组合起来更适合这类真实灵巧操作。
7.4 复杂多阶段任务
这组实验想回答的问题是:完整的 pre-train + post-train 配方,能否支撑持续 5-20 分钟的长时序任务?
评估覆盖了 laundry folding、table bussing、box building、packing eggs 等任务。结果显示:完整的 pre-train + post-train 配方通常优于去除预训练或仅靠下游数据从零训练的变体。
这些任务往往持续 5 到 20 分钟,包含几十个子行为。例如 table bussing 不只是“把东西放进箱子”,还要求识别餐具/垃圾、在遮挡和密集杂乱中抓取、按类别放置。box building 则需要双臂协同折纸箱,并在失败折叠后重新调整。

下图的关键观察点是:完整 pre-train + post-train 是否稳定超过各个 ablation 变体。部分任务在 pre-training 中出现过,部分没有——这正好用来观察预训练是否能提供可迁移的恢复与组合能力:

7.5 能力边界(基于实验与讨论)
从实验结果与讨论段落可以提炼出三条能力边界:
- 任务成功率仍随任务难度与数据覆盖度显著波动。
- 预训练数据“如何组成最优配方”仍是开放问题。
- 跨任务、跨机体的正迁移虽然存在,但其适用范围还未被系统刻画。
8. 局限与过渡
π₀ 的关键价值在于把三件事放进同一框架并跑通:
- 用预训练 VLM 提供语义底座。
- 用 Action Expert 与连续动作块建模高频控制。
- 用可部署的推理策略把多步 Flow Matching 落到真实系统。
同时,π₀ 也明确保留了后续研究空间:
- 数据配比与混合策略仍有较大优化空间。
- 复杂任务的稳定性与可预测性仍需提升。
- 模型的“通用性”是否能扩展到更远域(如导航、驾驶、腿足)尚无定论。
这也是后续四讲的自然过渡点:第 10 讲 RTC 转向实时执行,第 12 讲