OpenVLA: An Open-Source Vision-Language-Action Model
作者 / 机构:Moo Jin Kim†, Karl Pertsch†, Siddharth Karamcheti†(† 共同一作), Ted Xiao, Ashwin Balakrishna, Suraj Nair, Rafael Rafailov, Ethan Foster, Grace Lam, Pannag Sanketi, Quan Vuong, Thomas Kollar, Benjamin Burchfiel, Russ Tedrake, Dorsa Sadigh, Sergey Levine, Percy Liang, Chelsea Finn(Stanford / UC Berkeley / TRI / Google DeepMind / Physical Intelligence / MIT)
发表:CoRL 2024(arXiv 2024.06)
arxiv:2406.09246 · 代码/权重:github.com/openvla/openvla · 项目页:openvla.github.io
在线索中的位置:属于 T06「VLA 五段演进」第三段「跨本体 + 开源」的开源里程碑
一句话定位:RT-2 的开源 7B 替代品——让学术界第一次能复现、微调、改进 VLA。是开源 VLA 时代的起点。
动机
RT-2(2023)确立了 VLA 范式,但有一个致命问题:完全闭源——55B 参数权重、13 万真机数据、PaLI-X 预训练,三项学术界都拿不到。
这导致 VLA 研究被 Google DeepMind 垄断。其他团队只能看论文,无法复现、无法改进、无法做 ablation。整个 VLA 方向的学术进展被严重卡住。
Stanford / Berkeley / TRI 等机构联合提出问题:能不能开一个真正开源、可微调、性能可比 RT-2 的 VLA?
方法核心
架构:Prismatic-7B VLM(论文 Sec. 3.1 + Fig. 2)
OpenVLA 建立在 Prismatic-7B VLM(Karamcheti 2024)上,三部分:
1. 视觉编码器(双流融合,共 ~600M 参数):
- SigLIP(~400M,语义信息——"这是什么物体")
- DINOv2(~300M,空间/几何信息——"物体在哪里、什么姿态")
- 融合方式:图像分别过两个 encoder,输出 feature vector 在 channel 维度拼接(channel-wise concat)——不是 cross-attention,也不是 late fusion 投票,而是最朴素的 concat。论文 Sec. 3.1 原话「passed separately through both encoders and the resulting feature vectors are concatenated channel-wise」。
- 实证(Sec. 3.4 VLM Backbone,BridgeData V2 上的 VLM backbone 消融):相比单 SigLIP 的 LLaVA, fused SigLIP+DINOv2 的 Prismatic 在单物体和 多物体语言 grounding 任务上整体高 ~10% 绝对成功率;LLaVA 又比 IDEFICS-1 在多物体语言 grounding 上高 ~35%。
2. Projector:小 2-layer MLP,把视觉 feature 映到 LLM 的 input embedding space。
3. LLM 主干:Llama 2 7B(开源、推理快)。Prismatic 在 LLaVA-1.5 数据上 fine-tune(约 1M image-text 样本)。
输入分辨率(Sec. 3.4 Image Resolution):224×224px——实测 384×384 与 224 等效但训练慢 3×,所以选 224。
Action tokenization(论文 Sec. 3.2)
OpenVLA 把每维动作离散成 256 bin(沿用 RT-1/RT-2 的 256 bin 设计)。⚠️ 关键改进:bin 边界用 1st 和 99th 分位数(quantile),不是 RT-1 的 min-max——这样忽略 outlier 动作,避免 outlier 把 bin 区间拉得太宽、降低有效精度(论文 Sec. 3.2 明示)。
$$\text{bin}_i\text{ 边界}: \text{uniformly divide }[Q_1(a_i),\,Q_{99}(a_i)]\text{ into 256 bins}$$
每维动作 → 整数 $\in[0, 255]$,$N$ 维动作 → $N$ 个 token。
Token 词表问题:Llama tokenizer 只预留 100 个 special token 给 fine-tune 用,不够 256 个 action token。OpenVLA 的解法(继承 Brohan et al. 2023 = RT-2):直接覆盖 Llama tokenizer 词表里最不常用的 256 个 token(即最后 256 个 token),换成 action token。这样不动词表大小、不需要新增 embedding。
训练用标准 next-token prediction,cross-entropy loss 只在 action token 上算(input image+text tokens 不算 loss)。末端 7 维动作(Δx/y/z + Δroll/pitch/yaw + gripper)→ 7 个 action token。
训练数据(论文 Sec. 3.3)
OpenX-Embodiment 子集,共 970k 轨迹。筛选规则:
- 仅保留至少一个第三人称相机 + 单臂末端控制的 manipulation 数据集(剔除双臂、本体感受-only、非 manipulation)。
- 数据 mixture 权重继承 Octo(Octo 启发式下调低多样性差的数据集,上调多样性高的)。
- 加 DROID 数据集(mixture weight 10%)——但实测 DROID 的 action token accuracy 一直低,最后 1/3 训练把 DROID 移除(Sec. 3.3)。
- 完整 OpenX 当时是 70+ 数据集、2M+ 轨迹,OpenVLA 筛到 970k。
关键设计决策(论文 Sec. 3.4)
- VLM backbone 选择:试了 IDEFICS-1、LLaVA、Prismatic 三种(BridgeData V2 上消融)。LLaVA(单 SigLIP)在多物体语言 grounding 任务上比 IDEFICS-1 高 ~35% 绝对成功率;Prismatic(SigLIP+DINOv2 双流)又比 LLaVA 高 ~10%(单物体 + 多物体任务整体)。所以选 Prismatic。
- Fine-tune vision encoder:传统 VLM 实践(如 LLaVA)冻结 vision encoder 保预训练特征。但 VLA 实测必须 unfreeze vision encoder——预训练 backbone 抓不到精细空间细节,对精确控制不够(Sec. 3.4)。
- 训练 epoch:传统 LLM/VLM 训 1-2 epoch 就够,但 VLA 需要 27 epoch,real robot 性能持续提升直到 action token accuracy >95%。
- 学习率:在多个数量级上 sweep,最佳是 fixed lr = 2e-5(与 Prismatic VLM 预训练一致),不要 warmup。
训练 + 推理 infra(论文 Sec. 3.5)
| 项目 | 值 |
|---|---|
| 训练硬件 | 64× A100 GPU × 14 天 = 21,500 A100-hours |
| Batch size | 2048 |
| 推理显存 | 15 GB(bfloat16,无量化) |
| 推理速度 | ~6 Hz on 单 RTX 4090(无 compilation / speculative decoding) |
| 输入分辨率 | 224×224(384 测过等效但慢 3×) |
| 训练 epoch | 27 |
| Optimizer | AdamW,fixed lr=2e-5,无 warmup |
| Codebase 特性 | PyTorch + AMP + FlashAttention + FSDP;HuggingFace AutoModel 集成;支持 LoRA + 量化 |
单卡微调(关键工程贡献)
OpenVLA 用LoRA(低秩适配)+ gradient checkpointing,让 7B 模型在单张 A100/H100 上可微调。论文 Sec. 5.4 还验证量化(4-bit)后真机性能不掉——这让消费级 GPU(如 RTX 4090 24GB)也能跑 OpenVLA 推理。这对学术小团队是巨大福音——不用大集群就能做 VLA 研究。
为什么重要
1. 开源 VLA 的起点(最关键)
OpenVLA 之前,VLA 是 Google 的黑盒。OpenVLA 之后,任何人都能下载权重、微调、改架构。直接催生了后续 CogACT、OpenVLA-OFT、TinyVLA、RL-VLA 等一整条开源 VLA 生态。
2. 整体反超闭源 RT-2-X 55B
论文报告 OpenVLA(7B)在 29 个 WidowX + Google Robot 评测任务上整体反超闭源 RT-2-X(55B)+16.5% 绝对成功率,参数量只有 1/7(Abstract / Sec. 1)。拆开看:在 BridgeData V2(WidowX) 上显著优于 RT-2-X;在 Google Robot 上与 RT-2-X 持平;唯一落后的是 语义泛化(semantic generalization) 一类——RT-2-X co-fine-tune 时混入了互联网图文数据,更好保留了预训练语义先验(Sec. 5.1)。证明开源小模型 + 更干净/更大的机器人数据能整体逼近闭源大模型。
3. 揭示视觉双流的重要性
SigLIP + DINOv2 的双流融合,证明 VLA 的视觉理解需要语义+空间两个维度。后续 CogACT 等都继承了这个设计。
局限
- 离散 action token 的表达力限制(与 RT-2 同病):256 bin 离散化精度有限,做不了精细灵巧操作。→ 催生了 π0(flow matching 连续 action)。
- 推理仍慢:7B 单步几百 ms,做不了高频控制。→ 催生了 双系统(GR00T N1、Helix)。
- OpenX 数据规模仍小:970k 相对 LLM 数十 T token 是九牛一毛。
- 泛化 vs 专用 trade-off:通用 OpenVLA 在特定任务上仍弱于专门微调策略。→ 催生了 RL finetune(RL-VLA、VLA-RFT 证明 PPO 微调显著提升泛化)。
复现要点
- 复现门槛:⭐⭐⭐⭐(微调)/ ⭐⭐⭐(推理)
- 官方代码 github.com/openvla/openvla,HuggingFace 权重直下。
- 推理:A100 40G+ 或 H100。下载权重后几行代码就能跑。
- 微调:单 A100/H100 + LoRA。需准备 OpenX 子集或自己的 teleop 数据。
- 常见坑:① 显存(用 LoRA + gradient checkpointing);② 数据格式(OpenX RLDS);③ action 离散化的 bin 映射。
- 学术版 RT-2 的最佳起点。想做 VLA 研究,先跑 OpenVLA。
相关
- 建立在:RT-1(动作 token 化)、RT-2(VLA 范式)、OpenX-Embodiment(数据)→ 详见 P-RT2-2023.md、P-OpenX-2023.md
- 引出:CogACT(认知-动作解耦)、OpenVLA-OFT(多 token 输出)、TinyVLA(小 VLA)、RL-VLA(RL 微调)、π0(flow matching 替代离散)→ 详见 P-pi0-2024.md
- 本仓库线索:T06 VLA 五段演进 第三段
- 本仓库概念:C-action-representations.md(discrete token vs continuous flow 辨析)