VLA 架构交互式学习

基于 StarVLA 代码库,带你理解主流 Vision-Language-Action 模型的模块化设计

📖 OpenPI & StarVLA 代码精读课 →

🎓 新手入门
整体架构
Backbone 层
Action Head 层
全部模型清单
层与VLM深究
数据集
训练数据流
深度数据流
方法对比
资源配置
OpenPI 对比
自测

🎓 VLA 新手入门:从零建立全局认知

这一页给完全零基础的人。读完你能回答:VLA 是什么、为什么需要它、一个机器人从"看到"到"动起来"中间发生了什么、动作和观测到底长什么样、数据从哪来。看懂后再去其它 tab 深入。

1. VLA 是什么?一句话

VLA = Vision-Language-Action 模型:一个神经网络,输入是相机图像(Vision) + 语言指令(Language),输出是机器人的动作(Action)

  [相机看到的画面] + "把红色杯子放到盘子上"
                    │
                    ▼
              ┌──────────┐
              │  VLA 模型 │
              └──────────┘
                    │
                    ▼
   [机械臂未来几步怎么动: 往哪走、夹爪开还是合]

类比:ChatGPT 是"文字进、文字出";VLA 是"图像+文字进、机器人动作出"。它把大模型的理解能力接到了真实机器人身上。

2. 为什么需要 VLA?它取代了什么

老办法问题VLA 的改进
传统运动规划 (先感知→建模→规划轨迹)每个任务要人工写规则,换任务/换物体就崩从演示数据端到端学,换任务只需换数据
强化学习 (试错学习)真机试错慢又危险,奖励难设计用人类演示直接模仿,不用试错
普通模仿学习 (无语言)一个模型只会一个任务,不懂指令语言指令控制,一个模型做多任务
VLA 的核心价值:① 语言可控——同一个模型,说不同的话做不同的事;② 泛化——借助大模型预训练的常识,能应对没见过的物体/场景;③ 端到端——不用人工设计每一步,从演示里学。

3. 一个完整例子:从"看到杯子"到"手臂动起来"

假设任务是 "pick up the red cup"(拿起红杯子)。全流程:

① 观测(Observation): 2 个相机拍照 + 读机械臂当前姿态
   images = [主视角RGB, 腕部RGB]   state = 当前末端位姿+夹爪开合

② 输入模型: images + "pick up the red cup" + state
   → VLM 把图像和文字编码成特征 (理解"红杯子在哪、要抓它")

③ Action Head 生成动作: 输出未来 16 步动作序列
   action = [[Δx,Δy,Δz, Δroll,Δpitch,Δyaw, gripper], ... 共16行]

④ 执行(Receding Horizon): 只执行前 8 步 → 机械臂移动
   → 执行完重新拍照, 回到 ①, 循环

⑤ 直到杯子被拿起 → 任务成功

这就是一次完整的"感知→决策→执行→再感知"的闭环。VLA 模型负责的是 ②③ 两步。

4. "动作"到底是什么?7 维拆解

最常见的机械臂动作是 7 维向量(每一步):

维度含义说明
1-3x, y, z 位移末端(夹爪)在空间往哪移动
4-6roll, pitch, yaw 旋转夹爪姿态怎么转 (也可能用 6D 旋转表示)
7gripper 夹爪开(0)还是合(1)
两个关键概念
绝对 vs 相对:动作可以是"移动到坐标(x,y,z)"(绝对/位置控制),也可以是"相对当前移动Δ"(相对/速度控制)。Diffusion Policy 论文发现位置控制通常更好
归一化:训练前动作数值会归一化到 [-1,1],推理后再还原——否则不同维度量纲差异大,网络难学。
action chunk(动作块):VLA 不是一次只出 1 步,而是一次出一串(如 16 步),这叫 action chunk,能让动作更连贯、抗延迟。

5. 模型怎么学会的?模仿学习 + 数据从哪来

VLA 主要靠 模仿学习 / 行为克隆 (Behavior Cloning, BC):给它看大量"专家怎么做"的演示,让它模仿。

数据怎么来的?——遥操作 (Teleoperation)

人用手柄/VR/主从臂遥控机器人完成任务,全程记录"每一刻看到什么 + 人让它做什么动作"。一次完整任务录下来叫一条 episode / trajectory(轨迹)

一条 episode = [
  (图像_t0, 指令, 动作_t0),
  (图像_t1, 指令, 动作_t1),
  ...直到任务完成
]
成千上万条 episode → 训练集 → 模型模仿
训练目标:给定(图像+指令),让模型预测出的动作尽量接近演示里人做的动作。就这么简单——没有奖励、没有试错,纯模仿。(具体到 Diffusion/Flow Matching 怎么预测,见 DP·DiT·FM 三剑客页。)

6. VLA 发展时间线(建立坐标系)

2022  Gato / VIMA        早期多任务, 通才尝试
2023  RT-1 → RT-2        Google, 首次把大 VLM 接到机器人
      Diffusion Policy   用扩散模型生成动作 (多模态突破)
2024  OpenVLA            开源 7B VLA, 社区基线
      Octo               开源通用策略
      π0                 Physical Intelligence, Flow Matching 动作专家
2025  π0.5 / GR00T-N1    开放世界泛化 / NVIDIA 人形
2026  StarVLA            开源"乐高"平台 (本页主角)
      Qwen-VLA/RobotManip 阿里, OOD-first 评测
      π0.7 / GigaBrain   RL 自进化 / 世界模型

StarVLA 的定位:不是又一个新模型,而是把上面这些方法统一到一个可复现、可替换的代码库里,方便公平对比和快速原型。

7. 术语小词典(VLA 黑话查询)

术语一句话解释
backbone主干网络,这里指负责理解图像+语言的 VLM
action head动作头,接在 backbone 后面、负责输出动作的模块
chunk动作块,一次预测的一串连续动作 (如16步)
horizon时间窗口。观测horizon=看几步历史; 预测horizon=预测几步; 执行horizon=执行几步
rollout让模型在环境里实际跑一遍任务 (评测时用)
proprioception本体感觉,机器人自己的关节角/末端位姿等内部状态
embodiment本体,指具体的机器人形态 (单臂/双臂/不同型号)
cross-embodiment跨本体,在一种机器人上训练、迁移到另一种
teleoperation遥操作,人远程操控机器人来采集演示数据
episode / trajectory一条完整任务的记录 (观测+动作序列)
BC (Behavior Cloning)行为克隆,模仿演示数据的学习方式
OODOut-Of-Distribution,分布外,指测试时遇到训练没见过的情况
checkpoint训练过程中保存的模型权重文件
denoise / 去噪扩散模型从噪声一步步生成动作的过程
SFT监督微调,用标注数据训练模型

8. 推荐学习路径

你在这里 ──► 🎓 新手入门 (建立全局观)
              │
              ▼
         整体架构 (Backbone + Action Head 分解)
              │
              ▼
    Backbone层 / Action Head层 (两大模块分别理解)
              │
              ├──► 想懂动作头背后的扩散数学?
              │     去 → "DP·DiT·Flow Matching 三剑客" 页
              │
              ▼
    层与VLM深究 (VLM 的层、选层策略)
              │
              ▼
    数据集 (训什么、测什么、OOD)
              │
              ▼
    全部模型清单 / 方法对比 / OpenPI对比 (进阶横向)
              │
              ▼
         自测 (检验掌握)
卡在术语上随时回本页第 7 节查词典。想深入某个动作头的数学原理,去看 DP·DiT·Flow Matching 三剑客 页(study-hub 首页可进)。

核心设计:Backbone-Action Head 分解

VLA 系统被拆解为两个通过标准化隐状态契约连接的可替换模块。点击任意模块查看详情。

多视角 RGBimages: List[PIL]
语言指令lang: str
本体感觉state: [1, dim]
VLM BackboneQwen-VL / Gemma4 / MiniCPM
World Model BackboneWan2.2 / CosmoPredict2
hidden_states [B, L, H]
FAST自回归Token
OFTMLP并行回归
GR00TFlow-Matching DiT
PI (π)层级Cross-DiT
动作 Chunk[B, T, action_dim]

Backbone 层:感知与理解

Backbone 负责将原始多模态输入编码为丰富的隐状态表示,供 Action Head 消费。

VLM Backbone(基于预训练视觉-语言模型)

主力 Qwen2.5-VL / Qwen3-VL

3B-4B 参数,36层 Transformer,hidden_dim=2048。支持动态分辨率,原生多图输入。StarVLA 大部分实验基于此。

代码: modules/vlm/QWen2_5.py, QWen3.py

轻量 Gemma4

Google 的 4B 视觉-语言模型。适合对比不同 VLM backbone 对动作预测的影响。

代码: modules/vlm/Gemma4.py

轻量 MiniCPM-V

2.4B 参数,28层,hidden_dim=2304。国产高效 VLM,适合资源受限场景。

代码: modules/vlm/MiniCPM_V.py

World Model Backbone(基于视频生成模型)

WM Wan2.2-TI2V-5B

阿里万相 Text+Image→Video 模型。30层 DiT,hidden_dim=3072。用 UMT5 编码文本,VAE 编码图像。

代码: modules/world_model/Wan2.py

WM CosmoPredict2-2B

NVIDIA Cosmos 系列预测模型。24层,hidden_dim=2048。面向物理世界预测。

代码: modules/world_model/CosmoPredict2.py

VLM vs World Model 做 VLA Backbone 的区别

维度VLM BackboneWorld Model Backbone
预训练目标图文对齐 + 语言生成未来帧预测(时空建模)
输入处理Vision Encoder → Projector → LLMVAE Encoder → DiT
隐状态语义高级语义(对象、关系、意图)动态物理(运动、接触、变形)
优势场景语言驱动、多任务泛化接触丰富、需要物理预测
代表方法OpenVLA, π₀, GR00TCosmos Policy, UniSim

Action Head 层:四大范式

Action Head 将 backbone 的隐状态转换为机器人可执行的动作序列。点击卡片查看内部结构。

AR FAST - 自回归离散 Token

原理:将连续动作 BPE 编码为离散 token,复用 LLM 的 next-token 预测。

代表:π₀-FAST, RT-2

参数量最小 | 推理慢(自回归)| 适合语言-动作联合

REG OFT - MLP 并行回归

原理:从 hidden states 中提取特征,MLP 直接回归连续动作值(L1 Loss)。

代表:OpenVLA-OFT

最简单 | 推理最快 | 数据效率高 | 单峰假设

FM GR00T - 单源 Cross-DiT Flow-Matching

原理:Cross-DiT 做流匹配,所有 DiT 层共享 VLM 最后一层 hidden_state 作为 KV。

代表:GR00T N1.5, CogACT

多模态分布 | 推理需迭代 | DiT 深度自由 | 单一语义条件

LW-FM PI (π₀) - 层级对齐 Cross-DiT

原理:DiT 第 i 层 cross-attend 到 VLM 第 i 层,多尺度特征融合做流匹配。

代表:π₀

最强表达力 | 多尺度空间+语义 | DiT层数=VLM层数

关键设计选择:用哪一层 VLM 的 token?

不同 VLA 方法取 VLM 隐状态的方式截然不同,反映各自的设计假设:

方法取哪些层怎么用设计假设
GR00T仅最后一层
hidden_states[-1]
所有 DiT 层 cross-attn 共享同一 KV最终表示已充分融合视觉+语言,够用
PI (π₀)最后 N 层
hidden_states[-N:]
第 i 层 DiT cross-attend 到第 i 层 VLM不同深度编码不同粒度,精确操作需要全部
FAST不显式取动作在 LLM 内部自回归生成,所有层天然参与动作就是语言序列的延续
OFT最后层中特定 token 位置MLP 从对应位置直接回归action token 位置已聚合足够信息
# GR00T (QwenGR00T.py) — 只取最后层
last_hidden = qwenvl_outputs.hidden_states[-1]

# PI (QwenPI.py) — 取最后 N 层,N = DiT 层数
expected_layers = len(self.action_model.model.transformer_blocks)
vl_embs_list = list(qwenvl_outputs.hidden_states[-expected_layers:])

实验启示:从 StarVLA 的 LIBERO 结果看,OFT(仅最后层)96.6% 略胜 PI(全层)95.7%,说明简单桌面任务上多尺度特征收益不明显。PI 的优势可能要在需要空间精度的精细接触操作中才能体现。

VLM 在 VLA 中的角色:只是条件编码器吗?

VLM 在不同 action head 中扮演的角色不完全相同:

Action HeadVLM 的角色类比
GR00T / PI纯条件编码器。VLM 输出 hidden states,action DiT 通过 cross-attn 以此为条件生成动作Stable Diffusion 中 CLIP text encoder
OFT条件编码器 + 特征提取器。最后层特定 token 位置被 MLP 直接读取BERT + classification head
FAST不是条件编码器——VLM 本身就是动作生成器。动作 token 在 LLM 内部自回归生成GPT 生成文本,动作是文本的延续
Flow-matching 类 (GR00T/PI)

VLM = 条件编码器,和文生图的 text encoder 完全类比。可以冻结 VLM 只训练 action head。

FAST(自回归)

VLM 既是编码器也是生成器,不可分。因果注意力让图像/语言 token 自然 condition 动作 token。必须微调整个 VLM。

StarVLA 全部模型清单(25 个注册 Framework)

论文只重点讲 4 个代表性变体(FAST/OFT/PI/GR00T),但代码库 FRAMEWORK_REGISTRY 实际注册了 25 个 framework。下面是逐个核对源码后的完整清单。每个 = 1 个 Backbone + 1 个 Action Head 的具体组合。

A. 论文四大代表范式(Action Head 家族)

注册名BackboneAction Head范式文件
QwenFastQwen2.5/3-VL (+Action词表)FAST tokenizer自回归离散tokenVLM4A/QwenFast.py
QwenOFTQwen2.5/3-VLMLP (action special token)并行回归 L1VLM4A/QwenOFT.py
QwenPI (=QwenFM)Qwen2.5/3-VL层级 Cross-DiTFlow MatchingVLM4A/QwenPI.py
QwenGR00TQwen2.5/3-VL单源 DiTFlow MatchingVLM4A/QwenGR00T.py

B. 换 VLM Backbone 的移植变体(同一 Action Head,不同 VLM)

注册名BackboneAction Head说明
Gemma4PIGemma-4 (google/gemma-4-E2B-it)层级 Cross-DiT (FM)QwenPI 移植到 Gemma4
Gemma4GR00TGemma-4单源 DiT (FM)QwenGR00T 移植到 Gemma4
MiniCPMPIMiniCPM-V 4.6层级 Cross-DiT (FM)QwenPI 移植到 MiniCPM
MiniCPMGR00TMiniCPM-V 4.6单源 DiT (FM)QwenGR00T 移植到 MiniCPM
CosmosGR00TCosmos-Reason2 (架构=Qwen3-VL)单源 DiT (FM)QwenGR00T 用 Cosmos-Reason2 VLM

这类变体证明了"Backbone 可插拔"——同一动作头换个 VLM 就是新 framework,几乎零改动。

C. 换 Action Head 的探索变体(新颖动作头)

注册名BackboneAction Head创新点
QwenPI_v3Qwen2.5/3-VL压缩层级 Cross-DiT每层 VLM 经 LayerNorm+Linear 投影降维(2560→1024),省~(vl/dit)²参数;离散化state注入语言。已放出SimplerEnv 69.8% ckpt
QwenDiscreteDiffusionQwen2.5-VLMaskGIT 离散扩散头层级 cross-attn 结构同 PI,但连续 FM 换成对动作分箱的离散扩散(预测logits),支持 RTC 实时分块
QwenAdapterQwen-VLVLA-Adapter 头动作头来自 VLA-Adapter 论文
QwenDualQwen2.5-VL + DINOv2单源 DiT (FM)双视觉编码器:VLM + DINOv2 多视角空间特征融合

D. WM4A:世界模型做 Backbone(6 个)

注册名Backbone (World Model)Action Head
WanPIWan2.2-TI2V-5B (视频DiT)层级 Cross-DiT (FM)
WanGR00TWan2.2-TI2V-5B单源 DiT (FM)
WanOFTWan2.2-TI2V-5BMLP 回归 (OFT)
CosmoPredict2PICosmos-Predict2 DiT层级 Cross-DiT (FM)
CosmoPredict2GR00TCosmos-Predict2 DiT单源 DiT (FM)
CosmoPredict2OFTCosmos-Predict2 DiTMLP 回归 (OFT)

WM4A = "World Model for Action"。把感知 backbone 从 VLM 换成视频生成模型(Wan2.2 / Cosmos-Predict2),复用同样的 4 类动作头。2×3 = 6 个组合(PI/GR00T/OFT × Wan/Cosmos)。

E. 复杂/集成系统(多模块组合)

注册名BackboneAction Head特点
InternVLA-M1Qwen2.5-VL + DINO 多视角层级 QFormer 聚合 → DiTStarVLA 的前身(codebase fork 自 InternVLA-M1),QFormer 聚合多层VLM隐状态
LangForceQwen-VL单源 DiT (FM) + 语言力ICML2026;语言span一致性+硬token LLR+shortcut gate(贝叶斯分解)
ABot_M0Qwen3-VL 4B (ABot-M0预训练权重)Flow Matching接入 ABot-M0 团队预训练权重(amap-cvlab)

规律总结:组合矩阵

              │ FAST │ OFT │ PI(层级DiT) │ GR00T(单源DiT) │ 其它头
──────────────┼──────┼─────┼─────────────┼────────────────┼──────────
Qwen-VL       │  ✓   │  ✓  │  ✓ (+v3)    │  ✓             │ Adapter/离散扩散/Dual
Gemma-4       │      │     │  ✓          │  ✓             │
MiniCPM-V     │      │     │  ✓          │  ✓             │
Cosmos-Reason2│      │     │             │  ✓             │
Wan2.2(WM)    │      │  ✓  │  ✓          │  ✓             │
Cosmos-Pred2  │      │  ✓  │  ✓          │  ✓             │
特殊集成      │      │     │             │                │ M1 / LangForce / ABot_M0
核心洞察:25 个 framework 本质是 {Backbone} × {Action Head} 笛卡尔积的一部分子集,加上少数带额外模块的集成系统(DINO/QFormer/语言力)。这正是 "Lego 式" 设计的体现——论文讲 4 个是为了讲清 4 类范式,代码库的 25 个是这些范式在不同 backbone 上的实例化

深究:VLM 的"层"、选层策略、以及 VLA-VLM 与原生 VLM 的关系

这一节回答一组常被混淆的问题:所谓"不同层"到底是什么?每层是不是一张 feature map?为什么 starVLA 选的层和原作者不同?用自回归的 VLA 还有"层"的概念吗?VLA 里的 VLM 和原生 VLM 有没有区别?

1. "层"到底是什么?每一层是什么?

VLM 的语言主干是一个 Transformer decoder,由 N 个结构相同的 decoder block 堆叠而成(Qwen3-VL-4B 是 36 层,Gemma-4 约 34 层)。这里说的"层"就是每个 decoder block 的输出

输入 tokens (图像patch token + 文本token) → embedding
   │  形状 [B, L, H]   B=batch, L=token序列长, H=hidden_size(如2048)
   ▼
┌─ Block 0  ─→ hidden_states[1]   [B, L, H]   ← "第1层输出"
├─ Block 1  ─→ hidden_states[2]   [B, L, H]
├─ ...
└─ Block 35 ─→ hidden_states[36]  [B, L, H]   ← "最后一层输出"

output_hidden_states=True 时, HF 返回 (N+1) 个张量:
  hidden_states[0]  = embedding 层输出(未过任何block)
  hidden_states[1..N] = 每个 block 的输出
关键澄清:每一层不是"一张 feature map"。它是一个形状 [B, L, H] 的张量——L 个 token、每个 token 一个 H 维向量。它更像"L 个 token 各自的语义向量序列",而不是 CNN 里那种 [C,H,W] 的空间特征图。图像在进 LLM 前已经被视觉编码器切成 patch token 拉平成序列了,所以 LLM 内部是"序列 × 向量",没有二维空间结构。

不同深度的层编码不同抽象层级的信息(这是 Transformer 的普遍规律):

层深度大致编码什么类比
浅层 (0~1/3)低级/局部:token 表面、局部搭配、物体位置纹理"看到了什么、在哪"
中层 (1/3~2/3)中级:短语组合、物体关系、场景布局"它们之间什么关系"
深层 (2/3~最后)高级:任务语义、指令意图、下一步预测"要干什么"

2. 各 Action Head 用哪些层?——含"用不用层"的对照

Action Head用层策略取的是什么
FAST(自回归)不显式取任何隐藏层直接用 LLM 的 logits/输出 token——动作是自回归生成序列的一部分
OFT仅最后一层 hidden_states[-1]该层中 action token 位置的向量 → MLP 回归
GR00T仅最后一层 hidden_states[-1]整层 [B,L,H] 作为 DiT 的 cross-attn KV
PI(层级)最后 N 层 hidden_states[-N:]第 i 层 DiT 对应吃第 i 层 VLM
PI_v3最后 N 层 + 逐层投影降维每层经 LayerNorm+Linear 压缩后再喂 DiT
回答"是不是有 VLA 不用层的概念":是的。FAST(自回归)就不用隐藏层——它把动作离散成 token,直接让 LLM 像生成文字一样"说出"动作 token,取的是 LLM 顶端的 logits,不碰中间任何 hidden_states。"取隐藏层"是给 OFT/GR00T/PI 这类"外挂 action head"用的;自回归范式绕开了这一步。

3. starVLA 怎么"选层"?代码实现

PI 的选层不是随便挑几层,而是让 DiT 的层数决定取多少层,从 VLM 顶部往下数

# starVLA/model/framework/VLM4A/QwenPI.py
qwenvl_outputs = self.qwen_vl_interface(..., output_hidden_states=True)
expected_layers = len(self.action_model.model.transformer_blocks)  # DiT 层数
vl_embs_list = list(qwenvl_outputs.hidden_states[-expected_layers:])
#                                                 ↑ 取"最后 expected_layers 层"
# DiT 有几层, 就取 VLM 最后几层, 第 i 层 DiT 吃第 i 层 VLM

QwenPI_v3 更进一步——每层先过一个专属投影器压维再喂 DiT:

# starVLA/model/framework/VLM4A/QwenPI_v3.py
vl_embs_list = list(qwenvl_outputs.hidden_states[-self.num_action_dit_layers:])
# 每层一个 LayerNorm+Linear 投影: VLM hidden(2560) -> DiT hidden(1024)
self.project_layers = nn.ModuleList([LayerNorm+Linear ...])
return [proj(vl_h) for proj, vl_h in zip(self.project_layers, vl_embs_list)]

世界模型(Wan2.2)则用 forward hook 抓中间 block 输出,层由 extract_layers 配置(默认 [-1],即只抓最后一层):

# starVLA/model/modules/world_model/Wan2.py
extract_layers = wm_cfg.get("extract_layers", [-1])
for layer_idx in self._extract_layers:
    actual_idx = layer_idx if layer_idx >= 0 else num_blocks + layer_idx
    block = self.transformer.blocks[actual_idx]
    block.register_forward_hook(self._capture_hook)  # 挂钩子抓该层输出

4. 为什么 starVLA 选的层可能和原作者不同?

核心原因:starVLA 换了 backbone,原作者的"层号"不再适用,必须重新对齐。几个具体动因:

  1. Backbone 不同 → 层数不同。π₀ 原版用 PaliGemma(Gemma-2B, 18 层),starVLA 的 QwenPI 用 Qwen3-VL-4B(36 层)。原作者"用某几层"的绝对层号搬过来没有意义,starVLA 改成相对规则:DiT 有多少层就取 VLM 最后多少层(hidden_states[-N:]),自动适配任意 backbone。
  2. 参数量/显存权衡。用全部 36 层做层级 cross-attn,DiT 也得 36 层,参数和显存大。PI_v3 因此加逐层投影降维(2560→1024),在"仍用多层"和"可训练"间折中——这是原作者没有的工程改动。
  3. 统一接口的需要。starVLA 要用同一套 action head接不同 backbone(Qwen/Gemma/MiniCPM/Wan/Cosmos)。若沿用各原作者的具体层选择,就无法统一。于是抽象成"取最后 N 层"这种 backbone 无关的规则。
  4. hidden_states 索引约定差异。HF 的 output_hidden_states 返回 N+1 个张量(含 embedding 层),有的原实现从 embedding 数起、有的从第一个 block 数起。starVLA 统一用负索引 [-N:] 从顶部数,规避这种 off-by-one 分歧。
差异带来的影响:取更深的层→更偏任务语义、动作更"听懂指令"但丢空间细节;取更多层(层级)→多尺度信息更全但更重。starVLA 的选择偏向可移植性和工程可控,而非复刻某个 backbone 上的最优层号——因为它的定位是"乐高平台",要保证换 backbone 不崩。

5. VLA 里的 VLM 和原生 VLM 有区别吗?——分情况

答案是:看这个 VLA 用哪种 action head,有的改了 VLM、有的没改。可分三档:

档位代表VLM 本体是否改改了什么
A. 完全不改结构,只微调权重GR00T / PI / OFT结构不变VLM 当"特征编码器",前向照旧输出 hidden_states;只是训练时权重被微调(或冻结)。词表、架构、tokenizer 全不动
B. 扩词表 + 微调FAST轻改:加 action token往 tokenizer/embedding 里新增一批动作 token(如 Qwen2.5-VL-3B-Action),embedding 和 lm_head 相应扩容。主干结构不变,但词表变大了
C. 改造输入/注意力π₀ 双 Gemma较大改动如 π₀ 把动作专家(小 Gemma)和 VLM(大 Gemma)拼进同一注意力空间、加 prefix-suffix 掩码——已不是原生 VLM 的标准前向
结论:不能一概而论。大多数"外挂 action head"型 VLA(GR00T/PI/OFT)不改 VLM 结构,VLM 就是个拿来即用的特征编码器(甚至可冻结),和原生 VLM 结构完全一致,区别只在"是否微调权重"和"额外读了中间层"。FAST 轻改(扩词表)。π₀ 这类才真正动了 VLM 结构

对照 starVLA 代码印证 A 档"不改结构":

# QwenGR00T / QwenPI: 直接调 HF 原生模型, 只多要 hidden_states
qwenvl_outputs = self.qwen_vl_interface(
    **qwen_inputs, output_hidden_states=True, return_dict=True)
# ↑ 就是原生 Qwen-VL 的 forward, 没有任何结构修改
# 区别仅: (1)可能冻结/低LR微调 (2)读了中间层给 action head
# QwenFast: 用原生 generate, 但词表被扩过(含 action token)
generated_ids = self.qwen_vl_interface.model.generate(...)
mask = (generated_ids >= act_min) & (generated_ids <= act_max)  # 抓动作token
# ↑ 结构没改, 但 tokenizer/embedding 扩了动作词表

6. 一图总结

                   原生 VLM (Qwen3-VL 36层 decoder)
                   每层输出 hidden_states[i]: [B, L, H]
                   (L个token各一个H维向量, 非空间feature map)
                                │
    ┌───────────────┬──────────┼───────────┬──────────────┐
    ▼               ▼          ▼           ▼              ▼
  FAST            OFT        GR00T         PI           PI_v3
不取隐藏层      取[-1]层     取[-1]层    取[-N:]层    取[-N:]层+投影
用logits       +action     整层做       第i层DiT      每层LN+Linear
自回归         token位置    cross-attn   吃第i层VLM    压维再喂
  │              │          KV            │              │
VLM扩词表      VLM不改     VLM不改      VLM不改       VLM不改
(轻改)         (仅微调)    (仅微调)     (仅微调)      (仅微调)

选层规则: 相对索引 [-N:] (N=DiT层数), 换backbone自动适配
→ 这就是 starVLA 和"原作者固定层号"不同的原因: 为可移植性

数据集:VLA 训什么、测什么

VLA 的能力上限很大程度由数据决定。这一节梳理:① 训练用的大规模数据 ② 评测用的 benchmark ③ 不同数据类型各教会模型什么 ④ 为什么 OOD 评测越来越重要。
(内容整理自 195 篇论文数据集分析 + 各数据类型作用综述)
关于本页可靠性(源码核对) 标注的内容直接读自 starVLA 仓库源码/README,可靠;未标注或标 (外部文档) 的规模数字、OOD 维度等来自飞书文档等二手来源,我如实转录但未逐条独立核实;标 (示意) 的任务举例是为帮助理解而编的示例,非官方逐条任务清单。严肃引用前建议对照对应 benchmark 官方仓库/论文。

0. 训练协议:benchmark 上的分数是怎么来的?🟢论文核对

最常被问:"都说在仿真 benchmark 上测,是在 benchmark 数据上训练吗?" 是的——先厘清训练分几层:

阶段用什么数据产出
① VLM 预训练(继承,非自己做)互联网图文/VQA(无机器人动作)Qwen-VL / PaliGemma 等通用骨干
② VLA 预训练(可选,基础模型才做)大规模跨本体机器人数据(OXE/DROID/RH20T…)π0 / GR00T / Qwen-RobotManip 等机器人基础模型
③ VLA 后训练/微调(SFT)(几乎都做)目标 benchmark 自带的演示 split(如 LIBERO 每套件 500 条)在该 benchmark 刷分的模型
直接回答:仿真 benchmark 的成功率 = 在该 benchmark 自带的训练演示上做后训练(SFT) → 在同一 benchmark 任务上 rollout 得来的,不是零样本。例:StarVLA 在 LIBERO 四套件各 500 条演示上训 100K 步;ImageWAM 在合并四套件上训 10 epoch。
那还算测泛化吗? 标准 benchmark 测的是分布内(IID)泛化:训练用该任务一批演示,测试用同任务的新初始化(物体位置/初态不同,模型没背过具体摆放)——所以大家标准 LIBERO 都 >90%。OOD benchmark(LIBERO-Plus/PRO)则用原始数据训、在扰动集测(不拿增强数据训练),才测真正的分布外能力。完整的训练范式(预训练/后训练/协同训练/用哪些数据)见 VLA 训练与部署实战 · 训练范式 tab

1. 先分清:训练数据 vs 评测 benchmark

训练数据评测 benchmark
目的让模型学会动作衡量模型好不好
规模越大越好 (千小时级)够覆盖任务即可
代表Open X-Embodiment, DROID, BridgeData V2LIBERO, CALVIN, RoboCasa, SimplerEnv, RoboTwin
形态多为真机遥操作/合成多为仿真 (可复现、免真机)

2. 大规模训练数据集(喂给模型学的)

数据集规模机器人特色 / 谁在用
Open X-Embodiment (OXE)1M+ episodes / 22 种机器人多本体Google 主导的跨本体开源联盟,统一 RLDS 格式。OpenVLA/π0/GR00T/Qwen-VLA 预训练
DROID76K+ episodes / 564 场景Franka (多实验室)分布式采集、多样性极高、多相机。被引最多(31篇)
BridgeData V260K+ episodesWidowX 250多场景桌面操作、语言标注丰富。SuSIE/OpenVLA 微调
AgiBotWorld大规模人形/双臂GR00T/Qwen-RobotManip 用
RoboMIND大规模多任务多种Qwen-RobotManip 用(但发现 UR 数据 81% 未通过质量检查)
关键教训:数据多 ≠ 数据好。OpenVLA 曾因质量问题在训练末期移除部分 DROID 权重;Qwen-RobotManip 发现 RoboMIND UR 数据 81% 未通过 state-action 一致性检查。大规模异构数据必须先严格清洗对齐(状态/动作/视频/语言一致性),否则规模会变成噪声甚至冲突。

3. 评测 benchmark(测模型好不好的)

标准 benchmark(广泛使用)

名称任务机器人典型用途
LIBERO130任务(Spatial/Object/Goal/Long各套)Franka PandaVLA 基础能力评测首选,几乎所有论文都报(被引29篇)
CALVIN34任务, ABCD 4环境Franka (PyBullet)长程语言条件操作;ABC→D 是天然 zero-shot OOD;引导类方法聚集地
RoboCasa100任务(365版更大)Franka / 移动臂写实厨房场景,通用策略评测
SimplerEnvGoogle Robot + WidowX2 平台仿真复现真机表现、与真机高相关,快速迭代
RoboTwin 2.050 双臂任务5 种本体大规模双臂泛化评测

OOD / 鲁棒性 benchmark(2025-2026 新趋势)

名称OOD 维度核心发现
LIBERO-Plus7维独立扰动(物体布局/相机视角/初态/语言/光照/背景/噪声)相机视角和初态最致命,性能 95%→30%
LIBERO-PRO物体替换/初态/指令/环境/任务(5维)VLA 依赖记忆而非理解;π0.5 Object 98% → 加 Position 扰动 17% → 加 Task 扰动 1%
RoboTwin-C2R干净场景训练→随机化场景测试StarVLA 从 IID 85.7% 跌到 OOD 10.6%
RoboTwin-IF语言指令变体测"语言是否真正控制动作",防 VLA→VA 退化
RoboTwin-XE跨本体零样本迁移joint 控制几乎不能跨本体(<5%),需相机系 EEF 对齐

3.4b 专题:LIBERO-Plus vs LIBERO-PRO —— 哪个更"OOD"?🟢仓库/论文核对

两者名字相近但是两个不同的 benchmark,都在原始 LIBERO 演示上训练、在扰动集上测(都是纯 OOD 评测),但侧重点不同。常被混淆,这里逐条对照。

维度LIBERO-PlusLIBERO-PRO
出处In-depth Robustness Analysis of VLA(sylvestf);ImageWAM 等用它arXiv:2510.03827;VLS 用它
规模10,030 个任务4 suite × 多种扰动
扰动维度7 类:相机视角 / 机器人初态 / 语言改写 / 光照 / 背景纹理 / 传感器噪声 / 布局5 类:Position(swap) / Object / Semantic(语言) / Task / Environment
侧重感知·物理层扰动更全语义·任务层 OOD 更极端
标志性发现对相机视角/初态极敏感(95%→<30%);模型"忽视语言",退化成 Vision-Action高分靠"死记场景";π0.5 Object 98% → 加 Position 掉到 17%、加 Task 掉到 1%
最狠的扰动相机视角 / 机器人初态(纯视觉物理偏移)Task:同时换指令+目标+关注物体,几乎所有模型掉到 0–1%
巧妙设计7 维 × 5 级强度梯度,可测"扰动多大开始崩"Position(swap):指令一字不改只对调两物体位置,纯测"死记坐标 vs 真找目标"
哪个"更 OOD"?没有绝对答案,看你比什么:
• 论扰动覆盖广度 + 感知鲁棒性LIBERO-Plus 更全面(7 维 > 5 维,量级 1 万+任务,还带 5 级强度梯度)。做 VLA 鲁棒性全景评测选它。
• 论单点极端难度 + 语义级泛化 + 戳破"记忆作弊"LIBERO-PRO 的 Task 扰动更硬核(逼模型真读懂新指令,普遍崩到 0–1%)。验证推理时纠偏(如 VLS)、语义泛化选它。
两者互补不冲突:LIBERO-Plus 偏"看得对不对"(视觉/物理扰动),LIBERO-PRO 偏"懂不懂任务"(语义/任务扰动)。数据来源:LIBERO-plus 仓库 README(7 维、10,030 任务) + LIBERO-PRO 论文 arXiv:2510.03827(VLS 页有代码级拆解)。

3.5 各 benchmark 的任务与难度分级详解

光知道名字不够,下面拆开每个 benchmark:里面具体是什么任务怎么分套件/难度easy/hard 到底差在哪

可靠性标注(源码核对) = 从 starVLA 仓库源码/README 直接读取,可靠;(示意) = 按套件语义编的示例,用于理解,非官方逐条任务;(外部文档) = 来自飞书文档等二手来源,未在仓库核对。

① LIBERO — 4 个套件,各测一种泛化 (套件名+数量: 源码核对)

LIBERO 130 任务分成 4 个"套件(suite)",每套 10 个任务 × 50 条演示。StarVLA 用一个模型同时训 4 套,每套评 500 次(10任务×50次)。4 套不是难度分级,而是测不同能力维度

套件测什么泛化任务举例 (示意)
LIBERO-Spatial空间关系理解:同样的物体,摆放位置/空间描述变化"把碗放在盘子左边/右边"——物体相同,考空间词
LIBERO-Object物体泛化:不同物体,相同任务结构"拿起牛奶盒"、"拿起番茄酱"——换物体
LIBERO-Goal目标泛化:相同物体布局,不同目标同一场景,"打开抽屉" vs "把碗放炉子上"——换目标
LIBERO-Long (LIBERO-10)长程组合:需要多个子步骤连续完成"把汤碗放炉子上再关抽屉"——长 horizon 多步
"任务举例"列是示意(帮助理解套件差异),非 LIBERO 官方任务清单逐条。官方每套 10 个任务的精确描述见 LIBERO 官方仓库的 bddl 文件。另有 LIBERO-90(90个短任务,常用于预训练)。

② SimplerEnv — 两种评测协议 × 两个机器人 (协议名+任务名: 源码核对)

SimplerEnv 在仿真里复现真机策略表现。关键是两种评测协议(这才是它的"严格度"分级):

协议含义严格度
Visual Matching (VM)仿真渲染刻意贴近真机图像(叠加真实背景纹理),让 sim 尽量对齐 real标准
Variant Aggregation (VA)系统改变背景/光照/桌面/相机等多种变体后取平均,测鲁棒性更难(近 OOD)
平台任务
Google RobotPick Coke Can(抓可乐罐)、Move Near(把A移到B附近)、Open/Close Top/Middle/Bottom Drawer(开关抽屉)、Put in Drawer(放进抽屉)
WidowX (Bridge)Put Carrot on Plate(胡萝卜放盘)、Put Spoon on Tablecloth(勺子放桌布)、Put Eggplant in Basket(茄子放篮)、Stack Green on Yellow Cube(叠方块)

③ RoboTwin 2.0 — Easy vs Hard 到底差在哪 (Easy/Hard定义+任务名: 源码核对)

这就是 easy/hard 的答案! RoboTwin 的 Easy/Hard 不是任务不同,而是场景随机化程度不同:
Easy (demo_clean)Hard (demo_randomized)
场景干净、固定背景/光照/桌面域随机化:杂乱物/光照/背景/桌面纹理/语言 5 轴随机
训练演示量50 条/任务500 条/任务
考验基础任务学习视觉鲁棒性 / sim2real 泛化

50 个双臂任务(源码中 49 个去重任务名),一个模型全部训。任务名(源码核对):adjust_bottle、beat_block_hammer、blocks_ranking、click_alarmclock/bell、handover_block/mic、hanging_mug、lift_pot、move_can_pot 等;括号内中文为字面直译(示意):调瓶子、锤子敲块、方块排序、按闹钟/铃、递方块/麦克风、挂杯子、抬锅、移罐子。每任务都有 Clean/ 和 Randomized/ 两个版本。

RoboTwin 2.0 派生 3 个 OOD 子集:C2R(干净训随机测)、IF(指令跟随)、XE(跨本体)——见上面 OOD 表。

④ RoboCasa — 厨房场景,tabletop 与 365 两档

版本本体 / 动作维度任务类型 (源码核对)
RoboCasa (tabletop)Fourier GR1 人形(7-DOF双臂+Fourier灵巧手+腰=29-D)PnP 抓放:PnPBottleToCabinet、PnPCanToDrawer、PnPCupToDrawer、PnPMilkToMicrowave 等(物体→容器)
RoboCasa365单臂 Franka PandaOmron(12-D: eef位姿6+夹爪1+底盘4+控制模式1)50 任务(18 原子+组合):OpenDrawer、CloseDoor、TurnOffStove、TurnOnMicrowave、TurnOnSinkFaucet、CoffeeSetupMug、NavigateKitchen 等

场景写实,3200+ 物体资产 (资产数来自外部文档,未在仓库核对)。GR1 版本(RoboCasa-GR1)用于人形评测。

⑤ CALVIN — 长程语言链,ABC→D 是难点 (D_D/ABC→D+指标: 源码核对)

CALVIN 有 34 个原子任务(开抽屉/推方块/开灯/移滑块/旋转等),核心玩法是连续完成一串任务(5-in-a-row),指标是平均连续完成长度(Avg. Length,满分5)。难度来自环境分割

设置含义难度
D→D (task_D_D)在 D 环境训、D 环境测基础(同分布)
ABC→D在 A/B/C 环境训、没见过的 D 环境测难(zero-shot 环境泛化,天然 OOD)

CALVIN 是"推理时引导"类方法(SuSIE/DISCO/DynaGuide/VLS)的标准测试台。

3.6 "难度/分级"术语横向对照

不同 benchmark 的"分级"含义完全不同,别混淆:

benchmark分级方式分级的本质
LIBERO4 套件(Spatial/Object/Goal/Long)不同泛化维度,非难度递增
RoboTwinEasy / Hard场景随机化程度(clean vs domain-randomized)
SimplerEnvVisual Matching / Variant Aggregation评测严格度(对齐真机 vs 多变体取平均)
CALVIND→D / ABC→D环境是否见过(同分布 vs zero-shot)
RoboCasatabletop / 365 / Composite-Unseen规模与组合泛化
LIBERO-Plus7 维 × 5 级梯度扰动强度逐级加大

4. 为什么 OOD 评测越来越重要?

核心观点(Qwen-RobotManip 2026):标准 benchmark 高分已不能证明真泛化

  • 标准 LIBERO 分数普遍 95%+ 已饱和,无区分度
  • 从零训练的模型能在标准 benchmark 上追平大规模预训练模型——说明它只是记住/拟合了分布内模式,没真正理解
  • 一进 OOD 设置(换相机/换本体/换指令/随机化),差距立刻拉开:预训练和对齐的价值才显现
模型ID 表现OOD 表现说明
StarVLARoboTwin Easy 85.7%C2R OOD 10.6%标准高分 ≠ OOD 泛化
π0.5ID 强OOD 明显优于无预训练模型预训练在 OOD 体现价值
Qwen-RobotManipID 强OOD 更强对齐+规模化放大 OOD 能力
结论OOD-first evaluation 正成为 foundation model 的主评测协议。看一个 VLA 强不强,别只看它 LIBERO 多少分,要看它在 LIBERO-Plus / C2R 这类 OOD 下崩不崩。

5. 不同数据类型各教会模型什么(进阶)

VLA 训练往往混合多种数据,各司其职、互补而非替代:

数据类型教会模型什么代表
VLA / 机器人演示核心:从观测到动作的控制映射OXE, DROID, Bridge
VQA / caption / grounding看懂物体/属性/关系/语言 (防 VLM 能力退化)π0.5, Qwen-RobotManip 用 28M VL 样本
Embodied VL / ECoT理解任务进度、下一步该做什么Qwen-RobotManip, π0.5
人类视频 / H2R补长尾行为、扩场景多样性 (机器人数据贵)Qwen-RobotManip 24,808h 合成
仿真 / 合成便宜扩规模、覆盖长尾、造 OODGR00T, LingBot
世界模型 / rollout预测未来、虚拟训练、验证动作后果CosmosPolicy, World-VLA-Loop
失败 / 偏好数据知道什么是错、怎么选更优动作DWYS/SEAL, RECAP
触觉 / 力补视觉看不到的接触状态 (插入/滑移/过力)ForceVLA, TactileAloha
一句话:VQA/VL 数据负责"看懂说清",VLA 演示负责"会动手",人类视频负责"扩多样性",仿真负责"便宜扩规模",触觉/力负责"接触动力学",失败数据负责"知错能改"。它们互补,不能互相替代。

6. StarVLA 集成了哪些数据集/benchmark

StarVLA 作为统一平台,接入了主流 benchmark 做公平对比(每个 benchmark 一个 examples/ 目录 + eval 接口):

训练数据格式: 统一用 LeRobot format
接入的 benchmark:
  LIBERO / LIBERO-plus   examples/LIBERO/, examples/LIBERO-plus/
  SimplerEnv             examples/SimplerEnv/
  RoboTwin 2.0           examples/Robotwin/
  RoboCasa (tabletop/365) examples/Robocasa_tabletop/, Robocasa_365/
  CALVIN                 examples/calvin/
  BEHAVIOR-1K            examples/Behavior/
  DOMINO                 examples/DOMINO/
  VLA-Arena              examples/VLA-Arena/
  Franka (真机)          examples/Franka/
预训练数据: Bridge + Fractal(RT-1) 等 OXE 子集 (见 model_zoo)

每个 benchmark 目录内含数据准备脚本、训练配置(yaml)、评测接口(model2*_interface.py),通过 server-client 架构解耦模型推理与环境评测(详见"训练数据流"tab)。

7. 真机数据集全景 (外部文档: 内部数据集汇总 wiki)

真机数据是 VLA 学"怎么动"的核心来源。下面是业界主流真机数据集:

数据集开源?规模机器人 / 特点
Open X-Embodiment开源200万+ 条 / ~9TB谷歌联合高校,22 种机器人,跨本体大联盟
DROID开源76K+ episodes / 564 场景Franka,多实验室分布式采集,多样性极高
BridgeData V2开源60,096 条轨迹 / 24 环境UC-Berkeley,WidowX 低成本机器人,语言标注丰富
UMI开源2.5万+ 条Stanford,基于 UMI 手持夹爪,无需机器人即可采集,腕上眼
RDT开源6千+ 条清华,类 ALOHA 双臂操作
RH20T开源11万+ 条上交,接触丰富,含视觉+力觉+音频+动作+人类演示
AgiBot World开源百万+ 原子动作智元,100 台同构机器人,100+ 场景,含视触觉/六维力/灵巧手
GraspNet-1Billion开源97,280 RGB-D 图 / 10亿抓取姿态上交,通用物体抓取基准,88 种日常物品+3D模型
OAKINK2开源627 双手操纵序列 / 401万帧双手物体操纵,Affordance/原语/复杂任务三层抽象
FMB开源22,550 条轨迹功能操作基准,多阶段装配(peg插板),Franka,2全局+2腕部视角
宇树 Unitree开源G1灵巧手/夹爪、Z1双臂操作数据 + 训好的 DP/ACT 模型
π0 dataset闭源1万+ 小时 / 7类机器人 68任务Physical Intelligence 自采,工业级护城河
GR-2闭源4万+ 条字节,GR-2 训练专采

8. 仿真数据集全景 (外部文档)

平台单位规模/任务特点
CALVIN1场景4操作任务,长程语言条件长时序;观测含头部+腕部RGBD+关节+末端+触觉;动作支持绝对/相对末端位姿+夹爪或关节
Meta-WorldFarama50 任务元强化学习/多任务基准,任务标准化
LIBERO130 任务(4套件)终身学习基准,声明性知识(物体/空间)+过程性知识(动作)迁移
RoboMimicStanford/UT Austin多套演示从演示学习框架,提供数据集+学习算法
RoboCasaUT Austin/NVIDIA大规模厨房日常任务,高质量人类演示库
Behavior-1KStanford 李飞飞1000 任务/8场景基于 Nvidia Omniverse,1900+物体类型,支持柔性体/流体/热效应
VLABench100 任务(60原语+40复合)Primitive(1-2维能力) vs Composite(多步推理长程规划)
UniDexGrasp/++北大 王鹤仿真中基于点云的抓取姿态估计

9. 人类视频数据集 (外部文档)

人类视频便宜且丰富,用于补机器人数据的规模和行为多样性(需经 H2R 转换才能变成机器人可学轨迹):

数据集规模特点
Ego4D3600 小时第一视角,9国74地点926人,日常活动,含音频/3D网格/眼动
Ego-Exo4D1286.3 小时多模态多视角,13城市740拍摄者,技能性活动,第一+第三视角配对
HowTo100M1.36亿视频剪辑/120万YouTube视频教学叙述视频,23k活动(烹饪/手工/园艺/健身)
EPIC-KITCHENS55 小时/32厨房厨房第一视角,39594动作片段,454158物体框

10. 小米内部数据集 (外部文档: 常用数据集整理 wiki)

小米机器人团队的内部数据分真机、仿真、人类视频三类,均上云管理(TOS):

类别数据集批次命名规则
真机M92U 真机数据工站名 + 日期 + 机器人编号
松灵(Cobot Magic)真机数据日期 + 任务名称 + cobot_magic
AC_one 真机数据日期 + 机器编号
仿真Curobo 仿真数据(MiUniverse)curobo + 日期 + 机器型号
MimicGen 仿真数据日期 + libero_aloha + 左右手 + 任务名 + cobot_magic
人类视频第一人称数据日期 + 批次 + human_video
MimicGen 仿真数据示例:基于 LIBERO-ALOHA,左手(pnp_left)/右手(pnp_right)各 30 个物体的抓放任务(alphabet_soup/cream_cheese/tomato_sauce/milk/ketchup/mug/bowl/apple/avocado 等),每任务 10×25 条演示。个别任务标注失败(moka_pot 任务失败、oil_tin 成功率低)。

11. AgiBot World 详解 (外部文档: AgiBot数据)

智元 AgiBot World 是重要的开源大规模数据集,分三部分:

子集EpisodesTasks相机类型
AgiBotDigitalWorld~49k (48984)~68仿真场景
AgiBotWorld-Alpha~18k (18081)368真实场景
AgiBotWorld-Beta更大规模真实场景

多相机配置(8路):head(头部) + head_front/left/right_fisheye(前/左/右鱼眼) + back_left/right_fisheye(后左/右鱼眼) + hand_left/right(左右手腕)。

本体数据结构(action/state 各含):effector(执行器: 力/位置) + end(末端: 角速度/朝向/位置/速度/力矩) + joint(关节: 电流/力矩/位置/速度) + robot(底盘: 朝向/速度) + waist(腰部, 真机)。数据需转成 LeRobot 格式训练。

看点:AgiBot 的动作/状态结构非常完整(执行器/末端/关节/底盘/腰全都有),这正是"移动式双臂人形"平台的典型数据组织——对比单臂 Franka(只有末端+夹爪),人形数据维度多得多。

12. 主流数据集的发布团队 (外部整理)

知道一个数据集出自哪个团队,能帮你判断它的风格、质量和适用场景:

数据集/平台发布团队/单位定位
Open X-EmbodimentGoogle DeepMind 联合 20+ 高校跨本体开源大联盟,统一 RLDS 格式
DROID多实验室联合(Stanford/Berkeley 等)分布式采集的 Franka 真机,多样性最高
BridgeData V2UC Berkeley (RAIL 实验室)WidowX 低成本机器人,语言标注丰富
RH20T上海交通大学接触丰富,含视觉+力觉+音频多模态
AgiBot World智元机器人 (AgiBot)百万级人形/双臂,视触觉+六维力
RoboMIND国家地方共建具身智能创新中心等大规模多任务真机
LIBEROUT Austin (Lifelong Robot Learning)终身学习基准,4 套件
CALVINFreiburg 大学长程语言条件操作
RoboCasaUT Austin + NVIDIA (Yuke Zhu 团队)写实厨房场景
RoboTwin (1.0/2.0)上海 AI Lab / 港大等 (RoboTwin 团队)数字孪生双臂,含域随机化
SimplerEnvUC San Diego / Google 等仿真复现真机表现
Meta-World / RLBenchMeta(原) / Farama 维护;帝国理工早期多任务基准
Behavior-1KStanford (李飞飞团队)1000 任务,Omniverse 仿真
Ego4D / Ego-Exo4DMeta AI 联合多机构第一视角人类视频
FAST tokenizerPhysical Intelligence动作 BPE tokenizer
规律:Physical Intelligence(π系列)、NVIDIA(GR00T/Cosmos)、Google(RT/OXE)、UT Austin(RoboCasa/LIBERO)、Berkeley(Bridge/OpenVLA)、上海AI Lab(RoboTwin) 是当前机器人操作数据/基准的主要产出团队。(团队归属为外部整理,个别项目可能有多单位合作,严肃引用请核对论文作者单位)

13. 逐个数据集:发布团队 + 特殊处理细节

拿到数据集不能直接喂模型,每个都有自己的来源、格式和处理坑。下面逐个说清。(源码核对)=本地仓库/论文确认,(调研)=全网调研,(整理)=综合整理。

LIBERO (源码核对: LIBERO-plus / ImageWAM / libero2lerobot 仓库)

  • 团队:UT Austin (Lifelong Robot Learning,Bo Liu 等,NeurIPS 2023)
  • no-ops 过滤:官方/社区发布时已过滤好,目录名带 no_noops,下载即用
  • 图像 180° 旋转:基于 robosuite/MuJoCo,OpenGL 渲染原点在左下角→原始图上下颠倒。OpenVLA 确立 img[::-1,::-1](旋转180°)摆正惯例。训练/评测朝向必须一致,否则成功率崩到0
  • 格式转换:原始 HDF5/RLDS → 需转 LeRobot format(libero2lerobot 工具,支持视频压缩省60倍存储)
# 区分三种操作(易混!)
img[::-1]        = 上下翻转
img[:, ::-1]     = 左右翻转(镜像, 破坏左右语义!)
img[::-1, ::-1]  = 旋转180°(双轴反转) ← LIBERO 用这个

RoboTwin (1.0 / 2.0) (源码核对: ImageWAM 仓库)

  • 团队:上海 AI Lab / 港大等 (RoboTwin 团队,CVPR 2025 / ICML 2026)
  • no-ops 过滤:发布的是原始数据,未预过滤,需自己算过滤 json。判定 delta=action−state, ‖delta‖₂≤1e-3 为 idle;删连续≥5帧的 idle 段
  • 关键坑episode 结尾的 idle 帧要故意保留! 结尾松爪/静置尾巴含"如何正确收尾"信息,删了模型学不会成功结束。这是 OpenPI(π₀团队)在 DROID 上的配方
  • Easy/Hard:Clean(50演示/任务) vs Randomized(500演示/任务,域随机化)

CALVIN (调研: arXiv 2112.03227 + 官网)

  • 团队:University of Freiburg (Oier Mees 等,RA-L 2022)
  • 数据特点:play data(自由探索无标注)采集,只有约1%带语言标注;ABCD 四环境
  • 处理:task_ABCD_D / task_D_D 分割;长程链评测(5-in-a-row)。HF 上有拆分好的子集便于下载

RoboCasa / RoboCasa365 (调研: RSS2024 + ICLR2026 UT Austin RPL)

  • 团队:UT Austin RPL + NVIDIA (Soroush Nasiriany, Yuke Zhu 等)
  • 数据特点:人类演示 + MimicGen 合成(从<200条人类演示自动生成5万+);365版含600h人类demo + 1600h合成demo,2500厨房环境
  • 处理:LLM 生成组合任务、text2image 生成场景纹理;tabletop 用 GR1 人形,365 用 Franka PandaOmron(12-D)

SimplerEnv (调研: CoRL 2024, simpler-env.github.io)

  • 团队:UC San Diego / Google DeepMind 等 (CoRL 2024)
  • 核心:real-to-sim,在仿真中复现真机策略表现,与真机高相关;GPU 加速 10-15×
  • 两协议:Visual Matching(叠加真实背景纹理对齐真机) vs Variant Aggregation(改变背景/光照/相机后取平均,更难)

DROID (源码核对: openpi 仓库 + 调研)

  • 团队:Khazatsky & Pertsch 等,13 个学术机构分布式采集(Stanford/Berkeley 等,2024)
  • 数据特点:76K+ episodes / 564 场景,Franka + ZED 立体相机(腕部+双外部),多样性极高
  • 处理:OpenPI 用 idle 过滤(动作≈0的帧删掉);提供 cam2cam 相对位姿 + 相机参数 json(~90k);OpenVLA 曾因质量问题在训练末期移除部分 DROID 权重(真实数据多≠一定好)

BridgeData V2 (整理)

  • 团队:UC Berkeley (RAIL 实验室,2023)
  • 数据特点:60,096 轨迹 / 24 环境,WidowX 250 低成本机器人,语言标注丰富;兼容目标图像和语言指令
  • 用途:SuSIE/GHIL-Glue 训编辑器、OpenVLA 微调、SimplerEnv WidowX 真机对标

Open X-Embodiment (OXE) (整理)

  • 团队:Google DeepMind 联合 20+ 高校 (2023)
  • 数据特点:22 种机器人,200万+ episodes,~9TB,统一 RLDS 格式
  • 处理:各子数据集频率/动作空间不同,用时需重加权/筛选(如 OpenVLA 只保留第三人称单臂 EEF 数据;π0 用 "OXE Magic Soup" 配比子集)

RH20T (整理)

  • 团队:上海交通大学 (2023)
  • 数据特点:11万+ 接触丰富序列,含视觉+力觉+音频+动作+人类演示视频,多机器人多视角
  • 注意:虽含 force-torque,但多数 VLA(如 Qwen-RobotManip)只用它做视觉数据源,没用力觉做策略输入

AgiBot World (调研 + 内部文档)

  • 团队:智元机器人 (AgiBot,2024-2025)
  • 数据特点:百万级原子动作,100 台同构机器人,8 路相机,含视触觉/六维力/灵巧手
  • 处理:分 DigitalWorld(仿真) / Alpha / Beta(真机);本体数据结构完整(执行器/末端/关节/底盘/腰),需转 LeRobot 格式

人类视频 (Ego4D / Ego-Exo4D / EPIC-KITCHENS) (整理)

  • 团队:Ego4D/Ego-Exo4D=Meta AI 联合多机构;EPIC-KITCHENS=Bristol/多校
  • 处理:不能直接训动作(无机器人动作标签),需经 Human-to-Robot(H2R)合成:MANO 手部关键点→gripper 映射→SAM 分割去手→IK 重定向→深度合成(见 Qwen-RobotManip 的 H2R 管线)

③ 跨数据集通用处理 (整理自 Qwen-RobotManip)

  • 动作归一化:按 q01/q99 或 mean/std 归一化到 [-1,1],训练/推理必须用同一份统计量(否则动作幅度全错)
  • 跨数据集清洗:状态-动作趋势对齐、FK 一致性、极值过滤、视频-状态一致性——RoboMIND UR 数据 81% episode 未通过趋势对齐检查
  • 动作空间对齐:跨本体时用相机系 delta EEF,让"相同视觉运动"数值一致
  • 格式统一:几乎都转成 LeRobot format 供统一 dataloader
🔗 延伸:VLA 训练与部署实战(动作表示/tokenization/归一化) · Qwen-RobotManip(大规模数据清洗 + H2R 合成管线)

深度数据流:从像素到动作的完整路径

1. VLM Encoder 内部结构(Qwen2.5-VL)

┌─────────────────────────────────────────────────────────────────────┐
│                      Qwen2.5-VL 内部结构                             │
├─────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐    ┌──────────────┐                              │
│  │  RGB Image   │    │ Text Prompt  │                              │
│  │ [H, W, 3]   │    │ "pick up..." │                              │
│  └──────┬───────┘    └──────┬───────┘                              │
│         ▼                    ▼                                      │
│  ┌──────────────┐    ┌──────────────┐                              │
│  │ Vision Encoder│    │  Tokenizer   │                              │
│  │ (ViT-600M)  │    │ (BPE 152064) │                              │
│  │ Patch=14x14  │    └──────┬───────┘                              │
│  └──────┬───────┘           │                                      │
│         ▼                    ▼                                      │
│  ┌──────────────────────────────────────┐                          │
│  │     Token Sequence 拼接              │                          │
│  │ [img_tokens | text_tokens]           │                          │
│  │ 形状: [B, L, 2048]                  │                          │
│  └──────────────────┬───────────────────┘                          │
│                     ▼                                              │
│  ┌──────────────────────────────────────┐                          │
│  │    36 层 Transformer Decoder         │                          │
│  │                                      │                          │
│  │  每层:                               │                          │
│  │    LayerNorm                         │                          │
│  │    Causal Self-Attention (GQA)       │ ← 因果掩码              │
│  │      Q: [B,L,2048] K/V: [B,L,2048] │ ← GQA: Q头>KV头         │
│  │      Attn = softmax(QK^T/√d) · V   │                          │
│  │    Residual + LayerNorm             │                          │
│  │    FFN (SwiGLU)                     │                          │
│  │    Residual                         │                          │
│  │              × 36 层                │                          │
│  │                                      │                          │
│  │  输出: hidden_states[0..36]         │                          │
│  │    每层: [B, L, 2048]              │                          │
│  └──────────────────┬───────────────────┘                          │
└─────────────────────┼───────────────────────────────────────────────┘
                      ▼
        GR00T 取: hidden_states[-1]  → [B, L, 2048]
        PI 取:    hidden_states[-36:]→ 36 × [B, L, 2048]

2. KV Cache 是什么?

KV Cache 是 Transformer 自回归推理的加速机制。缓存已计算的 K/V 向量,新 token 只需算自己的 Q 与缓存做 attention。

普通推理(无 cache):                有 KV Cache:
Step 1: 算 [t1] 全部 K,V,Q           Step 1: 算 [t1] K,V,Q → 存 cache
Step 2: 算 [t1,t2] 全部 K,V,Q       Step 2: 只算 [t2] 的 Q, 读 cache
Step 3: 算 [t1,t2,t3] 全部 K,V,Q    Step 3: 只算 [t3] 的 Q, 读 cache
→ 每步重算全序列 O(L²)              → 每步只算增量 O(L)
FAST

使用 KV Cache — 动作 token 是自回归生成的,和 LLM 生成文本一样

GR00T / PI / OFT

不使用 KV Cache — VLM 做单次前向拿 hidden_states,不逐 token 生成

部署时 VLM Cache

固定 prompt 的 KV Cache 可复用,加速多次推理(prefix caching)

3. VLM 知识怎么传递给 Action Head?

Cross-Attention
(GR00T / PI)

Action tokens → Q
VLM states   → K, V

Attn = softmax(Q·K^T/√d)·V
↓
Action tokens 获得
VLM 视觉/语言知识

Action tokens "提问",VLM 提供 "答案"。注意力权重自动选择相关信息。

直接特征提取
(OFT)

VLM states [B, L, H]
      ↓
选取特定 token 位置
      ↓
features [B, T, H]
      ↓
MLP → actions

预定义的 action token 位置通过因果注意力已聚合了上下文信息。

内嵌生成
(FAST)

[img|txt|<act_start>]
         ↓ 自回归
[...|<a1>|<a2>|...]

因果注意力让动作
token attend 到
所有前面的 token

没有显式"传递"——动作生成天然看到所有观测。

4. DiT 用在哪?怎么用?

DiT 在 StarVLA 中用作 Action Head 的去噪网络(GR00T 和 PI 方法)。给定噪声动作 + 时间步 + VLM 条件,预测速度场来去噪。

┌─────────────────────────────────────────────────────────────────┐
│               DiT 内部 (GR00T: 16层, 交替结构)                   │
├─────────────────────────────────────────────────────────────────┤
│  输入拼接: [state_token | 32×future_tokens | action_tokens]     │
│                                                                 │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │  偶数层 (0,2,4...): Cross-Attention                      │  │
│  │    AdaNorm(hidden, timestep_emb) ← 时间步调制 scale/shift │  │
│  │    Attn(Q=hidden, K=VLM_features, V=VLM_features)        │  │
│  │    ↑ action tokens 从 VLM 获取视觉/语言信息               │  │
│  │    FFN (GELU) + Residual                                 │  │
│  ├───────────────────────────────────────────────────────────┤  │
│  │  奇数层 (1,3,5...): Self-Attention                       │  │
│  │    AdaNorm(hidden, timestep_emb)                         │  │
│  │    Attn(Q=K=V=hidden) ← action tokens 间互相推理         │  │
│  │    FFN (GELU) + Residual                                 │  │
│  └───────────────────────────────────────────────────────────┘  │
│                    × 16 层                                      │
│                                                                 │
│  输出: AdaNorm → Linear → 取最后 T 个 → MLP → [B,T,action_dim] │
└─────────────────────────────────────────────────────────────────┘

关键设计:
• AdaNorm: timestep embedding 调制归一化 (不同噪声水平→不同行为)
• 交替结构: cross-attn(取条件) ↔ self-attn(动作间推理)
• future_tokens: 32个可学习"规划槽"给 DiT 额外计算空间

5. Flow Matching 用在哪?怎么用?

Flow Matching 是 DiT 的训练目标和推理采样算法。定义了"从噪声到动作"的直线路径,训练 DiT 预测该路径的速度场。

训练

# 采样噪声和时间步
noise ~ N(0,1)
t ~ Beta(1.5, 1.0), t∈[0, 0.999]

# 线性插值构造 noisy action
noisy = (1-t)·noise + t·action

# 真实速度 (训练标签)
velocity_true = action - noise

# DiT 预测
velocity_pred = DiT(noisy, t, VLM)

# 损失
loss = MSE(pred, true)

推理 (Euler ODE, 4步)

# 从纯噪声出发
action = randn(B, T, 7)

# 4步积分到干净动作
for t in [0, 0.25, 0.5, 0.75]:
  v = DiT(action, t, VLM)
  action += 0.25 × v

# 最终动作
return action  # [B, T, 7]

仅需 4 次 DiT 前向!

Flow Matching vs DDPM Diffusion

Flow Matching (GR00T/PI)DDPM Diffusion (CogACT)
噪声过程线性插值 (1-t)·noise + t·action高斯马尔可夫链 √ᾱ·x₀ + √(1-ᾱ)·ε
预测目标速度场 v = action - noise噪声 ε
推理采样Euler ODE (4-10步)DDPM/DDIM 反向 (10-100步)
步数效率更少步数即可需要更多步
代码GR00T_ActionHeader.pyDiTActionHeader.py

训练数据流

1

数据源:LeRobot 格式

统一的 HDF5/Parquet 格式存储机器人演示数据。每条样本包含:多视角图像序列、语言指令、动作 chunk、本体感觉状态。通过 YAML 声明式配置混合多个数据集。

2

DataLoader:双路分发

build_dataloader(cfg) 构建两路数据:VLA DataLoader(机器人动作数据)和 VLM DataLoader(图文问答数据)。交替喂入模型实现协同训练。

3

模型前向:统一 compute_loss 接口

model.compute_loss(tag="vla", batch) → forward() → action_loss
model.compute_loss(tag="vlm", batch) → forward_vlm() → vlm_loss
通过 loss_scale 配置权重(如 vla:1.0, vlm:0.1)防止 VLM 能力遗忘。

4

优化:Accelerate + DeepSpeed ZeRO-2

AdamW 优化器,支持分组学习率(backbone 低 LR,action head 高 LR)。DeepSpeed ZeRO-2 分片优化器状态和梯度,8×A100 可达 80 samples/s。

5

推理部署:Server-Client 解耦

模型作为 WebSocket Policy Server 运行,评测/真机通过轻量 Client 交互。predict_action(examples) → unnormalize → 执行。

数据样本结构 (forward 输入)

example = {
    "image": [PIL.Image, PIL.Image],  # 多视角图像列表
    "lang":  "pick up the red cup",   # 自然语言指令
    "action": np.ndarray([T, 7]),     # 动作 chunk [时间步, 动作维度]
    "state":  np.ndarray([1, 7]),     # 当前本体感觉(可选)
}
batch = [example_1, example_2, ...]   # 批次 = List[dict]

OpenPI 仓库分析 & 与 StarVLA 对比

OpenPI 是 Physical Intelligence 官方开源的 π₀/π₀.₅/π₀-FAST 统一仓库。

🔗 相关精读:π0.7(π 系列最新,多模态上下文条件化) · VERA · 世界模型全景 · 想懂扩散动作头数学 → DP·DiT·Flow Matching 三剑客

OpenPI 架构总览

┌─────────────────────────────────────────────────────────────────┐
│                    OpenPI 模型架构                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │         PaliGemma (VLM backbone, 共享)                    │   │
│  │  ┌─────────────┐    ┌─────────────────────────────────┐  │   │
│  │  │ SigLIP ViT  │    │ Gemma-2B LLM (prefix encoder)   │  │   │
│  │  │ So400m/14   │    │ 因果注意力, 处理 image+text      │  │   │
│  │  │ 224×224→token│    │ tokens                          │  │   │
│  │  └──────┬──────┘    └────────────────┬────────────────┘  │   │
│  │         └────────────┬───────────────┘                    │   │
│  │                      ▼                                    │   │
│  │          prefix_tokens [B, S, 2048]                       │   │
│  └──────────────────────┬───────────────────────────────────┘   │
│                         │                                       │
│         ┌───────────────┼───────────────┐                       │
│         ▼               ▼               ▼                       │
│  ┌─────────────┐  ┌──────────────┐  ┌──────────────────────┐   │
│  │   π₀        │  │   π₀.₅       │  │   π₀-FAST            │   │
│  │ Gemma-300M  │  │ Gemma-300M   │  │ Gemma-2B (自回归)     │   │
│  │ action expert│  │ + adaRMSNorm │  │ FAST token decode    │   │
│  │ Flow Match  │  │ Flow Match   │  │ Next-token predict   │   │
│  └─────────────┘  └──────────────┘  └──────────────────────┘   │
│                                                                 │
│  三者共享: VLM backbone (PaliGemma = SigLIP + Gemma-2B)         │
│  区别:    Action expert 的结构和训练方式                          │
└─────────────────────────────────────────────────────────────────┘

OpenPI 三个模型的关系

模型代码入口VLM BackboneAction Head与 π₀ 的区别
π₀ pi0.py
Pi0Config(pi05=False)
PaliGemma
(SigLIP + Gemma-2B)
Gemma-300M action expert
+ Flow Matching
基准模型
π₀.₅ pi0.py
Pi0Config(pi05=True)
同上 Gemma-300M + adaRMSNorm
+ Flow Matching
① state 作为离散语言 token
② adaRMSNorm 注入 timestep
③ knowledge insulation 训练
π₀-FAST pi0_fast.py 同上 Gemma-2B 自回归
FAST tokenizer
无 flow matching
动作作为 token 自回归生成

关键洞察:π₀ 和 π₀.₅ 共享同一个 Pi0 类,仅通过 pi05=True/False 开关区分。三者都共享 PaliGemma VLM backbone。

π₀ / π₀.₅ 评测结果地图:原始论文、后续仿真、后续真机

结论先行:原始 π₀ 和 π₀.₅ 论文本身都没有仿真实验,主要在真实机器人上验证。后续论文里,π₀ / π₀.₅ 在标准 LIBERO 类 benchmark 上很强;但换到 RoboCasa、RoboTwin、SimplerEnv-OOD、动态或接触丰富任务时,通常需要 world model、future prediction、guidance、tactile/force 或执行修正机制才能稳定超过它们。

原始论文

π₀ / π₀.₅ 均为真机评测;没有 Isaac / MuJoCo / LIBERO 这类仿真主实验。

标准仿真

LIBERO 上 π₀≈94.2%、π₀.₅≈96.8%,已经是很强的 baseline。

复杂 / OOD 仿真

RoboCasa、RoboTwin、SimplerEnv-OOD 中下降明显,是后续方法主要拉开差距的地方。

接触丰富真机

vision-only π₀/π₀.₅ 往往不足;触觉、力、future consequence guidance 能带来大幅提升。

1) 原始 π₀ / π₀.₅ 论文:真机评测,没有仿真

论文 / 模型评测类型任务与平台π₀ / π₀.₅ 结果读数
π₀
A Vision-Language-Action Flow Model
真机;无仿真 7 种机器人配置,68 种任务;RGB + proprio + language,无触觉/力 在 5 项主要后训练任务上全面超越 OpenVLA、Octo、π₀-small;本地分析未提取统一平均 SR 奠定 VLM + flow matching action expert 的强 baseline;但不验证仿真泛化。
π₀.₅
Open-World Generalization
真机;无仿真 真实家庭 / mock rooms;移动双臂平台;4 路 RGB,无触觉/力 items in drawer ≈70%,dishes in sink ≈65%,laundry basket ≈55%,make bed ≈40%;整体显著优于 π₀ / π₀-FAST+Flow 主打开放世界长时程家务泛化;不是接触丰富精密操作或仿真 benchmark 论文。

2) 后续论文中的仿真评测:π₀ / π₀.₅ 作为 baseline 或 backbone

后续论文仿真环境π₀ / π₀.₅ 数字后续方法数字结论
GR00T N1 RoboCasa 20 tasks π₀:55.6% GR00T N1:61.6% π₀ 是强 baseline,但在 RoboCasa 上被双系统 DiT 基础模型小幅超过。
FutureVLA SimplerEnv Google Robot π₀:52.7% FutureVLA-GT:80.1% 视觉未来预测对 SimplerEnv 有明显增益。
FutureVLA SimplerEnv WidowX π₀:20.9% FutureVLA-GT:71.9% 跨具身 / 域迁移下,原始 π₀ 明显变弱。
FutureVLA LIBERO π₀:94.2% FutureVLA-GT:98.3% LIBERO 上 π₀ 已经很强,提升空间主要来自高分段微小增益。
ForeAct LIBERO Spatial / Object / Goal / Long π₀:94.2%;π₀.₅:96.8% ForeAct w/ π₀.₅:97.5% π₀.₅ 在标准 LIBERO 上非常强;视觉前瞻引导带来小幅 SOTA 提升。
DIAL RoboCasa GR1 Tabletop 24 tasks π₀:47.8% DIAL:70.2% 人形 / RoboCasa 上,单纯 π₀ 表征传递不足;latent intent/world modeling 更有效。
GigaWorld-Policy RoboTwin 2.0, 50 tasks π₀.₅:0.44–0.48 SR GigaWorld-Policy:0.86;Motus:0.88 RoboTwin 上 π₀.₅ 明显不是强仿真 baseline,world-model/video-policy 类方法优势大。
Qwen-VLA SimplerEnv-OOD π₀.₅:12.6% Qwen-VLA:32.0% OOD setting 下 π₀.₅ 成功率很低;大规模异构数据 + RL/SFT 有明显收益。
REMAC Kinetix 12 dynamic tasks 基于 π₀ 的 naive async:d=0 为 0.828;d=4 为 0.451 REMAC:d=0 为 0.888;d=4 为 0.779 π₀ 类 action chunk 在异步 / 延迟执行下会退化;masked action chunking 修正有效。
KI-VLA LIBERO-90 / DROID benchmark π₀-FAST:0.73(LIBERO-90) KI-VLA:0.815 不是 raw π₀/π₀.₅,但说明 π-family 训练中 knowledge insulation 能提升仿真性能和训练效率。

3) 后续论文中的真机评测:特别是接触丰富任务

后续论文评测类型π₀ / π₀.₅ 数字增强方法数字结论
ForeAct 真机 11 tasks,π₀ backbone π₀:46.7% ForeAct:87.4% 视觉前瞻 + action steering 对真实任务提升非常大。
ForeAct 真机,π₀.₅ backbone π₀.₅:70.3% ForeAct w/ π₀.₅:88.2% π₀.₅ 本身更强,但 inference-time foresight guidance 仍有明显增益。
TouchGuide 真机接触丰富任务,DP / π₀.₅ π₀.₅ baseline:35.9% TouchGuide + π₀.₅:58.0% vision-only π₀.₅ 在接触任务不稳;触觉对比评分器做推理时 guidance 有效。
TaF-VLA 真机 8 个力敏感操作任务 π₀.₅ vision-only:37.1% TaF-VLA:64.8% 触觉-力对齐 adapter 对 π₀.₅ 的接触任务增益很大。
GigaWorld-Policy 真机 PiPER 4 tasks π₀.₅:0.69 SR GigaWorld-Policy:0.83 world-model 预训练提升真机执行质量和数据效率。
Qwen-VLA 真机 ALOHA π₀.₅:ID 71.6%;OOD 41.5% Qwen-VLA:ID 83.6%;OOD 76.9% π₀.₅ 的 OOD 真机泛化短板明显。
Xiaomi-Robotics-0 真机 Lego / Towel Folding π₀.₅:Lego 97.0%;Towel 0.9 件/min Xiaomi-Robotics-0:Lego 99.7%;Towel 1.2 件/min π₀.₅ 在部分高数据/规整真机任务上已经很强;后续模型主要提升延迟和平滑执行。

对选择 baseline 的直接建议

如果论文任务是普通 LIBERO-style tabletop imitation,π₀ / π₀.₅ 是高分强 baseline,单纯超过它们不容易。若任务是接触丰富、OOD、动态物体、跨具身或需要动作后果预测,π₀ / π₀.₅ 作为 vision-only VLA baseline 反而很有价值:已有后续论文显示它们在这些 setting 下会明显退化,而 foresight / world model / tactile-force guidance / execution correction 能系统性补上短板。

本节整理自本地 paper 库:/home/chenzhiyuan/projects/paper/2024-pi0/2025-pi0.5/2025-GR00T-N1/2026-FutureVLA/2026-ForeAct/2026-DIAL/2026-GigaWorld-Policy/2026-Qwen-VLA/2026-REMAC/2026-TouchGuide/2026-TaF-VLA/

OpenPI 的独特设计:双 Gemma 架构

π₀ 的核心创新是用一个独立的小 Gemma (300M)作为 action expert,而非像 StarVLA-PI 那样用 DiT:

π₀ Action Expert (Gemma-300M)

# 输入: prefix(VLM) + suffix(action+state)
# 两个 Gemma 共享注意力:
configs = [gemma_2b, gemma_300m]
# Gemma-2B 处理 prefix (图像+语言)
# Gemma-300M 处理 suffix (动作)
# 两者通过 cross-attention 交互

# Flow matching 部分:
noisy_action = (1-t)·noise + t·action
suffix = [state_embed, noisy_action_embed]
velocity = model(prefix, suffix, t)
loss = MSE(velocity, action - noise)

StarVLA-PI Action Expert (DiT)

# 输入: VLM hidden states + noisy action
# DiT 独立架构:
# 每层 DiT cross-attend 到 VLM 层

# Flow matching 部分 (相同):
noisy_action = (1-t)·noise + t·action
action_tokens = ActionEncoder(noisy, t)
velocity = DiT(action_tokens, VLM_states)
loss = MSE(velocity, action - noise)

StarVLA vs OpenPI 全面对比

维度StarVLAOpenPI
框架语言PyTorch (Accelerate + DeepSpeed)JAX (Flax NNX) 为主 + PyTorch 推理
VLM BackboneQwen2.5-VL / Qwen3-VL / Gemma4 / MiniCPM 等
(可替换)
PaliGemma (SigLIP + Gemma-2B)
(固定)
Action Expert独立的 DiT / MLP / FAST tokenizer
(cross-attention 连接)
小 Gemma-300M 与大 Gemma-2B
共享注意力 (prefix-suffix)
Flow Matching 实现独立 DiT 网络做去噪Action expert Gemma 做去噪
(LLM 即去噪器)
VLM→Action 连接Cross-attention (KV来自VLM)Prefix-suffix 注意力
(大小 Gemma 共享 KV space)
模块化程度高 — backbone/head 可独立替换低 — 紧耦合 (PaliGemma 固定)
支持 Backbone 数7+ (Qwen/Gemma/MiniCPM/Florence/Cosmos/Wan)1 (PaliGemma)
Action Head 种类4 (FAST/OFT/GR00T/PI)2 (Flow Matching / FAST)
世界模型支持有 (Wan2.2, CosmoPredict2)
训练框架Accelerate + DeepSpeed ZeRO-2/3JAX FSDP (pjit)
多节点训练支持 (256 GPU 验证)不支持 (README 明确说明)
Benchmark 集成7+ (LIBERO/SimplerEnv/RoboCasa...)3 (ALOHA/DROID/LIBERO)
开源权重有 (HuggingFace)有 (base model + fine-tuned)
预训练数据不含 (用户自备)10K+小时机器人数据预训练
设计目标研究平台 — 快速原型/对比实验产品级 — 提供强 base model 供微调

核心架构差异总结

OpenPI 的哲学:LLM 即一切

π₀ 把 action expert 也做成一个小 LLM (Gemma-300M),与 VLM (Gemma-2B) 在同一注意力空间中交互。大小模型共享 token embedding,通过 prefix-suffix 注意力掩码区分角色。Flow matching 的去噪过程就是小 LLM 的前向传播。

优势:架构统一,可利用 LLM 的语言理解做动作推理
劣势:紧耦合,换 backbone 困难

StarVLA 的哲学:模块化组合

StarVLA 把 VLM 和 Action Head 完全解耦——VLM 输出 hidden states,Action Head (独立的 DiT/MLP/Tokenizer) 通过 cross-attention 消费这些特征。两者通过标准化的张量接口连接。

优势:灵活组合,快速实验不同配置
劣势:cross-attention 是信息瓶颈,可能不如共享注意力紧密

一句话:OpenPI 是"给你一个强 base model 来微调",StarVLA 是"给你一套积木来搭建和对比不同 VLA"。两者定位互补。

方法对比

四种 Action Head 全面对比

维度FASTOFTGR00TPI (π)
预测方式自回归Token并行回归迭代去噪迭代去噪
动作表示离散Token连续值连续值连续值
损失函数Cross-EntropyL1MSE (velocity)MSE (velocity)
VLM条件内嵌在LLM生成中最后层特定位置最后层全序列(所有DiT层共享)每层DiT对应不同VLM层(一一映射)
额外参数0 (仅tokenizer)~10M (MLP)~100M (DiT-B)~300M (N层DiT)
推理步数O(T×tokens/step)1 步4-10 步4-10 步
多模态分布有限单峰支持支持
LIBERO Avg95.4%96.6%96.5%95.7%
适用场景语言-动作联合低延迟/数据效率通用精确操作

StarVLA vs 外部方法对应关系

外部方法StarVLA 对应核心替换效果对比
OpenVLA-OFTQwenOFTPrismatic-7B → Qwen-VL-4B96.6% vs 97.1% (但仅1/6步数)
π₀QwenPIPaliGemma → Qwen-VL95.7% vs 85.5%
GR00T N1.5QwenGR00TEagle-2 → Qwen-VL96.5% vs 86.5%
π₀-FASTQwenFastPaliGemma → Qwen-VL95.4% vs 85.5%
Cosmos PolicyWanPI / CosmoPredict2PI世界模型做backbone实验进行中

跨 Benchmark 性能

方法LIBERO AvgSimplerEnv WidowXRoboCasa-GR1RoboTwin 2.0
StarVLA-OFT96.6%64.6%48.8%87.3%
StarVLA-GR00T96.5%65.3%47.8%88.5%
StarVLA-π95.7%--88.8%
GR00T N1.586.5%61.9%47.6%-
OpenVLA-OFT97.1%---

训练 / 评测资源配置 🟢论文核对

数据来源:StarVLA 论文各 benchmark 的 Training setup 小节(LIBERO/SimplerEnv/RoboCasa/RoboTwin 2.0)。用 accelerate + DeepSpeed 分布式训练。

Benchmark训练 GPU分布式per-device batch优化步数
LIBERO8× A100DeepSpeed ZeRO-216100K(约 30K 即达好结果,每 10K 存 ckpt)
SimplerEnv (WidowX)8× A100DeepSpeed ZeRO-216最多 100K
RoboCasa-GR18× A100DeepSpeed ZeRO-216最多 100K
RoboTwin 2.048× A100DeepSpeed ZeRO-24—(多任务、5万+轨迹,开销最大)
门槛解读:仿真桌面任务(LIBERO/SimplerEnv/RoboCasa)的标准配置是 8× A100(40/80GB),这是学术界复现 VLA 的主流规格。StarVLA 强调数据效率——LIBERO 只需 ~30K 步(约 10 epoch)即达到好结果,比 OpenVLA-OFT 的 175K 步少 6×,因此实际墙钟时间比配置看起来更友好。RoboTwin 2.0 因为是多任务 + 数万轨迹,用到 48× A100(约 6 节点),是全套里最重的。

不同规模下如何取舍(学习者视角 🩷整理推测

你的资源可行做法
单卡 24GB(3090/4090)小 batch + 梯度累积跑 LIBERO 单套件冒烟;优先 OFT(额外参数最少、单步推理),或冻结 VLM 只训 action head
单卡 48–80GB(A6000/A100)可训 LIBERO 单套件;4B VLM + LoRA/部分冻结可控显存
8× A100(论文标配)完整复现 LIBERO/SimplerEnv/RoboCasa 全套
多节点(48 卡级)RoboTwin 2.0 这类多任务大数据 benchmark

注:显存主要由 VLM backbone 规模(3–4B)+ action head(OFT ~10M / GR00T ~100M / PI ~300M)+ batch + 是否冻结 VLM 决定。上表右列为按论文配置与常规经验的推断,非论文原文,故标 🩷。

评测资源:评测(rollout)比训练轻,主要是在仿真环境里跑策略。StarVLA 每 10K 步评测一次 checkpoint,报告最早达到最佳平均成功率的 ckpt。推理侧单卡即可,具体延迟取决于 action head(OFT 单步最快,FM 类需 4–10 步去噪)。

自测:检验你的理解

Q1:StarVLA 的核心设计哲学是什么?

A. 端到端训练不分模块
B. Backbone-Action Head 分解,通过隐状态契约连接
C. 强化学习 + 模仿学习混合训练
D. 用单一架构处理所有任务
Backbone 输出标准化的 hidden_states [B, L, H],Action Head 消费这些隐状态生成动作。两者通过这个"契约"解耦,可以独立替换。

Q2:GR00T 和 PI (π) 的关键区别是?

A. GR00T 用 Diffusion,PI 用 Flow-Matching
B. GR00T 预测离散动作,PI 预测连续动作
C. GR00T 只用最后一层 hidden state,PI 用所有层
D. GR00T 不需要 backbone,PI 需要
两者都用 Flow-Matching,但 PI 的 DiT 每一层对应 VLM 的每一层做 cross-attention,实现多尺度特征融合。GR00T 仅以最后一层为条件。

Q3:为什么 StarVLA 要支持 VLM 协同训练 (forward_vlm)?

A. 提升训练速度
B. 减少显存占用
C. 防止 VLM 多模态能力在 action-only 微调中遗忘
D. 生成更好的训练数据
论文实验表明:纯动作微调 20K 步后,VLM 的空间理解能力(如 RefCOCO-g)快速退化至随机水平。交替进行 VLM 前向(保持语言/视觉理解)和 VLA 前向(学习动作)可有效缓解。

Q4:FAST action head 的本质是什么?

A. 用 MLP 回归动作值
B. 将连续动作 BPE 编码为离散 token,复用 LLM 的 next-token 预测
C. 用 VAE 编码动作序列
D. 用扩散模型生成动作
FAST 使用 Physical Intelligence 提出的 BPE tokenizer 将连续动作编码为类似语言的 token 序列(如 <robot_action_12>),然后直接用 LLM 的自回归生成预测下一个 token。解码后恢复连续动作。

Q5:World Model Backbone 相比 VLM Backbone 的优势在哪?

A. 参数量更小
B. 推理速度更快
C. 隐状态编码了时空动态和物理先验
D. 不需要语言输入
世界模型(如 Wan2.2)预训练目标是预测未来视频帧,因此其隐状态天然编码了运动、接触、变形等物理动态,对需要物理预测的操作任务(如接触丰富操作)有天然优势。