前言
随着机器人动作预测技术的日益成熟,如 ACT、扩散策略(Diffusion Policy)等,提升泛化能力的关键路径之一是利用预训练大语言模型的广泛知识,并增加一个 Policy Head。早期的模型结构相对简单,例如使用 LSTM 或 MLP(RoboFlamingo),随后出现了更成熟的专用 VLA 模型,如 OpenVLA 和 π0。
π0 的意义在于首次用同一套策略操作不同机器人,这种'预训练 - 微调'模式代表了通用机器人的核心发展方向。虽然 π0 开源较晚,但 OpenVLA 作为早期的重要开源方案,其架构思路值得深入剖析。本文将聚焦 OpenVLA,探讨其如何基于 Prismatic VLM 架构,利用 SigLIP、DinoV2 和 Llama 2,通过'下一个 token 预测技术'实现离散化动作预测。
第一部分 OpenVLA:相当于 RT-2 的开源版
1.1 OpenVLA:第一个开源的通用 VLA 模型
1.1.1 模型背景与数据基础
2024 年 6 月,来自斯坦福大学、UC Berkeley、Toyota Research Institute、Google DeepMind 等机构的研究者推出了 OpenVLA。该模型在 Open-X Embodiment 数据集中的 97 万条机器人操作轨迹上进行了微调。
这是一种具有 70 亿参数的开源视觉 - 语言 - 动作模型(VLA)。它支持开箱即用地控制多个机器人,并且可以通过参数高效微调快速适应新的机器人领域。相比之前的业界领先 VLA(如拥有 550 亿参数的 RT-2-X),OpenVLA 在 WidowX 和 Google Robot 两种机器人形态的 29 项评测任务中,绝对成功率高出 16.5%。
1.1.2 设计动机
当前机器人操作策略存在关键弱点,即无法超越训练数据进行泛化。虽然现有策略能在物体位置或光照等新条件下外推行为,但面对场景干扰物或新颖物体时缺乏鲁棒性。
相反,CLIP、SigLIP 和 Llama 2 等现有的视觉和语言基础模型,得益于互联网规模的预训练数据集,具备强大的泛化能力。尽管在机器人领域复现如此大规模的预训练仍是难题,但这带来了机遇:可以利用现有的视觉和语言基础模型,作为训练能泛化到超出训练数据之外的物体、场景和任务的机器人策略的核心构建模块。
现有研究已探索将预训练的语言模型和视觉 - 语言模型整合用于机器人表征学习。最近,这些模型被直接用于学习视觉 - 语言 - 动作模型(VLAs),即对以视觉为条件的语言模型(VLM)进行微调,以生成机器人控制动作。
然而,现有 VLA 尚未广泛应用,主要有两个原因:
- 闭源模型细节透明度有限;
- 缺乏将 VLA 部署和适配至新型机器人、环境和任务的最佳实践。
为此,作者推出了 OpenVLA,采用更为端到端的方法,直接对 VLM 进行微调,通过将机器人动作视为语言模型词汇表中的 token 来生成机器人动作。实验评估表明,这种简单但可扩展的流程大大提升了性能和泛化能力。
1.2 OpenVLA 的模型架构、训练过程与数据
1.2.1 模型架构:基于 Prismatic-7B VLM
大多数最新的 VLM 架构由三部分组成:视觉编码器、投影器和大型语言模型(LLM)骨干。
OpenVLA 基于 Prismatic-7B VLM 构建,包含以下组件:
- 视觉编码器:600M 参数,由预训练的 SigLIP 和 DinoV2 模型组成。输入图像块分别通过这两个编码器,随后将特征向量按通道拼接。添加 DinoV2 特征已被证明有助于改善空间推理,这对机器人控制尤其有帮助。值得注意的是,仅使用 SigLIP 视觉骨干的版本(openvla-v01-7b)在微调任务和'开箱即用'任务中也能取得强劲性能。
- 投影器:两层的小型 MLP,将视觉嵌入映射到语言模型输入空间。
- 语言模型骨干:70 亿参数的 Llama 2。
作者选择 Prismatic 的原因在于其融合了 SigLIP-DinoV2 主干提供的改进的空间推理能力,且提供了模块化且易于使用的代码库。在训练细节上,最终选择 224×224 像素分辨率,因为更高分辨率并未带来显著性能差异但增加了三倍训练时间。训练轮次方面,实际机器人性能会不断提高,直到训练动作 token 准确率超过 95%,最终完成了 27 个轮次。学习率方面,固定学习率 2e-5 取得了最佳结果。
1.2.2 微调策略:动作离散化
为了训练 OpenVLA,作者对预训练的 Prismatic-7B VLM 主干进行微调,以实现机器人动作预测。
作者将动作预测问题表述为一个'视觉 - 语言'任务,输入的观测图像和自然语言任务指令被映射为一串预测的机器人动作。为了使 VLM 的语言模型主干能够预测机器人动作,作者通过将连续的机器人动作映射到语言模型的分词器使用的离散 token,将动作表示在 LLM 的输出空间中。


