OpenVLA: An Open-Source Vision-Language-Action Model

2026/7/26

来源:arxiv2406

这篇文章的核心贡献,是把此前主要由大型机构封闭掌握的 VLA 路线,第一次做成了一个真正可下载、可微调、可部署的通用机器人模型。OpenVLA 以一个 7B 参数的视觉语言模型为基础,在 97 万条真实机器人轨迹上继续训练,使模型能够直接根据图像和语言指令输出机器人动作;它不仅在多机器人平台上的泛化能力超过了更大的 RT-2-X,还系统证明了 LoRA 微调和 4-bit 量化足以把 VLA 的训练与部署门槛降低到普通实验室可以承受的范围。

OpenVLA 所要解决的问题,并不只是"训练一个效果更好的机器人策略",而是解决当时 VLA 研究中两个非常现实的障碍。第一,RT-2、RT-2-X 等代表性模型基本都是闭源的,外界无法获得完整的模型权重、训练代码、数据配比和微调方法,因此很难把这些模型迁移到自己的机器人上。第二,即使已有模型表现很好,过去的工作也很少讨论:拿到一个 VLA 以后,如何用少量自己的机器人数据对它进行适配,如何降低显存占用,以及如何在普通 GPU 上完成推理。OpenVLA 因而同时承担了"模型研究"和"工程基线"两个角色。

这篇文章背后的出发点是,机器人数据的规模远小于互联网视觉语言数据。即便 Open X-Embodiment 已经是当时最大规模的真实机器人数据集合,其数量仍只有百万级轨迹,远不能与互联网图像、文本数据相比。因此作者没有尝试从零训练一个机器人 Transformer,而是复用已经从互联网数据中学到视觉语义和语言知识的 VLM,再让这个 VLM 学会把语言 token 换成机器人动作 token。这样,机器人策略可以继承 VLM 对物体类别、语言指令、场景变化和视觉干扰物的理解能力,而机器人数据主要负责教它"如何行动"。

OpenVLA 的基础模型是 Prismatic-7B。它包含三个部分:视觉编码器、视觉到语言空间的投影器,以及 Llama 2 7B 语言模型。视觉编码器并不是单一的视觉网络,而是把 SigLIP 和 DINOv2 的输出在通道维度拼接起来。作者认为,这两个编码器提供了互补的信息:SigLIP 更擅长高层语义理解,例如判断哪个物体是杯子、碗或茄子;DINOv2 更能保留局部结构和空间细节,例如物体的位置、边缘和姿态。对机器人控制来说,仅仅识别"这是什么"还不够,还必须知道"它在哪里、朝向如何、机械臂应该从哪个方向接近",因此这种双视觉编码器设计是 OpenVLA 的一个关键组成部分。论文第 4 页的结构图清楚展示了这条流程:输入图像分别经过 DINOv2 和 SigLIP,视觉特征投影到 Llama 的 embedding 空间,与语言指令一起进入 Llama 2,最终生成动作 token。

模型的输入非常简单:一张当前相机图像和一条自然语言指令,例如"把茄子放进碗里"。在论文这一版本中,OpenVLA 不使用机器人本体状态,也不使用多帧历史,更不使用多个相机。模型输出的是一个 7 维机器人动作,通常包括末端执行器的三维平移增量、三维旋转增量以及夹爪动作,即论文图中所写的 (\Delta x)、(\Delta \theta) 和 (\Delta Grip)。这意味着 OpenVLA 在这里主要面向机械臂末端笛卡尔空间控制,而不是直接输出每个关节的角度。

OpenVLA 最重要的建模技巧,是把连续机器人动作转换成语言模型可以预测的离散 token。作者对动作的每一个维度分别进行离散化,将其分成 256 个区间。为了避免少数异常动作把离散范围拉得过宽,区间边界不是使用训练数据的最小值和最大值,而是使用第 1 百分位到第 99 百分位。这样可以牺牲极少数离群动作,换取主要动作范围内更高的量化精度。

一个 7 维动作经过离散化后,就变成 7 个取值在 0 到 255 之间的整数。作者再把 Llama tokenizer 中使用频率最低的 256 个 token 重新定义为动作 token。于是,对语言模型而言,输出机器人动作和输出一句自然语言在形式上没有本质区别:它依旧是在做自回归的 next-token prediction,只不过目标 token 不再代表文字,而代表某个动作维度落在哪一个区间。训练时仍然使用标准交叉熵损失,但只对动作 token 计算损失。

这种设计的优点在于,它几乎不需要修改原来的 VLM 训练框架。图像 patch 被当作视觉 token,语言指令被当作文本 token,机器人动作也被当作输出 token,整个问题统一成一个多模态序列预测问题。OpenVLA 因而可以直接使用大语言模型领域已经成熟的混合精度训练、FlashAttention、FSDP 和 LoRA 等工具。代价则是,连续动作被离散化后会产生量化误差,而且每个动作维度需要逐 token 自回归生成,这会限制推理频率。

OpenVLA 的机器人预训练数据来自 Open X-Embodiment。原始 OpenX 当时包含 70 多个机器人数据集、超过 200 万条轨迹,但作者并没有直接把所有数据无差别混在一起。为了统一输入输出形式,他们只保留至少具有一个第三人称相机、使用单机械臂末端控制的操作数据集。为了平衡不同机器人、任务和场景,他们大体沿用了 Octo 的数据混合权重:降低重复度高、任务单一的数据集权重,提高任务和场景更加丰富的数据集权重。

最终 OpenVLA 使用约 97 万条轨迹进行训练。文章中特别提到,作者尝试加入 DROID 数据集,但模型在 DROID 上的动作 token 准确率长期较低,说明该数据集的多样性可能超过了当前模型或当前采样权重能够有效吸收的范围。因此,在最后三分之一的训练中,作者把 DROID 从数据混合中移除了。这个细节说明,大规模多机器人训练并不是简单地"数据越多越好",数据分布、动作定义、采样比例和模型容量之间必须匹配。

作者在开发 OpenVLA 时还得到了一些很有价值的经验。首先,视觉语言模型的选择非常重要。IDEFICS、LLaVA 和 Prismatic 在单物体任务上的差异不算大,但在多物体场景中,当模型必须根据语言指令选择正确目标物体时,LLaVA 明显优于 IDEFICS,而融合 SigLIP 和 DINOv2 的 Prismatic 又进一步优于 LLaVA。这说明 VLA 的优势并不仅仅来自模型参数量,而是来自视觉表征是否同时包含语义和空间信息。

其次,提高输入图像分辨率并没有带来明显收益。作者比较了 224×224 和 384×384 输入,后者训练时间约为前者的三倍,但真实机器人任务表现没有明显改善,因此最终选择 224×224。这里的原因在于,视觉 Transformer 的 patch token 数量随分辨率增加,序列长度增长后,注意力计算量会近似按平方增加。对 OpenVLA 来说,更高分辨率带来的潜在精细视觉收益,还不足以抵消巨大的训练成本。

第三,在 VLA 训练中,视觉编码器不能简单冻结。传统 VLM 微调经常冻结视觉编码器,以保护互联网预训练得到的通用特征,但作者发现,冻结视觉编码器会明显降低机器人控制性能。原因很可能是,互联网图像预训练关注的是物体语义和图像级理解,而精确机器人控制需要视觉编码器进一步适应机械臂、夹爪、桌面、目标物体位置和局部几何关系。因此,OpenVLA 在机器人数据训练阶段会更新视觉编码器。

第四,VLA 训练需要比一般语言模型微调更多的 epoch。普通 LLM 或 VLM 训练往往只遍历数据一两遍,而 OpenVLA 最终训练了 27 个 epoch,并且真实机器人表现会随着动作 token 准确率提升而持续改善,直到训练准确率超过 95%。这说明,对于动作预测来说,模型不仅需要学会大致理解任务,还必须对动作分布进行相当精确的拟合。

完整预训练的计算代价仍然很高。OpenVLA 使用 64 张 A100 训练了 14 天,总计约 21,500 A100 GPU 小时,batch size 为 2048。以 bfloat16 加载时,模型推理大约需要 15 至 17 GB 显存,在 RTX 4090 上大约能达到 6 Hz,而且这是没有使用编译、投机解码或 TensorRT-LLM 等进一步优化的结果。作者也提供了远程推理服务器,使机器人端只需要上传观测并接收动作,不必在机器人本地部署完整的 7B 模型。

在直接泛化实验中,OpenVLA 在 WidowX 和 Google Robot 两种机器人平台上与 RT-1-X、Octo 和 RT-2-X 进行比较。任务不仅包含训练分布内任务,还专门测试背景变化、干扰物、物体位置变化、物体尺寸和形状变化、未见物体和新语言概念,以及多物体场景中的语言目标选择。结果表明,没有互联网预训练的 RT-1-X 和 Octo 在复杂场景中容易选错物体,甚至出现机械臂无目的运动;RT-2-X 和 OpenVLA 则表现出更好的目标选择、末端姿态调整和错误恢复能力。

OpenVLA 的总体表现与 RT-2-X 相当或更好,而模型参数只有 7B,RT-2-X 则为 55B。论文报告,在 29 个跨机器人任务上的总体成功率,OpenVLA 比 RT-2-X 高出 16.5 个百分点。不过,RT-2-X 在"语义泛化"这一类任务上仍然更强,例如理解训练中没有出现过的物体、指令或互联网概念。作者认为,这是因为 RT-2-X 使用了更大规模的互联网预训练,并且在机器人训练阶段仍然混合视觉语言数据进行联合训练,从而更好地保留了原有语义知识;OpenVLA 则只在机器人动作数据上继续微调,可能出现一定程度的语义遗忘。

在面向新机器人和新任务的微调实验中,作者使用 Franka 机械臂测试了 7 类任务,每个任务只有 10 到 150 条示范。OpenVLA 与从零训练的 Diffusion Policy、微调后的 Octo,以及没有经过 OpenX 机器人预训练、直接从 Prismatic VLM 微调的模型进行了比较。结果体现出一个很清晰的分工:对于单一指令、动作精细且任务范围很窄的任务,Diffusion Policy 往往很有竞争力,轨迹也更加平滑;但在多物体、多指令、存在干扰物、需要语言选择目标的任务中,OpenVLA 的优势明显。

OpenVLA 是唯一一个在所有测试任务上都达到至少 50% 成功率的方法,因此作者把它视为一种更稳健的默认模仿学习基线。但这并不意味着它在所有情况下都优于 Diffusion Policy。Diffusion Policy 使用观测历史、本体状态和 action chunk,一次预测一段未来动作,再以 receding horizon 方式执行,因此在精细操作和轨迹平滑性方面更占优势。OpenVLA 在这篇论文中只看单张图像、一次输出单步动作,没有 action chunk,也没有时间平滑,这成为它在高精度控制中的主要短板。

论文的另一个重要贡献,是系统比较了不同微调策略。完整微调所有参数可以获得较好性能,但一次任务通常需要 8 张 A100 训练 5 到 15 小时。只训练最后一层效果很差;冻结视觉编码器也明显下降;只训练视觉编码器、embedding 和最后一层的"sandwich fine-tuning"有所改善,但仍不如完整微调。表现最好的是 LoRA:rank 32 的 LoRA 只训练约 1.4% 的参数,就几乎达到了完整微调的成功率。作者因此推荐使用 rank 32,并指出单张 A100 大约 10 到 15 小时即可完成一个新任务的微调。

这个结果揭示了一个重要事实:OpenVLA 的迁移并不是只需要修改最后的动作输出层。新的机器人场景、相机视角、物体外观和操作环境都会改变视觉分布,因此视觉编码器也需要适应;同时,语言模型内部负责融合视觉、语言与动作的表示也要发生一定变化。LoRA 的优势在于,它可以在所有线性层中插入低秩增量,从而让整个网络发生分布适应,而不必保存和更新完整的 7B 参数。

在部署方面,作者比较了 bfloat16、8-bit 和 4-bit 推理。bfloat16 推理需要约 16.8 GB 显存,任务成功率约为 71.3%;8-bit 降低到约 10.2 GB,但成功率下降到 58.1%;4-bit 只需要约 7 GB,成功率却达到约 71.9%,基本没有损失。8-bit 表现下降并不是因为离线动作预测精度明显变差,而主要是因为其量化算子开销导致推理变慢。在 A5000 上,8-bit 只能达到约 1.2 Hz,严重偏离训练数据使用的 5 Hz 控制频率,从而改变了闭环系统动力学。4-bit 则能达到约 3 Hz,因此真实机器人表现反而更接近 bfloat16。

这一结果也说明,机器人模型中的量化不能只看离线预测误差。即使量化前后动作 token 准确率相似,只要推理频率降低,机器人执行每个动作的持续时间、观测更新间隔和闭环反馈延迟都会改变,最终成功率仍可能显著下降。因此,VLA 部署中的"模型精度"和"系统控制频率"必须一起评估。

OpenVLA 的局限性也很明确。它只支持单张图像,不支持多相机、本体状态、力觉、观测历史,因此难以准确推断速度、接触状态和被遮挡物体的运动。它一次只输出单步动作,没有 action chunk,7 个动作维度又需要自回归生成多个 token,因此推理速度较慢,难以直接用于 50 Hz 的 ALOHA 等高频控制系统。它的任务成功率通常仍低于 90%,还不能被视为高可靠性的工业控制策略。此外,模型在机器人数据上单独微调可能损失部分互联网语义知识,这也是它在语义泛化上不如 RT-2-X的重要原因。

从 VLA 技术发展的角度看,OpenVLA 并没有提出特别复杂的新网络结构。它的核心创新更像是把已有的 VLM、动作 token 化、多机器人数据训练、LoRA 和量化等技术组合成一条完整、可复现的工程路线。它证明了一个非常重要的结论:只要视觉语言基础模型足够强、机器人数据足够多且经过合理清洗,一个标准 VLM 就可以通过简单的动作 token 微调转化为跨机器人控制策略,而不一定需要为机器人重新设计一套专用架构。