arXiv 2406.09246 · CoRL 2024

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
开源 VLA 7B 参数 970k 轨迹 Stanford · Berkeley · Google · TRI · PI
§ 01

一句话总结

这篇论文在做什么

OpenVLA 是第一个完全开源的通用机器人策略模型。它把一个预训练好的视觉-语言模型(Prismatic-7B)直接微调成能输出机器人动作的 VLA,在 970k 条真实机器人轨迹上训练后,比 55B 参数的闭源 RT-2-X 还强 16.5%,而参数量只有它的 1/8。

类比:如果 RT-2-X 是 GPT-4(强但闭源),OpenVLA 就是 LLaMA——开源、可微调、消费级 GPU 能跑。

Figure 1: OpenVLA overview
Fig 1 · p.1 OpenVLA overview: a 7B-parameter open-source VLA trained on 970k robot episodes from Open X-Embodiment. OpenVLA 总览:大规模训练数据 → VLM 微调 → 闭环机器人控制,完全开源
§ 02

为什么需要 OpenVLA

承上 · 问题是什么

上一节看到 OpenVLA 的全貌——用 VLM 做机器人策略。但为什么不直接用 RT-2-X?两个字:闭源。RT-2-X (55B) 效果好,但你拿不到权重、看不到训练代码、无法在自己的机器人上微调。Octo 虽然开源,但它不是 VLA——没有大规模 Internet 预训练带来的语义理解能力。

展开原文 · 现有 VLA 的两个问题

"There are two key reasons preventing the widespread use of existing VLAs: 1) current models are closed, with limited visibility into model architecture, training procedures, and data mixture, and 2) existing works do not provide best practices for deploying and adapting VLAs to new robots, environments, and tasks — especially on commodity hardware."

— §1, p.2

与 RT-2-X / Octo 的定位对比

RT-2-X Octo OpenVLA
参数量 55B 93M 7B
骨干 PaLI-X (闭源 VLM) Transformer (从头训练) Prismatic-7B (开源 VLM)
Internet 预训练 ✅ 万亿 token ❌ 无 ✅ VLM 预训练继承
开源 ❌ 闭源 ✅ 开源 ✅ 完全开源
动作输出 离散 token 连续 (Diffusion head) 离散 token (256 bin)
Fine-tuning 支持 ❌ 不支持 ✅ 支持 ✅ 支持 (含 LoRA)
消费级 GPU 可用 ✅ (4-bit 量化 → 7GB VRAM)
核心定位

OpenVLA = RT-2 的架构思路(VLM → 动作 token)+ Octo 的开源精神(权重 / 代码 / 数据全开放)+ 更大更好的数据(970k vs 350k 轨迹)。

🧠 理解检查
OpenVLA (7B) 为什么能在 29 个任务上比 RT-2-X (55B) 高 16.5%?
§ 03

模型架构

承上 · 现在看看具体怎么搭的

上一节讲了 OpenVLA 的定位——开源 VLA,融合了 VLM 预训练的语义理解。这一节拆开看具体的三个组件:视觉编码器怎么看图、语言模型怎么思考、动作怎么输出。

OpenVLA 的架构出奇地简单——它就是一个标准的 VLM(视觉-语言模型),只不过把"输出自然语言"换成了"输出动作 token"。这种极简设计是刻意的:VLM 的训练基础设施已经非常成熟(HuggingFace、FSDP、FlashAttention 全能用),直接复用比从头造轮子高效得多。

Figure 2: OpenVLA architecture
Fig 2 · p.4 OpenVLA model architecture. Given an image observation and a language instruction, the model predicts 7-dimensional robot control actions. OpenVLA 架构:输入图像 + 语言指令 → 双视觉编码器 → MLP 投影 → Llama 2 7B → 7D 动作 token
🪜 跟着数据走一遍推理流程
1 / 6

第 1 步:接收图像

机器人摄像头拍一张 224×224 的 RGB 图像。只有一张、没有历史——这和 π₀ 系列(用多帧观测)不同。

第 2 步:双编码器提取视觉特征

图像同时送入 DINOv2(空间特征)和 SigLIP(语义特征),各输出一组 patch token。两组特征在 channel 维度拼接——一边知道"在哪里",一边知道"是什么"。

第 3 步:MLP 投影到语言空间

拼接后的视觉特征经 2 层 MLP 映射到 Llama 的 embedding 空间,变成一组"视觉 token",和语言 token 一样被 Llama 处理。

第 4 步:语言指令编码

用户给的指令(如 "Put eggplant in bowl")经 Llama Tokenizer 编码。格式化为:"What should the robot do to {task}? A:"

第 5 步:Llama 2 7B 生成动作 token

Llama 接收 [视觉 token] + [语言 token] 的序列,用标准 next-token prediction 依次生成 7 个动作 token。loss 只算在动作 token 上——图像和语言部分不算 loss。

第 6 步:解码为连续动作

7 个 token(每个 ∈ [0, 255])通过 de-tokenizer 还原为连续值:3D 平移 + 3D 旋转 + 1D 夹爪 = 7D 动作。发送给机器人执行,然后回到第 1 步。

3.2 双编码器:SigLIP + DINOv2

为什么要两个视觉编码器

SigLIP 擅长语义("这是一个碗")但空间信息弱;DINOv2 擅长空间("碗在桌子左边 15cm 处")但语义信息弱。机器人操作两样都要:既要知道该拿什么(语义),也要知道怎么够到(空间)。

实验证明:Prismatic(SigLIP + DINOv2 融合)比 CLIP-only 或 SigLIP-only 的 VLM 在语言定位任务上高 10%

展开原文 · 为什么选 Prismatic

"Prismatic uses a two-part visual encoder, consisting of pretrained SigLIP and DiNOv2 models. Input image patches are passed separately through both encoders and the resulting feature vectors are concatenated channel-wise."

— §3.1, p.4

3.3 动作离散化:256-bin Tokenization

连续动作怎么变成 token

机器人动作是连续值(比如 Δx = 0.02m),但 Llama 只会做 next-token prediction。解决方案:把每个维度的连续范围切成 256 个 bin,每个 bin 对应一个 token ID。

离散化细节

bin 边界:用训练数据每个维度的第 1 和第 99 百分位数作为上下界,均匀切 256 份。用百分位而非 min-max 是为了忽略异常值。

token 复用:Llama tokenizer 只预留了 100 个 special token,不够 256 个。解法是覆盖 vocabulary 中最不常用的 256 个 token(跟 RT-2 一样的 trick)。

7D → 7 token:一个 N 维动作 = N 个离散整数 ∈ [0, 255],每个对应一个 token。

3.4 端到端推理流程

推理伪代码

1. 接收图像 $I$ 和语言指令 $l$
2. 视觉编码:$v = \text{MLP}(\text{concat}(\text{SigLIP}(I), \text{DINOv2}(I)))$
3. 语言编码:$t = \text{LlamaTokenizer}(\texttt{"What should the robot do to } l \texttt{? A:"})$
4. 自回归生成:$a_1, a_2, \dots, a_7 = \text{Llama}([v; t])$
5. 解码:$\Delta x, \Delta\theta, \Delta\text{Grip} = \text{DeTok}(a_1, \dots, a_7)$
6. 执行 → 回到 1

§ 04

训练

承上 · 架构简单,那训练呢

上一节看到 OpenVLA 的架构其实就是一个标准 VLM + 动作 token。架构这么简单,差异化就在数据和训练细节上。这一节看三件事:用什么数据、怎么训练、以及几个关键的设计决定(每一个都经过消融实验验证)。

4.1 数据:970k 轨迹 · Open X-Embodiment

数据策展

Open X-Embodiment 是目前最大的开源机器人数据集(70+ 子数据集、200 万轨迹)。但不能直接全用——需要精心筛选和加权。

数据筛选规则

只保留:(1) 桌面操作任务 (manipulation);(2) 至少有一个第三人称摄像头;(3) 单臂末端执行器控制。

加权:沿用 Octo 的 mixture weight——对多样性高的数据集上调权重,单一场景的下调。

DROID 插曲:尝试加入 DROID 数据集(10% 权重),但训练中动作 token 准确率始终上不去,最终在后 1/3 训练中移除。

4.2 训练配方

基座模型Prismatic-7B VLM(已在 LLaVA 1.5 数据上预训练)
训练目标Next-token prediction,loss 只算动作 token
图像分辨率224 × 224
Batch size2048
学习率2e-5(固定,无 warmup)
训练 epoch27 epoch(远多于 VLM 的 1-2 epoch)
GPU64 × A100,14 天(21,500 A100·h)

4.3 关键设计决定

四个反直觉的发现

OpenVLA 团队在 BridgeData V2 上做了大量消融实验,发现了几个和 VLM 训练完全相反的结论。这些结论对你以后训练 VLA 非常重要。

VISION ENCODER · 视觉编码器
必须微调,不能冻结
VLM 训练中冻结视觉编码器通常更好。但 VLA 训练反过来——冻结后空间细节不够精确,机器人抓不准。微调视觉编码器是性能关键。
IMAGE RESOLUTION · 图像分辨率
224px 就够了
384px 训练慢 3x 但性能一样。VLM benchmark 上分辨率很重要,但 VLA 的桌面操作场景下 224px 足够。
TRAINING EPOCHS · 训练轮次
要训很多 epoch(27轮)
VLM/LLM 通常只训 1-2 epoch。但 VLA 需要多轮迭代,性能持续提升直到动作 token 准确率达 95%。这是因为机器人数据远少于 Internet 数据。
VLM BACKBONE · 骨干选择
Prismatic > LLaVA > IDEFICS-1
在多物体 + 语言定位任务上,Prismatic 比 LLaVA 高 10%,比 IDEFICS-1 高 35%。关键差异来自 SigLIP+DINOv2 的融合视觉编码器。
🧠 理解检查
OpenVLA 训练中,哪个发现和 VLM 训练的常识完全相反?
§ 05

实验

承上 · 训练完了,效果怎么样

前面讲了架构(简单的 VLM + 动作 token)和训练(970k 数据、27 epoch、微调视觉编码器)。现在来看实际能不能用。OpenVLA 在两个机器人平台上做了 zero-shot 评测(WidowX + Google Robot),还测了 fine-tuning 到新机器人(Franka)的效果。

5.1 BridgeData V2 · WidowX 评测

Figure 3: BridgeData V2 WidowX results
Fig 3 · p.7 BridgeData V2 WidowX robot evaluation tasks and results. OpenVLA 在 WidowX 上的 17 项任务评测,平均成功率 70.6%,比 RT-2-X 高 20 个百分点

5.2 Google Robot 评测

换一个机器人平台

在 Google 的移动操作机器人上测试——OpenVLA 和 RT-2-X 打平(78.3% vs 85.0% in-distribution,82.9% vs 82.9% OOD)。但 OpenVLA 的参数量只有 1/8,且完全开源。

Figure 4: Google robot results
Fig 4 · p.8 Google robot evaluation: in-distribution and OOD tasks. Google Robot 评测:OpenVLA 与 RT-2-X 表现相当,但参数量 7B vs 55B

5.3 Fine-tuning 到新机器人 · Franka

Zero-shot 不够?Fine-tune!

真正的杀手锏不是 zero-shot——而是用 10-150 个 demo 就能适配新机器人。在 Franka 上,OpenVLA fine-tuned 比 Diffusion Policy 高 20.4%,尤其在多物体 + 语言指令的场景下碾压。

Figure 5: Fine-tuning results on Franka
Fig 5 · p.9 Adapting to new robot setups: Franka-Tabletop (5Hz) and Franka-DROID (15Hz). Fine-tuning 结果:OpenVLA 在 Franka 7 项任务上平均最高,尤其在多指令多物体任务上优势明显
关键观察

Diffusion Policy 在窄任务上更精确(如 "Put Carrot in Bowl"),因为它能输出更平滑的连续轨迹。但在多物体 + 多指令场景下,OpenVLA 的语言理解能力是决定性优势——Diffusion Policy 没有 VLM 的语义先验。

§ 06

效率:LoRA + 量化

承上 · 能用,但贵不贵

前一节看到 OpenVLA 效果好,但 7B 模型训练要 64×A100 跑 14 天——普通人负担不起。这一节回答实际落地的关键问题:能不能用更便宜的方式训练和部署?

6.1 LoRA 微调 · 1 张 A100 就够

策略 成功率 训练参数 VRAM
Full Fine-Tuning 69.7 ± 7.2% 7,188M (100%) 163 GB*
Last Layer Only 30.3 ± 6.1% 465M 51.4 GB
Frozen Vision 47.0 ± 6.9% 6,760M 156 GB*
Sandwich 62.1 ± 7.9% 914M 64.0 GB
LoRA (r=32) 68.2 ± 7.5% 97.6M (1.4%) 59.7 GB
LoRA 是最佳平衡点

LoRA (r=32) 只训练 1.4% 的参数,但效果几乎等于 full fine-tuning(68.2% vs 69.7%)。一张 A100 跑 10-15 小时就能适配新任务——比 full FT 快 8 倍。r=32 和 r=64 效果一样,所以推荐 r=32。

6.2 量化推理 · 消费级 GPU 可用

Figure 6: Inference speed for various GPUs
Fig 6 · p.10 OpenVLA inference speed for various GPUs. 不同 GPU 上的推理速度:RTX 4090 + 4-bit 量化可达 ~3Hz
精度成功率VRAM
bfloat1671.3 ± 4.8%16.8 GB
int858.1 ± 5.1%10.2 GB
int471.9 ± 4.7%7.0 GB
4-bit 量化最优

int4 量化不掉性能(71.9% ≈ 71.3%),VRAM 从 16.8GB 降到 7.0GB。8-bit 反而性能下降——因为量化操作的 overhead 拖慢了推理速度,改变了控制频率。A5000 上 4-bit 可跑 3Hz,匹配 BridgeData V2 的 5Hz 非阻塞控制器。

🧠 理解检查
你有一块 RTX 4090 (24GB VRAM),想部署 OpenVLA 做实时控制,应该选哪个精度?
§ 07

局限性 & 从 OpenVLA 到 π₀

承上 · 这么好还有什么问题

OpenVLA 证明了"开源 VLA 能打",但它有几个结构性的局限——恰好对应了后来 π₀ 系列解决的方向。理解这些局限,就理解了 VLA 领域的演进逻辑。

LIMITATION · 单图输入
没有观测历史
只看当前一帧,无法推断运动方向、速度。高频灵巧操作(如 ALOHA 50Hz)需要时序信息。π₀ 用多帧输入解决。
LIMITATION · 离散动作
256 bin 精度有限
每个维度只有 256 级分辨率。精细操作(如插针、折衣服)可能需要更高精度。π₀ 用 Flow Matching 输出连续动作,精度无上限。
LIMITATION · 推理速度
~6Hz on RTX 4090
自回归生成 7 个 token 是串行的。ALOHA 需要 50Hz,Action Chunking 或 speculative decoding 可能是出路。π₀ 用 action chunk + Flow Matching 一次输出多步。
LIMITATION · 成功率
平均 < 90%
即使是最好的任务,成功率也在 70-90% 之间。工业部署需要 > 95%。数据规模、模型规模、或更好的训练方法都可能帮助突破。

7.2 OpenVLA → π₀:进化路线图

理解 VLA 的演进

如果你已经读了 π₀ 系列的笔记,下面这张对照表会帮你把知识串起来。OpenVLA 和 π₀ 代表了 VLA 的两条技术路线:离散 token vs 连续 flow

OpenVLA π₀
动作表示 离散 token (256 bin) 连续 (Flow Matching)
动作精度 1/256 ≈ 0.4% 分辨率 理论无限精度
Action Chunking ❌ 单步 ✅ 多步(chunk = 50)
VLM 骨干 Llama 2 7B PaliGemma 3B → Gemma3 4B
视觉编码器 SigLIP + DINOv2 (融合) SigLIP (单编码器)
训练范式 Next-token prediction Flow Matching (去噪)
观测历史 单帧 多帧
灵巧操作 有限(抓放为主) 强(折叠、擦桌、双臂)
开源 ✅ 完全开源 部分(π₀.₅ 开源权重)
两条路线的哲学差异

OpenVLA 的哲学:最大限度复用 VLM 基础设施。动作就是 token,训练就是 next-token prediction,部署就是 LLM serving。简单、可扩展、工程友好。

π₀ 的哲学:针对机器人控制定制架构。Action Expert 专门处理动作,Flow Matching 输出连续轨迹,Block-Causal Attention 兼顾语言理解和动作精度。更复杂、但上限更高。

你的学习路线提示

读完 OpenVLA,你已经理解了 VLA 的基本范式(VLM + 动作输出)。回头看 π₀ 系列笔记,会发现 π₀ 的每一个设计决定都在回应 OpenVLA 的某个局限。这就是论文之间的"对话"