VLA 发展详解:从 RT-2、OpenVLA、π0 到 π0.5 与 π0.7
本文目录 展开章节导航
VLA(Vision-Language-Action,视觉语言动作模型)要做的,是把“看到了什么、要完成什么”变成机器人可以执行的动作。 大模型知道杯子可以装水,并不等于它已经知道当前机械臂应该怎样靠近杯柄;VLA 的发展,就是把这种语义知识与具体的运动经验连接起来。
2023 年,Google DeepMind 的 RT-2 将预训练视觉语言模型改造成动作策略:把连续动作离散化,像输出文字一样输出动作 token。2024 年,Stanford 等机构合作的 OpenVLA 开放模型、代码和适配方法,让这条路线更容易研究。随后,Physical Intelligence 的 π0 用连续动作专家和 Flow Matching 生成动作块,并配合大规模、多机器人数据训练。π0.5、π0.6/π*0.6 和 π0.7 则继续解决陌生环境泛化、从执行经验中改进,以及如何利用更丰富的提示组合技能。
这条主线有三个容易被标题掩盖的边界:
- RT-2 的关键是把已有生成式 VLM 直接接到动作预测上。 RT-1、Gato、CLIPort 等更早的工作已经探索语言条件控制、动作 token 或视觉语言表征,不能把它写成机器人第一次根据图像和文字行动。
- OpenVLA 的“7B 胜过 55B”有具体评估条件。 对照是 RT-2-X,训练数据与结构也不同,不能据此得出小模型普遍强于大模型。
- π0 并非机器人第一次叠衣服。 早在 2010 年,研究者就展示过 PR2 折叠毛巾与衣物;π0 值得关注的是通用预训练、多具身迁移和复杂任务适配的组合。RT-1、RT-2、OpenVLA、早期衣物折叠研究
本文资料核对截至 2026-09-19。前三个模型按原论文的设置讲解;后续模型区分论文、项目展示与开放实现。文中的数值小例子用于解释机制,不是本文完成的机器人训练或真机复现实验。

阅读路线
| 想先弄清的问题 | 建议入口 |
|---|---|
| 机器人每一步到底输入什么 | 闭环与数据样本 |
| 动作为什么能写成 token | RT-2 → OpenVLA |
| 为什么不用一个 MLP 直接回归 | 多峰动作与回归 |
| π0 怎样生成 50 步动作 | 动作专家 → Flow Matching → 三个时钟 |
| π0 的数据与训练怎么搭 | 训练配方 |
| π0.5 到 π0.7 具体增加什么 | FAST 与 OFT → π0.5 → π*0.6 → π0.7 |
| 怎样设计自己的对照实验 | 评估与消融、随文算例 |
1. 每一步发生什么:先建立输入与输出接口
1.1 模型看到的是观测,控制器执行的是命令
用一个比较一般的动作块策略表示:
这里:
- 是第 路相机在当前决策附近获得的图像,例如外部视角、左右腕部视角。
- 是当前本体状态,可以包含关节角与夹爪状态;具体字段由模型和机器人接口决定。
- 是任务或当前子任务的语言指令。
- 是根据时刻 的观测,为执行时刻 预测的动作。
- 是一次预测的动作步数;只预测当前一步时,。
这个统一写法不是说每个 VLA 都接收全部字段。原始 OpenVLA 使用单张图像与文字,没有显式本体状态输入;π0 才在本文比较的三者中直接使用多相机和本体状态。具有历史记忆的模型还会额外读取过去的图像或状态。
动作也不一定是电机力矩。它可以是末端位移、末端目标位姿、关节目标位置,或底盘速度。模型输出先经过解码、反归一化和机器人接口处理,再由底层控制器执行。“端到端动作预测”仍然需要一个定义清楚的执行接口。
例如,“夹爪维度输出 1”到底表示张开、闭合,还是归一化后最大开度,需要由数据与执行器约定;“向前 0.02”也必须回答是米还是归一化数值、沿世界坐标还是工具坐标。
1.2 三个原始模型的接口对照
| 模型 | 策略的主要条件 | 原论文的动作输出 | 初学者最容易混淆的地方 |
|---|---|---|---|
| RT-2 | 当前图像、任务文字 | 终止标记+末端 6 维位移/旋转+夹爪,编码为离散 token | 输出的是有数值含义的控制量,不是“先抬手再抓取”的自然语言计划 |
| OpenVLA | 单张第三人称图像、任务文字 | 单步 7 维末端动作,逐维离散化并自回归输出 | 七维通常不是七个关节;原版不等于后来的 OFT 多相机动作块版本 |
| π0 | 2~3 路图像、语言、本体状态 | 连续的 50 步动作块;维度依机器人而异 | 50 个时间位置各自承载一个动作向量,不是每个标量都变成词表 token |
以上对照依据原始 RT-2 §3、OpenVLA §3 与 §6、π0 §IV;具体实现中的相机裁剪、动作转换与控制频率仍须另外核对。
1.3 一条训练记录长什么样
机器人示范通常是一条 episode:操作者完成一件任务,系统按时间保存图像、状态、指令和动作。训练时再从里面截取观测与未来动作窗口。
下面是解释字段的结构例子,不是 RT-2、OpenVLA 或 openpi 的可直接导入格式:
episode_id: kitchen_0042
robot_id: dual_arm_example
instruction: "把毛巾折好"
sample:
observation_time_s: 12.0
image_indices:
front: 600
left_wrist: 600
right_wrist: 600
state:
joint_positions_rad: [0.1, -0.2, 0.3, 0.0, 0.4, -0.1]
gripper_width_m: 0.025
action_window:
start_index: 600
horizon: 50
period_s: 0.02
representation: joint_position_target
values_reference: "actions[600:650]"
episode_end_index_exclusive: 910这里只展开一个机械臂的部分状态字段,便于阅读。真实数据必须包含完整关节顺序、双臂与夹爪定义、每路相机的时间戳,以及实际动作数组。front: 600 只是图像索引,不能代替时间同步。
训练样本可以写成 。未来动作 是监督目标,不代表推理时机器人提前看到了未来。对于 Flow Matching,训练会把目标与噪声混合后输入网络;推理则从独立噪声开始,不再拥有真实目标。

还有三个数据边界要在截窗前处理:
- 不能跨 episode 拼动作块。 快结束时可以丢弃不完整窗口,或按明确规则补齐;补齐位置是否进入损失必须与实现一致。
- 动作命令不等于实测状态。 目标关节角与随后反馈的关节角会受延迟和接触影响,不能在不了解定义时互换。
- 不能把未来信息变成普通在线观测。 用未来帧形成目标图像可以作为特定训练条件,但部署时必须有可获得或可生成的对应条件;π0.7 正好会用到这个区别。
关于遥操作、UMI、人类视频与仿真分别能提供哪些监督,可接着看数据来源专题。
2. RT-2:把机器人动作写进 VLM 的词表
2.1 它改变了视觉语言模型的哪一部分
普通生成式 VLM 接收图像和问题,输出“桌上有一个红色杯子”。RT-2 保留这种输入与序列预测机制,但把部分训练样本的答案换成动作编码。例如,一次动作包含:
terminate | dx | dy | dz | droll | dpitch | dyaw | gripper连续维度先分桶,再映射到语言模型可以输出的 token。模型学习的是“看到这样的图像、收到这样的指令,接下来应该输出哪些动作编号”。
动作当成文字 token,不等于让模型每次写带小数点的说明句。 token 最终有一个整数 ID,它的动作意义由编码器与解码器赋予。PaLI-X 已有方便表示整数的 token;PaLM-E 则重用低频词表项。两者都把动作输出纳入既有序列建模框架。RT-2 动作编码
2.2 从连续量到 token 的可复算例子
先看一个独立的均匀量化器。把某个动作维度裁剪到 ,用 个等宽区间表示:
其中 是裁剪后的动作, 是桶宽, 是未取整的桶坐标。假设一维末端位移范围是 米,:
- 每个桶宽 米,即 0.78125 mm。
- 动作 米落入编号 153,按桶中心还原为 0.019921875 m。
- 在范围内、采用桶中心还原时,最坏量化误差不超过半个桶宽,即 0.390625 mm。
这只是一维编码误差;实际末端误差还受标定、控制器、负载与模型预测影响。被裁剪的越界动作也不再满足这个相对原值的误差上界。
这个公式解释均匀分桶,不声称逐行复刻所有官方 tokenizer 的边界行为。特别是 OpenVLA 代码使用 linspace、digitize 和末端索引裁剪,边界点与有效桶中心数量应以对应版本实现为准,不能只凭论文中的“256 bins”自行替换。OpenVLA tokenizer 源码
2.3 训练目标仍然是 next-token prediction
把一个动作编码成 ,模型分解其联合概率:
动作监督的负对数似然为:
训练使用真实的前序动作 token 作为上下文,推理使用已经生成的 token。这里的自回归顺序首先是同一个动作内部各维编码的顺序,不要误认为每生成一个 token,机器人就立即移动一次。通常需要凑齐完整动作、解码后才交给控制器。
RT-2 还会在机器人动作任务的解码阶段限制合法输出词表,避免输出普通回答 token。但“格式合法”只保证能解码,不保证动作满足任务、碰撞或执行约束。RT-2 输出约束
这个设计还有一个好处:模型输出每个桶的概率,而不是只能给一个实数,所以能表达不确定性和多个候选动作。但离散化分辨率、标量间自回归成本,以及复杂动作的时间结构都需要继续处理。
2.4 网页知识怎样参与动作学习
RT-2 并没有仅靠网页学会抓取。它继承预训练 VLM,再将机器人动作样本与原有视觉语言样本一起微调,称为 co-fine-tuning。网页侧保留视觉问答、描述与语义知识,机器人侧提供“当前观测对应怎样的控制动作”。
原论文中,RT-2-PaLI-X 和 RT-2-PaLM-E 的机器人样本混合比例分别约为 50% 和 66%,说明这不是把两个原始数据目录等量拼接。它仍是监督学习配方,不能因为模型控制机器人,就自动称为在线强化学习。RT-2 附录 B、E
理解迁移时,可以区分两件事:网页知识帮助确定“哪个物体符合任务描述”;机器人示范教会策略“怎样完成相应运动”。认识一个新物体的用途,不保证策略获得了机器人数据里从未覆盖的接触技能。
2.5 RT-2 留下的部署问题
原论文采用远程多 TPU 服务:55B 的 RT-2-PaLI-X 报告约 1~3 Hz,5B 版本约 5 Hz。它们是特定系统的控制运行结果,不是所有 VLA 的固定速度,也不等于底层电机伺服频率。RT-2 实时推理
对于低速抓取,这可能足够;对于高频双臂操作,如果每个标量都靠大型语言主干逐个生成,动作表示和推理调度就会越来越重要。这也是后续动作块、连续生成和压缩 token 研究的背景。
3. OpenVLA:开放模型,同时重新组织视觉与机器人数据
3.1 不是把 RT-2 的权重换成开源许可证
OpenVLA 基于 Prismatic VLM,视觉部分结合 DINOv2 与 SigLIP,语言主干使用 Llama 2 7B。同一张图像经两个视觉编码器得到特征,拼接后由 projector 映射到语言模型的表示空间,再与语言 token 一起处理。
两个视觉编码器提供互补的表示,但不能把它们硬分成“一个只管位置、一个只管语义”。论文给出的动机是结合空间细节与语义信息;实际作用需要看消融实验。OpenVLA 架构与项目资料

3.2 开放数据也需要筛选、转换与重采样
OpenVLA 的主要训练集合来自 Open X-Embodiment,约 97 万条机器人轨迹。这里是 episode/trajectory 数,不是 97 万张图片,也不能与 π0 的“小时”或“时间步”直接做大小比较。
原版为了统一接口,筛选具有第三人称相机、适合单臂末端控制的操作数据,并按数据集设定混合权重。动作按训练数据每维第 1 与第 99 百分位数所界定的范围归一化,再转换为离散编码;部署必须使用匹配的统计量反归一化,夹爪等特殊维度按实现的 mask 与语义处理。模型只在动作输出位置计算动作预测的交叉熵,而不是把输入指令也当成动作目标。
这样的处理牺牲了一部分异构输入灵活性,换来较一致的训练问题。想把双臂、多视角、移动底盘数据直接接进去,就必须先修改输入输出与数据转换,不能认为“同属 OXE 格式”就会自动兼容。OpenVLA §3 与附录 A、OXE 项目
3.3 “7B 打赢 55B”应该怎样读
论文报告 OpenVLA 相比 RT-2-X 55B 在其机器人评估中的整体成功率有 16.5 个百分点的提升。“百分点”是绝对差值,不是相对增长 16.5%;原始 RT-2 与跨机器人数据训练的 RT-2-X 也不是同一个模型名称。
原文分别进行了 BridgeData V2 的 170 次试验(17 个任务各 10 次)和 Google robot 的 60 次试验(12 个任务各 5 次)。OpenVLA 在前者明显领先,在后者表现相近;这个差异应与整体数字一起读。
这个结果并不是只改参数量的消融。OpenVLA 与 RT-2-X 的机器人训练集合规模、数据清洗、视觉编码器和训练方式都有差异。论文还指出 RT-2-X 在语义泛化类别有优势。因此,这个结果支持“开放且较小的模型,在这一组实验中可以很有竞争力”,不能支持“参数越少越好”或“所有泛化能力都超过 RT-2”。OpenVLA §5.1
若自己设计公平比较,至少要同时记录:测试机器人与相机、任务及初始状态、训练任务是否重叠、推理频率、每个任务的试验次数、成功标准和置信区间。只在表格里并排写 7B 和 55B 不够。
3.4 原始训练配方:视觉部分也要适配动作
OpenVLA 原论文报告,最终训练使用 224 × 224 图像、全局 batch 2048、固定学习率 ,约遍历数据 27 个 epoch;64 张 A100 训练约 14 天,合计约 21,500 A100·小时。这是通用模型训练预算,不是换一台机器人做 LoRA 所需的预算。
比背下这些数字更有用的是理解其消融:在论文的实验中,提高图像分辨率到 384 × 384 没有带来相应收益,却使训练约慢三倍;冻结视觉编码器也降低了机器人表现。原始 OpenVLA 因此会适配视觉编码器,而不是只训练末端的动作输出层。OpenVLA §3.4–3.5
这些结果依赖当时的数据与任务。它们不能推出“所有 VLA 都不需要高分辨率”,也不能推出“训练动作 token 准确率超过某个值就可以跳过真机评估”。视觉定位、动作编码和闭环控制仍是不同的验收环节。
3.5 开源带来的实际变化
有了开放权重、数据处理与微调代码,研究者可以检查归一化统计、替换机器人数据、做 LoRA 或全参数适配,并分析动作预测失败发生在哪一层。原始 OpenVLA 仍有单图像、单步输出等限制;OpenVLA-OFT 是后续配方,不应反过来写进 2024 年原版的功能列表。OpenVLA 官方仓库
4. 动作为什么不直接回归?这个问题需要改写
动作当然可以直接回归。 更准确的问题是:在当前观测下,如果存在多种相互不同但都合理的动作,一个确定性输出与某种损失函数会学到什么?
4.1 平方误差倾向于条件均值
若用确定性网络 ,最小化平方误差:
考虑一个刻意简化的例子:从障碍物左侧绕行与右侧绕行都合理,某个横向动作分别为 和 ,两者概率相同。平方误差最优点是 0,但中间恰好可能通向障碍物。
问题不是“连续数值不适合神经网络”,而是均值不一定对应某一种可执行策略。完整轨迹也可能有这种问题:两条各自平滑的路线,逐时刻平均后可能穿过障碍物,或者破坏接触顺序。
4.2 L1、分布模型与更好的条件信息各有作用
| 方式 | 模型学习什么 | 仍需注意 |
|---|---|---|
| 确定性 L2 回归 | 条件均值 | 多峰分布的平均可能不是合理动作 |
| 确定性 L1 回归 | 逐维条件中位数 | 不保证覆盖多种策略,也不保证逐维中位数组成合法轨迹 |
| 离散 token 分类 | 动作桶的条件分布 | 分桶精度、自回归顺序与解码成本 |
| 混合密度/潜变量策略 | 多成分或潜变量条件的动作分布 | 训练稳定性、模式覆盖与选择 |
| Diffusion/Flow Matching | 从噪声生成条件动作样本 | 迭代成本、数据质量、闭环响应与评估 |
对于刚才概率各半的两个点,L1 的中位数并不唯一, 中的点都可能最优;不能把 L1 简单宣传成“一定选中一个真实模式”。
还有一条同样重要的路线:补充能区分策略的条件。如果指令明确说“从左边绕过去”,或者历史观测说明机器人已经开始向左移动,条件分布就可能变得更集中。后面 π0.7 的策略元数据、控制模式和子目标图像,正是在为“该采用哪种行为”提供更多信息。
4.3 Flow Matching 也用回归,为什么不矛盾
Flow Matching 的网络确实常用平方误差训练,但它回归的是给定噪声状态、流时间和观测时的向量场,不是只根据观测输出唯一的最终动作。不同初始噪声可以经过同一向量场抵达不同动作,因此最终策略仍能表达条件分布。
生成模型也不自动保证动作安全、平滑或成功。它可能准确复现低质量示范中的犹豫和错误;如果数据本身集中、目标任务单一,简单回归可能是很强的基线。后续 OpenVLA-OFT 使用 L1 回归取得良好结果,正好说明应通过实验选择,而不是把“生成式”当成必然优胜的标签。
5. π0:动作专家不是一个普通线性输出头
5.1 继承语义主干,新增连续动作计算
π0 使用约 3B 参数的 PaliGemma 初始化视觉语言部分,再增加约 300M 参数的动作专家,总规模约 3.3B。新增部分不只是最后一层线性投影,而是一套处理机器人状态与动作位置的 Transformer 权重。
模型可以理解为两组按模态分工的权重:
- 图像和语言位置使用 VLM expert,继承已有预训练。
- 机器人状态和动作位置使用 action expert,学习连续控制。
- 两组表示通过注意力交互。这里不是常见稀疏 MoE 的“每个 token 由学习到的 router 任意选 top-k 专家”,分工主要由输入模态确定。
π0 没有在推理时先完整生成一句文字计划,再把那句话送入一个独立动作网络。 原始低层策略可以直接把视觉、语言、本体状态作为条件生成动作;高层任务分解属于另一个需要说明的使用层次。π0 §IV 与附录 B、PaliGemma

5.2 一个动作 token 可以是一整个向量
在语言模型里,token 通常表示词表中的离散 ID。但 π0 论文也用 token 指 Transformer 序列里的一个位置;这个位置可以由连续向量投影得到。
如果 、某个双臂机器人动作维度 :
每个动作位置携带一个 14 维向量,投影到 action expert 的隐藏维度后参与注意力。50 个位置表达未来 50 个控制步,不需要先把 700 个标量逐个变成词表 ID。这个 14 维例子只对应一类双臂接口,不是 π0 全部机器人共有的维度。
同一动作块的所有位置可以相互注意,以共同形成时间上协调的行为。不过,双向注意力本身不是碰撞约束,也没有证明生成轨迹一定满足动力学。
5.3 注意力分块与缓存
原始论文将序列分成三块:图像+语言、本体状态、带噪动作。每块内部允许双向注意力,后面的块可以看前面的块,前面的块不能看后面的块。
| Query 来自哪一块 | 图像+语言 Key | 状态 Key | 动作 Key |
|---|---|---|---|
| 图像+语言 | 可见 | 不可见 | 不可见 |
| 状态 | 可见 | 可见 | 不可见 |
| 动作 | 可见 | 可见 | 可见 |
这意味着动作生成能利用语义与状态,而固定观测的表示不会反过来依赖本轮噪声动作,因此可以缓存相应 K/V。
缓存“可以做到”与某份代码“实际缓存哪些位置”要分开。 原论文讨论缓存整个观测前缀;本文核对的 openpi JAX 实现将图像、语言放入 prefix,状态仍随 suffix 进入动作专家,采样循环会重新嵌入这部分。不能仅凭架构图推断所有实现都有完全相同的缓存成本。π0 附录 B、D、固定版本 openpi 实现
6. Flow Matching:把整块噪声推成整块动作
6.1 先固定一个自洽的时间方向
为方便与 openpi 代码对照,本文采用 是噪声、 是数据的约定。真实动作块为 ,同形状高斯噪声为 :
网络读取 ,学习速度场:
这里“速度场”是动作空间中随流时间变化的速度,不是直接指机械臂在真实世界中的 m/s 或 rad/s。动作块里的第 20 个位置也不是第 20 次去噪。
6.2 训练一次随机插值,推理多次积分
训练时,对于一个样本:
- 取观测、指令和真实未来动作块。
- 采样同形状噪声与流时间 。
- 计算混合量 和监督向量 。
- 网络做前向,比较预测向量场与监督目标,再反向更新参数。
一次训练样本通常不必先跑完十步生成再计算这个损失。 原始训练还使用偏重高噪声区域的时间分布;本文公式中保留一般的 采样,具体分布以实现为准。
推理时没有真实动作 :
将 从 1 推到 0,得到生成动作块。原始 π0 使用 次 Euler 更新;每次都更新整个动作块,而不是每次只生成一个未来控制步。
如果改用从噪声到数据递增的时间 ,则目标向量要同时变成 ,积分步长也变为正数。只换时间标签、不换向量场符号,会把更新方向写反。 openpi 源码明确说明其时间方向与论文约定相反;本文按上述线性路径求导,保持路径、目标和积分三者一致。openpi 损失与采样实现、Flow Matching 基础论文
6.3 一个不需要训练的方向检查
令一个标量目标 ,初始噪声 ,则监督速度为 。若步长 ,每步更新增加 ,十步后从 到达 2。
这个例子只验证线性路径与 Euler 符号,不是说真实网络知道每个样本的目标,也不是说十步必然精确还原复杂动作分布。学习误差、采样误差和观察不足依然存在。
6.4 可选推导:平方误差怎样保留两个模式
再回到 或 、概率各半的例子。固定同一观测,噪声为标准高斯;只根据观测回归最终动作会得到 0,但 Flow Matching 还读取当前位置 与流时间 。
对这个特意构造的一维分布,在 时可以直接算出最优条件向量场,无需训练神经网络:
条件动作均值 来自两个高斯条件分布的后验概率;向量场表达式来自 。网络若使用平方误差拟合向量场,目标是这个依赖 的条件均值,不是恒等于零的最终动作均值。
图中没有给每条轨迹指定一个已知目标:轨迹共用同一个 ,只改变初始噪声。 时两侧质量集中到两个动作模式;数值计算提前停止,避免离散终点的奇异边界。恰好为零的初值会停留在对称轴上,但连续高斯恰好取到该点的概率为零。
随文脚本还检查积分前后的累积分布概率是否近似保持,避免只用“曲线看起来分叉”作为正确性证据。这个算例解释表达能力,不保证实际网络一定学好两种模式,也不处理机器人碰撞或动力学约束。
7. 50 步、10 次积分、50 Hz:三个时钟
对 π0,需要同时区分:
| 量 | 例子 | 含义 |
|---|---|---|
| 动作块长度 | 50 步 | 输出里包含多少个未来动作位置 |
| 采样积分次数 | 10 次 | 生成一个块时调用多少次动作向量场 |
| 动作执行频率 | 50 Hz | 控制接口每秒消费多少个动作 |
| 每轮执行长度 | 25 步 | 重新获取观测并规划前,执行块的多长前缀 |
若 、 Hz,动作位置间隔是 20 ms,块的名义覆盖时长为 秒。按从零开始的时间戳,最后一个目标位置是起点后的 0.98 秒;“覆盖 1 秒”按 50 个控制周期计。
原论文附录 D 中,50 Hz 机器人通常执行 25 步后再次推理,对应约 0.5 秒;20 Hz 的 UR5e 与 Franka 执行 16 步后再推理,对应约 0.8 秒。因此 50 Hz 不表示每 20 ms 完整运行一次 VLM,也不表示 50 步必须全部执行完。π0 附录 D

在忽略推理与调度开销的理想情况下,、 Hz 对应每秒约 2 次重新规划。实际响应还取决于图像时效、推理延迟、网络往返和队列策略。加长动作块可以减少模型调用次数,却可能让机器人更久依赖旧观测。
异步生成下一块时还要处理“结果返回时,块开头的时间已经过去”的问题。这个问题在后续 RTC 中成为独立研究方向,可继续阅读实时动作块专题。
7.1 一次动作块推理的成本在哪里
原始 π0 的附录报告,在 RTX 4090、三路图像的配置下:
| 环节 | 报告耗时 |
|---|---|
| 图像编码器 | 14 ms |
| 观测部分前向 | 32 ms |
| 十次动作专家前向合计 | 27 ms |
| 本机推理合计 | 73 ms |
| 远程情形的额外网络延迟 | 约 13 ms,合计约 86 ms |
这些是论文的特定测量,不能当成不同框架和硬件的保证值。π0 附录 D、Table I
它解释了动作专家与缓存的意义:一次调用的成本可以粗略写成
不是每个积分步都重新运行完整视觉编码与主干前缀。反过来,73 ms 已跨过多个 20 ms 控制周期;机器人能按 50 Hz 消费动作,依赖的是动作块、队列与执行调度。做部署预算时要检查“下一块何时可用”,而不能只检查模型能否装进显存。
8. π0 的数据与训练配方
8.1 三种“预训练/后训练”不要混为一谈
| 阶段 | 数据与监督 | 学到什么 |
|---|---|---|
| VLM 预训练,π0 继承其结果 | 大规模图像、文本及视觉语言任务 | 视觉表征、语言理解与语义关联 |
| 机器人通用预训练 | 多机器人、多任务观测与动作 | 把已有表征接到机器人动作空间,并覆盖不同场景和行为 |
| 任务后训练 | 更聚焦、质量更高的机器人示范 | 提高目标任务的流畅度、稳定性与完成质量 |
原始 π0 的任务后训练主要是监督模仿学习,不等于后来 π*0.6 的强化学习。post-training 描述训练所处阶段,不能仅凭这个词判断用了 PPO、DPO 或奖励模型。

8.2 原始论文公开了哪些数据口径
π0 初版论文描述的自有数据覆盖 7 类机器人配置、68 类任务、约 10,000 小时以上的机器人经验,并结合开放机器人数据。正文给出自有数据约 903M 个时间步,其中单臂约 106M、双臂约 797M;公开数据在训练混合中约占 9.1%。这些数字服务于不同统计口径,不能互相替代。π0 §V 与数据概览、项目说明
特别要避免三种误读:
- 时间步多不等于独立行为多。 50 Hz 数据每小时有 180,000 个记录步,5 Hz 只有 18,000 个;数据频率本身就能造成十倍差异。
- 采样占比不等于磁盘占比。 混合训练会重采样,不应把 9.1% 自动解释成原始文件大小或小时占比。
- “任务”不是统一计数单位。 “收桌子”可能包含分类、抓取、放置和处理多种物品;另一数据集可能把每个动词与物体组合单列一个任务。
8.3 混合权重怎样避免大数据源淹没小数据源
初版论文按 task–robot 组合的样本数 设置与 成比例的采样权重。把它写成归一化概率:
这是组合级采样概率,不是把同组每个样本再各乘一次 。若两个组分别有 100 万和 1 万个样本,原始数量比为 100∶1,幂次重采样后的组权重比约为 ∶1。
这个例子说明重采样如何减轻失衡,不表示 0.43 是适用于所有机器人数据的最优指数。实际还要考虑任务难度、不同频率产生的重复程度,以及某些小数据集是否过度重复。π0 数据混合
8.4 不同机器人怎样放进一个 batch
多具身训练至少要统一四层:
- 观测布局:相机顺序、裁剪分辨率、缺失相机 mask、状态字段。
- 动作语义:关节目标还是末端增量,坐标系、单位、夹爪符号、底盘控制。
- 数值尺度:根据训练数据估计统计量,保存归一化和反归一化规则。
- 张量形状:对不同维度做 padding 或其他结构适配,并约定损失如何处理补齐位置。
π0 原论文将状态与动作补到最大机器人维度 18;本文核对的 openpi 配置默认 action_dim=32、action_horizon=50,具体任务配置又可能覆盖这些值。18 和 32 属于不同版本与配置口径,不是论文自相矛盾,也不是“所有机器人都有 32 个动作自由度”。原论文 §V-A、固定版本 Pi0Config
把张量补到同样长,只解决形状问题;它不会把米自动变成弧度,也不会让左臂关节 1 自动对应另一个机器人的右臂关节 1。
8.5 为什么预训练保留多样性,后训练强调一致性
通用预训练希望看到更多状态、物体、机器人和行为变化,让模型具备覆盖面;任务后训练则希望示范动作更连贯、策略更一致,减少不必要的停顿和反复试探。
两者并不矛盾:如果只保留最顺利的示范,可能缺少处理偏差状态的经验;如果所有数据不分质量地一起模仿,又可能学到迟疑和失败。原始 π0 通过分阶段的数据选择缓解这种张力,后续 π*0.6 与 π0.7 分别进一步引入价值估计和行为条件信息。
论文的下游任务数据量从较简单任务约 5 小时到复杂任务 100 小时以上不等,不能据此承诺“自己的机器人只要录五小时就能叠衣服”。初始权重、硬件、任务难度、示范质量和评估环境都不同。π0 后训练说明
8.6 训练步数与模型大小为什么要一起看
π0 初版论文的主要通用模型训练 700k 步,也报告了训练 160k 步的版本,用于观察较小训练预算下的表现。不同曲线若使用不同训练步数,比较的就不只是网络结构。π0 §VI-A
论文还使用约 470M 参数的 π0-small 对照 VLM 初始化的模型。这个对照同时改变语言编码器、视觉与动作模块的结构和参数规模。因此,它能支持所比较的完整方案有差异,但不能单独把全部收益归因于“网页知识”一个因素。π0 附录 C
训练步数、batch、采样权重与动作窗口高度相关。同样 700k 步,若每步样本量和来源不同,实际训练工作量与数据暴露量就不同;相邻重叠窗口也不能按独立轨迹计数。
8.7 落地训练时,还要把哪些配置写完整
从配方到一次可复查的训练,建议至少保存下面这些信息。它们是工程记录项,不是声称原论文对外开放了完整生产配置。
| 记录项 | 为什么影响结果 |
|---|---|
| 初始化 checkpoint、代码提交、可训练模块 | 从 VLM 学动作与从 VLA 适配任务,需要的数据量和优化过程不同 |
| 按 episode/场景划分的数据清单 | 防止滑动窗口或相似场景进入验证集造成泄漏 |
| 图像预处理、相机顺序、动作转换及统计量 | 输入形状相同不代表语义相同 |
| 数据源采样概率、截窗与补齐规则 | 决定模型实际看到的训练分布和监督位置 |
| 损失归约、时间采样、优化器、学习率、全局 batch | 决定数值尺度与优化预算,不能只报训练步数 |
| 动作块长度、积分次数、控制周期与前缀执行长度 | 决定在线延迟、行为时间尺度与闭环反应 |
一个实用的开始方式是:先可视化少量完整 episode,验证动作的物理含义;再检查小数据集上是否能拟合;最后做按场景保留的闭环评估。小样本拟合成功只验证训练管线有学习能力,不能代替泛化结果。归一化统计应由训练部分估计,并随 checkpoint 保存。
9. 两条重要分支:FAST 与 OpenVLA-OFT
9.1 FAST:动作 token 没有被连续模型淘汰
如果一个动作块有 50 步,每步 14 维,朴素逐标量编码就需要约 700 个动作 token,尚未计入其他标记。高频动作的相邻时间步往往很相似,逐个写出来既冗长,也让大量 token 都在重复局部细节。
2025 年 1 月的 FAST 换了编码对象:先对整段归一化动作沿时间做离散余弦变换(DCT),将时序结构转换为频率系数,再量化、排列并用 BPE 压缩为较短 token 序列。解码时逆转这些步骤,恢复连续动作块。
这条路线仍然可以采用 next-token prediction。它说明真正的问题不只是“离散还是连续”,还包括怎样把动作的时间结构编码进去。不过,量化可能有损,训练加速也不等于在线推理同样加速;官方资料明确指出 π0-FAST 的自回归推理比原始 π0 的流匹配解码慢。FAST 项目与论文
9.2 OpenVLA-OFT:直接回归也是有效路线
2025 年的 OpenVLA-OFT 把并行动作解码、动作块、连续动作表示和 L1 回归组合起来,适配多图像与本体状态等输入。它没有要求“只有 Diffusion 或 Flow Matching 才能做高频动作”。
论文在特定 LIBERO 和 ALOHA 评估中报告良好结果。理解这个工作时,应把“采用一个更适合任务的输出与微调配方”放在核心位置,不要只记一个榜单分数,更不要把这些设置误写成 2024 年 OpenVLA 原版已经具备的能力。OpenVLA-OFT 论文、项目中的 L1 与生成模型讨论
由此得到一个实用分类:离散动作+自回归、连续动作+确定性回归、连续动作+生成式采样,是可以并行研究的设计选择。 采用哪一种,要同时看训练数据、任务多峰性、控制频率、推理延迟和成功率。
10. π0.5:让策略走进没有采集过的房间
10.1 改进目标从“会做”转向“换地方还能做”
π0 已经展示多种复杂操作,但在训练场景里完成任务,与走进陌生家庭完成同类任务,是不同难度的目标。π0.5 于 2025 年 4 月提出的重点是 open-world generalization:在未见过的环境中执行已有任务族。 它不等于对任意新技能、任意新机器人都无需数据。π0.5 项目说明
例如,“收拾厨房”不仅需要抓取杯子,还需要理解杯子应放到哪里、脏物应该怎样处理、当前哪个子任务已完成。只有机械动作示范或只有网页问答,都无法独立覆盖这些需求。
10.2 异构数据怎样组成训练信号
π0.5 将多类监督放进同一视觉语言建模框架:
| 数据类型 | 示例监督 | 主要贡献 |
|---|---|---|
| 多家庭移动操作 | 图像、状态 → 机器人动作 | 目标平台上的操作与场景变化 |
| 多环境固定机械臂 | 图像、状态 → 动作 | 更容易扩展的环境与物体覆盖 |
| 实验室跨机器人数据 | 其他具身上的动作示范 | 更丰富的操作技能与动作经验 |
| 高层子任务标注 | 场景+总任务 → 下一子任务文字 | 任务结构与语义决策 |
| 网页视觉语言数据 | 问答、描述、物体定位 | 语义与视觉知识保持 |
| 人类逐步语言指导 | 当前场景 → 操作者选择的子指令 | 高层策略的行为示范 |
原论文中约 400 小时、约 100 个家庭环境的数字,指其中最贴近目标任务的移动机器人数据部分,不是全部预训练数据的总量。论文同时说明,第一阶段约 97.6% 的训练样本来自其他机器人、网页及其他辅助来源;这是训练混合口径,不是这些来源的原始小时占比。π0.5 §IV-C、D
“语言指导”也不等于再次遥操作每个关节。操作者可以说“先把枕头拿起来”,由已有低层策略执行,从而记录高层决策应该如何随场景推进。
10.3 同一模型可以承担两种推理任务
把总任务记为 、当前子任务记为 :
第一项先回答“现在该做哪一步”,第二项回答“这一小步怎样移动”。例如:
总任务:收拾桌面
当前子任务:把空杯子放到水槽
低层输出:未来一段关节、夹爪与底盘动作这是高层语义决策与低层连续控制的分工;高层通常没有必要按每个 20 ms 控制周期重写一遍指令。模型权重可以共享,但两种推理调用的输出、频率与评估指标仍然不同。

10.4 原始两阶段配方与后来的知识隔离
π0.5 原论文的流程是:先用 FAST 等离散输出进行通用训练,再在后训练中加入连续动作专家,同时保留文字/离散输出监督。论文报告前者约 280k 次更新、后者约 80k 次更新;这些是原实验的训练步数,不是公开微调脚本的统一默认值。π0.5 §IV-D
随后 2025 年 5 月的 Knowledge Insulation(知识隔离,KI) 进一步明确一种训练配方:
- VLM 主干通过文字与离散动作 token 的交叉熵得到训练信号。
- 连续动作专家通过 Flow Matching 学习,并读取主干的条件表示。
- 阻断动作专家损失回传到 VLM 主干的梯度,减少随机初始化的连续模块对既有表示的扰动。
可以将梯度关系概括为:
其中 表示主干参数, 表示动作专家参数, 是阻断梯度后的条件表示。这个式子强调优化路径,省略具体注意力与输出分支。
Stop-gradient 不等于冻结整个 VLM。 主干仍被交叉熵训练;被阻断的是来自指定连续动作分支的梯度。也不代表推理必须先生成整串 FAST 动作,再交给动作专家——训练监督通道与部署动作解码通道可以不同。KI 论文、KI 方法说明
梯度隔离之外,还需要注意力隔离。连续动作分支不能读取训练中由 teacher forcing 提供的真实 FAST 动作 token,否则就可能通过另一种编码直接看到动作答案。Stop-gradient 只阻断反向梯度,不会删除前向信息;两类限制解决不同问题。原始 π0.5 的联合离散/连续训练已明确用 attention mask 隔开这两种动作表示。π0.5 附录 E

当前 openpi 的 π0.5 发布版本与原始研究全流程也要区分:官方 README 说明其 π0.5 训练与推理接口支持的是 flow matching head,不能把论文中的全部异构联合训练过程都视为已经开放的可复现脚本。openpi 模型说明
10.5 状态与流时间的接入位置也变了
π0.5 原论文明确将本体状态离散化后作为文字 token 输入。进一步对照固定版本 openpi,可看到两个具体差别:
| 位置 | π0 路径 | π0.5 路径 |
|---|---|---|
| 本体状态 | 连续状态投影,放在动作侧 suffix | 离散状态随文字进入主干 prefix |
| 流时间 | 时间嵌入与每个动作表示拼接,再经 MLP | 用时间条件调制动作专家中的 adaptive RMSNorm |
第二项仍然告诉模型“当前噪声程度是多少”,改变的是信息注入网络的位置。第一项则会影响状态的数值表示、序列长度和可缓存区域。这说明升级版本时,应一起查看 tokenizer、attention mask 和输入转换,不能只替换 checkpoint 文件。π0.5 §IV-A、openpi Pi0Config、embed_suffix 实现
10.6 论文怎样验证“换地方还能做”
π0.5 的环境数量实验使用 3、12、22、53、82、104 个训练地点,再在未见的模拟家庭环境中评估。为控制实验成本,这组消融没有为每个地点数重跑完整主配方:先在不含移动操作数据的机器人动作混合上预训练,再进行 40k 步后训练,作者据此控制各组见到的独特样本量。π0.5 §V-B
它分别记录两个容易混淆的指标:语言遵循率看是否选对指令指定的物体;任务成功率还要求把它正确放到目标位置。选对杯子但中途掉落,可以在前一项上成功、后一项上失败。
此外,论文分别去掉网页数据、多环境固定机械臂数据和实验室跨具身数据,观察端到端进度与语言遵循。这样的对照比“加入很多数据后总分更高”更能说明来源的作用,但结论仍限于论文实际控制的训练与测试设置。π0.5 §V-C
11. π0.6 与 π*0.6:从模仿示范走向利用执行经验
11.1 先分清底座版本与 RL 配方
π0.6 延续视觉语言主干+连续动作专家的路线,在相关技术报告中使用 Gemma 3 4B 主干,并将动作专家扩大到约 860M 参数,同时扩展机器人训练数据。
π*0.6 中的星号强调结合 RECAP 的强化学习训练版本。不能把 π0.6、π*0.6 与某个任务专用 checkpoint 当成完全相同的名称,也不能把“动作专家更大”和“从奖励反馈中学习”混成同一个改动。π*0.6 论文 §V
11.2 为什么成功示范还不够
示范告诉模型“人在这些状态下怎么做”,实际部署却会遇到模型自己造成的偏差:夹爪滑了、杯子没拿稳、衣物折到一半变形。这些状态未必出现在理想示范中。
只把失败轨迹直接加入行为克隆,会产生一个新问题:模型也可能把失败动作当成值得模仿的标签。因此需要区分这条轨迹提供了哪些状态覆盖和其中哪些行为值得增加概率。
11.3 RECAP 的经验闭环
RECAP 全称为 RL with Experience and Corrections via Advantage-conditioned Policies。其核心流程是:
- 执行当前策略,记录结果;必要时由人接管纠正。
- 将示范、自主执行与纠正数据用于训练价值函数。
- 利用价值估计与奖励,估计动作的 advantage,并构造条件标记。
- 训练带 advantage 条件的策略;部署时请求更优行为,再收集新的执行数据。

这里的价值函数回答“从当前状态继续做,预期能达到什么结果”。Advantage 则是在相应参考下,某个动作比基准预期好多少;它不是模型看见一个画面就直接读出的真实成功概率。RECAP 方法说明
用一个省略折扣、终止边界与实际归约细节的 步例子表示:
真实实现必须处理 episode 结束、超时与价值估计误差。论文进一步将估计优势转成二值条件标记来训练策略,而不是要求对整条 flow 采样链直接套用普通 next-token PPO。
11.4 奖励、价值与优势标签怎样落到数据里
RECAP 使用 episode 成功/失败标签构造奖励:普通非终止步骤为 ,成功终止为 0,失败终止为 ,其中失败惩罚足够大。成功轨迹的未折扣回报因此与“距离完成还剩多少步”的负值相关;失败不会因为结束得早就被当成优秀的快速完成。
价值模型用轨迹后缀的实际累计回报做监督,并按任务的最大 episode 长度归一化。报告采用 201 个离散价值桶与交叉熵训练,再用桶概率的加权平均得到连续价值。其约 670M 的 VLM 底座小于策略主干;这是一份单独训练的价值模型,不是动作专家直接输出的自信分数。RECAP §IV-A、V-C
用未归一化的人工例子检查优势的符号:假设 ,执行 10 个非终止步骤各得 ,之后 ,则
花了 10 步,却让估计剩余代价减少 30 步,所以相对原基准有正优势。这不代表任务已经完成,也不代表真值改善一定是 20;它依赖价值估计是否准确。
随后用任务相关阈值 形成条件 。论文还将人工纠正片段的指标设为真,并随机省略部分条件来支持有条件与无条件训练。成功 episode 内的每一步不一定都有正优势,失败 episode 内的每一步也不一定都没有学习价值。 结果标签、局部优势和人工纠正标记是三个层次。
更新过程同样值得记录:论文在每轮聚合数据后,从预训练 checkpoint 分别微调价值模型和策略,而不是默认从上一轮任务模型接着训练;作者这样做是为了减轻多轮漂移。这属于具体实现选择,不能从“迭代强化学习”四个字自动推断。RECAP §IV-B、V-D
11.5 成功率之外还优化吞吐
该研究的奖励设计同时考虑完成与耗时:普通步骤产生时间代价,成功终止和失败终止得到不同处理。因此,一个更快且可靠完成的轨迹可以比反复犹豫的轨迹更优。
评估时也必须把成功率与完成速度一起报告。比如某策略成功率提升,但每次耗时翻倍,它每小时完成的合格任务数未必增加;反过来,动作更快但常失败,也不意味着吞吐更高。
“使用在线采集数据”不等于“每一步都在线更新权重”。 RECAP 的策略执行、数据聚合、价值学习与策略改进可以交替进行,其论文强调通过迭代的离线学习过程利用收集到的经验。它也不是对每个新任务完全不需要人的纠正或结果标注。π*0.6 论文 §IV–V
12. π0.7:用更丰富的条件组织更多、更复杂的数据
12.1 核心变化是把“怎么做”也放入条件
2026 年 4 月发布的 π0.7 强调 steerability(可引导性)与 compositional generalization(组合泛化)。如果训练数据里既有快慢不同的操作、不同控制模式,又有成功与失败,只有“折衣服”三个字往往不足以解释这些行为差异。
π0.7 因此扩展模型的条件:除了任务文字,还使用更细的子任务、视觉子目标、episode 元数据和控制模式。它继承 π0.6-MEM 的架构方向:约 4B 的 Gemma 3 VLM、约 860M 的连续动作专家及视觉历史编码,论文称总规模约 5B。π0.7 技术报告 §IV、VI
这里的约 5B 描述策略模型的规模,不能直接当成包含独立子目标生成模型、高层策略在内的整套系统参数量或显存需求。部署预算还要计入这些模块、视觉上下文缓存和动作采样时的中间激活。
子任务与控制模式并非到 π0.7 才首次出现:π0.5 已使用高层子任务,并通过文字区分关节/末端动作。π0.7 的重点是把更细的语言、视觉目标、历史和行为质量条件组合起来,让更异构的数据可用于同一个策略。π0.5 §IV-C
这不是只在现成模型的 prompt 里添加几个形容词。模型在训练时就要看到对应字段及其行为差异,部署时这些条件才有可能成为有效的控制接口。
12.2 模型每一步可以额外看到什么
用一个概括式表示:
| 条件 | 表示什么 | 部署时从哪里来 |
|---|---|---|
| 当前观测与历史 | 相机、状态缓存与历史编码器 | |
| 总任务与当前子任务 | 用户、高层策略或逐步语言指导 | |
| 视觉子目标 | 根据当前观测与子任务生成的目标图像;可选条件 | |
| 速度、质量、错误等行为元数据 | 按任务设置期望条件,并非预知本次结果 | |
| 控制模式 | 系统选定的关节或末端控制接口 |
这几个字段解决的是不同歧义。“把毛巾放好”描述语义;目标图像指定空间布局;控制模式解释输出数值;历史帮助理解刚刚发生过什么;质量与速度条件帮助从混合水平的数据中请求某种行为。

12.3 记忆不是简单地把所有旧图片塞进上下文
π0.7 使用 MEM 风格的视觉历史编码器,对历史图像进行时空压缩,使历史不必按原始帧数线性占用同样多的视觉 token。相关 MEM 工作还区分短期视觉历史与长期语义记忆,分别服务于运动状态理解和长程任务进度。MEM 方法说明
在 π0.7 报告的设置中,最多接入四路当前相机,每路最多六帧历史,历史采样间隔为 1 秒;观测图像与子目标图像缩放到 448 × 448。历史本体状态也进入主干,每个状态经线性投影成为一个位置。训练会随机丢弃历史;对应的状态位置同时被 mask,保持图像历史与状态历史的可见性一致。π0.7 §VI-B
因此,描述一个 VLA 的输入时,除了“几路摄像头”,还要问:是否读取历史、历史间隔多大、怎样压缩、是否保存已完成子任务。单张图像里看不出杯子刚刚被拿走还是一直不存在,也可能看不出衣物哪一步已经做过。
12.4 世界模型生成的是子目标,不是提前拿到真实未来
π0.7 的子目标图像可以由一个基于 BAGEL 的图像生成模型产生:根据当前场景、子任务与条件,给出接下来希望达到的视觉状态。VLA 再利用这个图像引导动作。它们是不同职责:世界模型提供视觉目标,动作策略产生具体控制量。
训练中可以从示范轨迹的未来帧构造目标图像,也会使用生成的子目标,减轻训练时真实图像与部署时生成图像之间的差异。论文并非要求每个样本始终带目标图:会对子目标和部分提示字段做采样或 dropout,使模型适应条件缺失。π0.7 技术报告 §V-B、VI-C
这里还有两层不同的采样比例:论文只为每个 batch 中约 25% 的样本加入视觉子目标;在使用真实未来图像构造子目标时,又以 25% 概率取子任务片段末帧,其余从未来 0~4 秒内采样。前者决定多少样本带这种条件,后者决定条件对应多远的未来,不能把两个 25% 混成同一个概率。π0.7 §V-E、VI-C
并非所有非机器人数据都要补出关节动作。报告中的网页问答、定位、文本与视频描述提供各自的监督;分段标注的人类视频还能用于子目标生成模型训练。图像中的人体运动并不天然等于某台机械臂的可执行控制量。π0.7 §VI-A、附录 C
部署时不能把评估轨迹的真实未来帧偷拿来当条件。生成图像也不是物理仿真保证:一张看起来合理的折好衣服图片,不保证当前夹爪、遮挡与接触状态存在可行路径。
12.5 质量、速度与失败轨迹怎样共存
原论文中的元数据包括 episode 长度所表示的速度、1~5 级整体质量,以及动作片段是否发生错误。训练时根据记录和标注提供这些条件;推理时可以请求高质量、无错误等期望条件。
这与“看到失败数据就模仿失败”不同:模型学习的是带上下文的行为分布。它还可以吸收 π*0.6 等专用策略产生的自主经验,把部分专家行为汇入同一个通用模型。请求 quality=5 只是一个学到的条件,不是成功保证;这种条件训练也不应直接等同于每一步在线 RL。π0.7 项目说明
12.6 可组合技能,不等于完全没有相关训练经验
官方展示包含把已有技能迁移到新的“机器人—任务”组合,例如用没有采集过该任务示范的双臂 UR5e 折衣服。应把它读成目标具身与任务组合未见,而不是“训练从未出现衣物折叠,也从未出现这台机器人”。
空气炸锅例子也需要分层描述:一句零样本总指令、逐步语言指导、再根据指导数据适配高层策略,其自主程度不同。作者还明确讨论过训练集中相关设备交互的例子,因此不能把“未采集这个完整任务”扩写成“模型从未见过空气炸锅”。π0.7 组合任务与跨具身实验
判断这种泛化能力,最好拆成四个独立问题:是否见过物体、是否见过环境、是否见过技能、是否见过当前具身与技能的组合。一个“zero-shot”标签无法同时回答它们。
12.7 动作块路线仍在,但实时执行更明确
π0.7 继续输出 50 步连续动作块。论文报告其评估使用 5 次采样更新,并采用训练时 RTC 来处理异步推理;不同实验执行 15 或 25 步前缀。这里 5 次采样、50 步预测、15/25 步执行仍然是不同数量。π0.7 §VI–VII
丰富的提示、视觉子目标和历史会改变计算开销,因此需要分开测量高层语言、目标图生成、VLA 动作生成与机器人执行。论文采用异步线程更新部分条件,不能根据一段视频反推出所有模块共享同一频率。
附录给出了更具体的成本边界:最小 π0.7 配置在 H100、三路相机与五次采样下约需 38 ms;加上视觉历史和子目标上下文,报告最重配置可到约 127 ms。这两项都描述 VLA 推理,不包括重新生成一组视觉子目标。
独立子目标模型基于约 14B 的 BAGEL。论文使用四张 H100 的张量并行、8-bit 大矩阵运算等优化,以 25 次采样约在 1.25 秒内生成子目标;系统在子任务变化或距离上次生成达到约 4 秒时异步更新。因而,动作生成与视觉目标更新必须有不同的时间安排。这是报告中的系统配置,不是 π0.7 所有部署都必须照抄的硬件清单。π0.7 §VII、附录 C–D
12.8 两个消融,分别看数据数量与数据多样性
π0.7 不只展示最终机器人视频,也在衣物折叠实验中把数据按质量与速度分成“最好 30%、50%、80%、全部”四档;每档各训练带元数据与不带元数据的模型,共八个模型。报告中,不带元数据的版本在引入更多低质量数据后可能退化,带元数据的版本则能继续受益。它验证的是条件设计与数据组成的交互,不能简写为“失败数据越多越好”。
另一个消融比较“去掉任务多样性最高的 20% 数据”和“随机去掉 20% 数据”。两者去除量相同,用来区分数据数量与被去除内容的影响;报告中前者在所测短程未见任务上退化更多。这个设计适合迁移到自己的数据研究:删掉一类数据时,增加同数量的随机删除对照,才能更清楚地解释来源价值。π0.7 §IX-E、Fig. 18
这些都是该论文的实验结论;混合失败数据之前,仍需有稳定的标注口径、训练条件和独立评估,不能只把旧日志不加区分地放进模仿学习。
13. 把发展路线放在同一张表里
| 工作/时间 | 主要新增能力或设计 | 动作路线 | 应保留的边界 |
|---|---|---|---|
| RT-2,2023-07 | 生成式 VLM 的知识接入机器人控制 | 逐维离散动作、自回归 | 网页知识不自动产生未学过的运动技能 |
| OpenVLA,2024-06 | 开放模型与适配流程、融合视觉编码 | 逐维离散动作、自回归 | 原版单图像、单步输出;比较对象是 RT-2-X |
| π0,2024-10 | 动作专家、多具身预训练与任务后训练 | Flow Matching 动作块 | 50 Hz 不是完整模型调用频率 |
| FAST,2025-01 | 对动作时间结构进行压缩编码 | DCT+量化+BPE,自回归 | 训练更快与推理更快是两件事 |
| OpenVLA-OFT,2025-02 | 并行解码、动作块和输入扩展 | 连续 L1 回归 | 回归效果依数据与任务而定 |
| π0.5,2025-04 | 异构联合训练、陌生环境与层级任务 | 离散训练与连续动作结合 | 场景泛化不等于任意新技能泛化 |
| KI,2025-05 | 保护主干训练信号、保留快动作解码 | 离散监督+隔离梯度的动作专家 | 不是冻结全部主干 |
| π*0.6/RECAP,2025-11 | 利用奖励、自主经验和人类纠正改进 | Advantage 条件策略与连续动作 | 价值估计需要验证,结果须同时看成功与速度 |
| MEM,2026-03 | 短期视觉历史与长期任务记忆 | 为策略增加历史条件 | 记忆范围与状态维护影响评估 |
| π0.7,2026-04 | 更丰富提示、视觉子目标与混合质量数据 | 连续动作专家+历史+RTC | 提示来源、指导方式和训练重叠必须说明 |
表中时间表示对应研究首次公开的月份,不代表代码或权重的开放时间。π0 的模型介绍发布于 2024 年 10 月,openpi 的公开发布在 2025 年 2 月;研究介绍与可下载模型是两个不同事件。openpi 发布说明
13.1 哪些能从公开仓库开始
截至本文核对时,openpi 官方仓库明确列出 π0、π0-FAST、π0.5 的模型类型及相关 checkpoint。本文核对的提交是 215abfb217dbac7d5f1273282331b9b1866c0479,OpenVLA 是 c8f03f48af692657d3060c19588038c7220e9af9。
在这份 openpi 快照中,没有列出 π0.6 或 π0.7 的对应官方模型实现与 checkpoint。因此,本文会详细解释其公开技术报告,但不会把改一个模型名称的命令写成“复现 π0.7”。第三方同名仓库也不能仅凭名称当作官方权重。openpi 固定版本、OpenVLA 固定版本
开放权重同样不等于开放全部训练数据、完整生产训练配方和原论文硬件。实际复现需要分别列出:能获得的模型、数据、代码、接口和评估协议。
13.2 参数量、权重大小与运行显存是三个量
对含 个参数、每个参数用 字节存储的模型,单份稠密权重的近似大小为 。若统一假设 BF16/FP16 的每参数 2 字节,可作如下量级换算:
| 名称/规模口径 | 论文常用近似参数量 | 单份 16-bit 权重的算术估计 |
|---|---|---|
| RT-2/RT-2-X 对照中的大模型版本 | 55B | 约 110 GB |
| OpenVLA 的 7B 级模型 | 7B | 约 14 GB |
| 原始 π0,含新增动作专家 | 3.3B | 约 6.6 GB |
| π0.7 策略模型 | 约 5B | 约 10 GB |
| π0.7 的独立 BAGEL 子目标模型 | 约 14B | 约 28 GB;论文实际部署采用量化与多卡 |
这里用十进制 GB,参数量本身也经过取整;表格是计算示例,不是下载文件实测或最低显存要求。OpenVLA 论文报告 BF16 加载约需 15 GB,并在 RTX 4090 的特定配置下约以 6 Hz 推理。不能把名义 7B 直接推算成实际一定只占 14 GB,也不能把这项速度移用到其他视觉输入或动作块配置。OpenVLA §3.5
推理还要保存视觉上下文、K/V、动作采样激活和运行时缓冲。训练则增加梯度与优化器状态;LoRA 减少的是可训练参数及其相应状态,底座权重仍需加载。量化后的权重还可能有分组尺度、零点和未量化层。π0.7 的独立子目标模型与高层调用也应另算。更详细的换算可使用模型与训练指标文章中的预算工具。
14. 怎样评价进步:指标与消融不能只看一个 loss
14.1 三层评估分别回答不同问题
| 层次 | 可报告的量 | 不能据此直接推出 |
|---|---|---|
| 离线预测 | 动作 token 交叉熵、反归一化误差、flow loss | 真实任务完成率必然更高 |
| 闭环任务 | 完整成功率、分阶段得分、干预次数、恢复能力 | 能泛化到任意环境或具身 |
| 系统效率 | 端到端延迟、动作队列断供、成功任务/小时 | 只要动作输出多就代表任务吞吐高 |
π0 某些实验使用归一化的阶段进度分数。比如完成了拿出衣服、铺平,但没折好,可能取得部分得分。平均得分 0.8 不能自动翻译成 80% 完整成功率。 必须看每个任务的 scoring rubric。π0 附录 E
对于离散动作,多维逐项 token 准确率也可能掩盖夹爪关键时刻的错误;对于生成模型,一条与示范不同的轨迹可能成功,而一条均方误差很小的轨迹可能在接触阶段失败。离线指标适合诊断,闭环试验负责验证任务行为。
14.2 如何设计一组能回答问题的消融
以下是本文建议的实验设计,不是任何论文的原始结果:
| 要验证的问题 | 改动 | 尽量保持相同 | 重点观察 |
|---|---|---|---|
| 动作表示是否重要 | 标量 token、L1、Flow Matching | 观测、训练划分、动作定义与可比预算 | 成功率、延迟、模式一致性 |
| 视觉语言预训练是否有用 | 预训练初始化与其他初始化对照 | 架构规模、训练数据与计算预算 | 未见物体/指令与收敛;同时说明从头训练预算是否充分 |
| 数据多样性是否有用 | 去掉某一类数据或改变混合权重 | 评估集、训练 token/样本预算 | 新场景、新具身、已学技能是否退化 |
| 元数据是否帮助利用失败数据 | 有/无元数据 × 有/无次优数据 | 同一标注与测试协议 | 是否存在交互作用,是否真的减少退化 |
| 视觉子目标是否有用 | 语言条件与语言+生成目标图 | 同一高层指令、延迟预算与场景 | 空间精度、失败恢复、目标生成错误 |
| 历史或 RTC 是否有用 | 去掉历史/去掉对应实时机制 | 控制周期、延迟注入、动作块长度 | 遮挡、动作衔接、闭环反应 |
比较不同输出头时,训练 FLOPs 相同、GPU 小时相同和更新步数相同,通常不能同时做到。应明确采用哪一种预算,再同时报告另一种成本;不要悄悄把更多训练资源算成架构优势。
去掉预训练的对照也不一定公平地只改变了“有没有知识”:若参数规模、初始化、优化难度或训练步数同时不同,结论需要缩小到实际实验所支持的范围。
14.3 把“泛化”写成可检查的划分
建议至少分开记录:
- 对象与场景:测试物体实例、家庭、背景是否进入过训练。
- 任务与策略:新指令措辞、新技能组合,还是全新运动技能。
- 具身:机器人本身没见过,还是只没见过该机器人执行这个任务。
- 辅助条件:是否有人逐步指导、是否使用目标图、目标图由谁提供。
- 独立试验:重置方式、试验次数、随机种子、成功判定、超时和人工接管规则。
相邻视频帧不是独立试验,同一条 episode 的滑动窗口也不是独立测试任务。对跨家庭泛化,按帧随机分割很容易让同一个房间同时进入训练和测试;应按能表达研究问题的实体分组划分。
如果报告每小时成功数,计时还应说明是否包含重试、失败恢复、人工接管与场景重置。只有成功视频的平均完成时间,不等于部署期间的真实吞吐。更系统的指标口径可参考训练与评估指标专题。
15. 随文算例:不用下载权重,也能检查关键概念
配套的 vla_lab.py 只使用 Python 标准库,运行量化、条件均值、流时间方向、双峰概率输运、奖励与优势、动作时钟及数据混合权重七组算例。它不发送机器人命令、不下载模型,也不把算例结果作为模型性能。
python -B vla_lab.py
python -B vla_lab.py --self-test预期能核对这些结果:
| 算例 | 关键结果 |
|---|---|
| 0.02 m 在 ±0.1 m、256 桶中编码 | 编号 153;还原 0.019921875 m |
| 对称的 −1、+1 两种动作 | L2 最优均值为 0;L1 在两点之间有不唯一的最优解 |
| 目标 2、噪声 −1、10 次正确方向 Euler 更新 | 终点 2;故意反向更新得到 −4 |
| 双峰解析流场,初值 −0.2 与 +0.2,积分到 | 分别约 −0.960 与 +0.960;保持不同输出模式 |
| 十步奖励均为 −1,价值从 −100 变为 −70 | 未归一化优势估计为 20 |
| 50 步块、50 Hz、执行 25 步 | 名义覆盖 1 s;前缀执行 0.5 s;忽略开销时约 2 次规划/秒 |
| 100∶1 的组样本数量、0.43 次幂重采样 | 组采样权重比约 7.24∶1 |
若要重绘双峰曲线,将 plot_flow_modes.py 与 vla_lab.py 放在同一目录,另安装 Matplotlib,再运行下面的命令。主算例和八项自检仍只依赖标准库。
python -B plot_flow_modes.py --output flow-mode-transport.svg如果希望开始实际实验,先选定一个开放 checkpoint 与匹配的数据接口,完成“样本可视化 → 动作反归一化 → 离线推理 → 固定协议闭环评估”,再扩展数据和模型。多具身动作适配可继续阅读 X-VLA,动作块训练与执行基础可阅读 LeRobot 与 ACT。
阅读自测与验收
- RT-2 输出的是自然语言运动说明吗? 主要动作路径输出可解码为数值控制量的动作 token。
- OpenVLA 的 7B 对 55B 是否隔离了参数量因素? 没有;数据、结构、训练与具体任务都要一起看。
- 为什么不能说动作无法回归? 确定性回归有表达与损失上的取舍,但在合适数据和任务上可以很有效。
- π0 的 50 个动作位置与 10 次采样是什么关系? 每次采样更新整个 50 步动作块。
- 50 Hz 是否表示每秒运行 50 次完整大模型? 不是;动作执行频率、块更新频率和内部采样次数不同。
- π0 的后训练与 π*0.6 的后训练是否相同? 原始 π0 主要用监督示范,RECAP 进一步使用奖励、价值和自主经验。
- Flow Matching 的平方误差为什么不必把两种动作平均成零? 它拟合依赖噪声位置与流时间的向量场,不同初值可以保留不同输出模式。
- RECAP 的价值数值是否等于成功概率? 不是;本文讨论的价值由任务回报构造,同时受完成、耗时与失败惩罚影响。
- KI 是否把 VLM 完全冻结? 不是;主干仍由离散/文字目标训练,只隔离指定连续分支的梯度。
- π0.7 的视觉子目标是否是真实未来观测? 部署时通常是生成的目标条件,不能使用尚未发生的评估真值。
- 没有目标具身的折衣服数据,是否意味着训练从未出现折衣服? 不是;这是需要明确任务与具身组合的泛化问题。
- 技术报告发布是否代表权重已开放? 不是;应分别检查论文、官方代码、checkpoint 与数据。
资料索引
| 来源 | 适合核对的内容 |
|---|---|
| RT-2 原论文、项目 | 动作 token、co-fine-tuning、语义泛化与推理限制 |
| OpenVLA 论文、代码 | 视觉融合、数据清洗、RT-2-X 比较与适配 |
| π0 初版论文、openpi | 动作专家、Flow Matching、原始数据与开放实现差异 |
| FAST、OpenVLA-OFT | 动作压缩与连续回归两条分支 |
| π0.5 论文 | 异构数据、层级推理、原始两阶段训练 |
| Knowledge Insulation | 梯度隔离与联合训练 |
| π*0.6/RECAP | 价值函数、优势条件、奖励与经验闭环 |
| MEM | 历史压缩与长短期记忆 |
| π0.7 论文、项目 | 多模态条件、混合质量数据、组合泛化与实时部署 |