前言
随着机器人动作策略预测逐渐成熟,比如 ACT、扩散策略等,为了让机器人具备更好的泛化能力,主流途径之一是利用预训练大语言模型的广泛知识,并增加一个 policy head。早期的模型结构相对简单,例如使用 LSTM 或 MLP(如 RoboFlamingo),随后出现了更多成熟的专用 VLA 模型,如 OpenVLA。
近期 π0 的出现展示了通用机器人控制的新方向,它首次用同一套策略算法操作不同机械臂,这种「预训练 - 微调」模式正成为核心发展方向。虽然 π0 开源较晚,但 OpenVLA 作为早期的重要开源项目,其架构思路依然极具参考价值。本文将深入剖析 OpenVLA 的模型架构、训练过程及源码实现。
OpenVLA:RT-2 的开源替代方案
1. 模型背景与定位
2024 年 6 月,斯坦福大学、UC Berkeley、Google DeepMind 等机构的研究者推出了 OpenVLA。其论文《OpenVLA: An Open-Source Vision-Language-Action Model》详细阐述了这一工作。
当前机器人策略学习存在关键弱点:难以超越训练数据进行泛化。面对场景干扰物或新颖物体时,现有策略往往缺乏鲁棒性。然而,CLIP、SigLIP 和 Llama 2 等基础模型凭借互联网规模的预训练数据,具备了强大的泛化能力。OpenVLA 的核心目标正是利用这些视觉和语言基础模型,构建能泛化到超出训练数据的机器人策略。
与闭源的 RT-2 相比,OpenVLA 解决了两个痛点:
- 透明度低:现有模型架构、训练流程细节有限。
- 部署困难:缺乏在消费级硬件上适配新机器人的最佳实践。
为此,OpenVLA 采用端到端方法,直接对 VLM 进行微调,将机器人动作视为语言模型词汇表中的 token 来生成。实验表明,这种简单可扩展的流程提升了性能和泛化能力。
2. 模型架构设计
OpenVLA 基于 Prismatic-7B VLM 构建,该架构包含三个主要部分:
- 视觉编码器:由 SigLIP 和 DinoV2 组成。Prismatic 使用了两部分视觉编码器,输入图像块分别通过这两个编码器,随后特征向量按通道拼接。添加 DinoV2 有助于改善空间推理,这对机器人控制尤为重要。不过,后续研究如 π0 仅使用 SigLIP 也取得了不错效果,说明这并非绝对必要。
- 投影器:两层小型 MLP,将视觉特征映射到语言模型输入空间。
- 语言模型骨干:70 亿参数的 Llama 2。
作者选择 Prismatic 而非 LLaVA 或 IDEFICS-1,主要是因为融合 SigLIP-DinoV2 主干提供了改进的空间推理能力,且代码库模块化程度高。
关于训练细节:
- 分辨率:224×224 像素。384×384 虽未提升性能,但训练时间增加三倍。
- 轮次:VLA 训练通常需要更多轮次,实际性能直到动作 token 准确率超过 95% 才趋于稳定,最终运行了 27 个轮次。
- 学习率:固定学习率 2e-5 表现最佳,无需预热。
3. 训练与数据处理
3.1 动作离散化
为了训练 OpenVLA,作者将动作预测表述为'视觉 - 语言'任务。连续的机器人动作被映射到语言模型的分词器使用的离散 token。
具体做法是参考 Brohan 等人的方法,将每个动作维度离散化为 256 个区间中的一个。由于 Llama 分词器仅为微调预留了 100 个特殊 token,不足以容纳 256 个动作 token,作者选择覆盖 Llama 分词器词表中频率最低的 256 个 token(即最后 256 个)。
对于每个动作维度,区间宽度设置为均匀划分训练数据中动作的第 1st 和第 99th 分位数之间。使用分位数而非最小 - 最大边界,可以忽略异常动作,避免离散化区间过大降低有效精度。
3.2 数据集整理
训练基于 Open X-Embodiment 数据集,包含超过 70 个单独的机器人数据集,总计 200 万条轨迹。为了训练可行,进行了以下整理:
- 输入输出一致:限制仅包含至少有一个第三人称摄像机的操作数据集,并使用单臂末端执行器控制。
- 平衡 Embodiments:利用 Octo 的数据混合权重处理筛选后的数据集,降低多样性较低的数据集权重,增大任务和场景多样性大的数据集权重。
此外,尝试整合 DROID 数据集,但在训练后期因动作 token 准确率较低而移除,以免影响模型质量。


