引言
随着机器人动作策略预测的成熟,为了提升泛化能力,典型途径之一是基于预训练大语言模型的广泛知识,并增加 policy head。随后出现了更多成熟的专用 VLA 模型,如 OpenVLA。
1. OpenVLA:相当于 RT-2 的开源版
1.1 OpenVLA:第一个开源的通用 VLA 模型
2024 年 6 月,来自斯坦福大学、UC Berkeley、Toyota Research Institute、Google DeepMind、Physical Intelligence 及 MIT 的研究者推出了 OpenVLA。
- 论文:《OpenVLA: An Open-Source Vision-Language-Action Model》
- 项目地址:openvla.github.io
- GitHub 地址:github.com/openvla/openvla
这是一个具有 70 亿参数的开源视觉 - 语言 - 动作模型(VLA),由一个预训练的视觉条件语言模型骨干组成,在 Open-X Embodiment 数据集中的 97 万条机器人操作轨迹上进行了微调。它支持开箱即用地控制多个机器人,并且可以通过参数高效微调快速适应新的机器人领域。
1.2 OpenVLA 的模型架构、训练过程、训练数据
1.2.1 模型架构 (基于 Prismatic-7B VLM):SigLIP、DinoV2、Llama 2
大多数最新的 VLM 架构一般由三部分组成:视觉编码器、投影器、大型语言模型 LLM 骨干。
OpenVLA 基于 Prismatic-7B VLM 构建,包含:
- 视觉编码器:600M 参数,由预训练的 SigLIP 和 DinoV2 模型组成。输入图像块分别通过这两个编码器,随后将特征向量按通道拼接。添加 DinoV2 特征有助于改善空间推理。
- 投影器:两层小型 MLP。
- 语言模型骨干:70 亿参数的 Llama 2。
作者选择 Prismatic 作为主干,是因为其融合的 SigLIP-DinoV2 主干提供了改进的空间推理能力,且代码库模块化易用。
对于图像分辨率,最终选择 224×224 像素,因为 384×384 像素虽未带来性能差异但训练时间更长。 对于训练轮次,实际机器人性能会不断提高,直到训练动作 token 准确率超过 95%,最终完成了 27 个轮次。 对于学习率,固定学习率 2e-5 取得了最佳结果。
1.2.2 微调 Prismatic-7B VLM,使其输出机器人动作
作者将动作预测问题表述为一个'视觉 - 语言'任务,输入的观测图像和自然语言任务指令被映射为一串预测的机器人动作。
为了使 VLM 的语言模型主干能够预测机器人动作,作者通过将连续的机器人动作映射到语言模型的分词器使用的离散 token,将动作表示在 LLM 的输出空间中。
- 类似 Brohan 等人的方法,基于下一个 token 预测技术预测动作 token,作者将机器人的每个动作维度分别离散化为 256 个区间中的一个。
- 通过这种离散化方法,作者为一个 N 维的机器人动作获得了 N 个离散整数,范围为 [0...255]。
- 由于 Llama 分词器仅为微调时新引入的 token 预留了 100 个'特殊 token',远不足以满足动作离散化所需的 256 个 token,作者简单地用动作 token 覆盖 Llama 分词器词表中使用频率最低的 256 个 token。
一旦动作被处理为 token 序列,OpenVLA 就采用标准的下一个 token 预测目标进行训练,仅对预测的动作 token 计算交叉熵损失。
对于每个动作维度,设置区间宽度,使其在训练数据中动作的第 1st 和第 99th 分位数之间均匀划分。使用分位数使得能够忽略数据中的异常动作,否则这些异常值可能会极大地扩展离散化区间,降低动作离散化的有效精度。
1.2.3 训练数据
OpenVLA 用 Open X-Embodiment 数据集(OpenX)作为基础来策划训练数据集。完整的 OpenX 数据集由超过 70 个单独的机器人数据集组成,包含超过 200 万条机器人轨迹。
为了使在这些数据上进行训练变得可行,作者对原始数据集应用了多个步骤的数据整理:
- 所有训练数据集之间的输入、输出空间一致。
- 在最终训练组合中具有平衡的 embodiments。
此外,作者尝试将 DROID 数据集整合到训练混合中,但在最后三分之一的训练中将 DROID 从数据混合中移除,因为其动作 token 准确率在整个训练过程中保持较低。
1.2.4 训练和推理的基础设施
最终的 OpenVLA 模型在一个由 64 个 A100 GPU 组成的集群上训练了 14 天,总计 21,500 A100 小时,使用的批量大小为 2048。
为了方便起见,实现了一个远程 VLA 推理服务器,以允许将动作预测实时远程流式传输到机器人上。
在推理过程中,OpenVLA 在加载为 bfloat16 精度(即未量化)的情况下需要 15GB 的 GPU 内存,并在一块 NVIDIA RTX 4090 GPU 上以大约 6Hz 的速度运行。
作者除了提供模型之外,还发布了 OpenVLA 代码库,这是一个用于训练 VLA 模型的模块化 PyTorch 代码库。该代码库可以从在单个 GPU 上微调 VLA 扩展到在多节点 GPU 集群上训练具有十亿参数的 VLA,并支持现代大型 Transformer 模型训练的技术包括自动混合精度(AMP)、FlashAttention 和完全分片数据并行(FSDP)。
2. Prismatic VLM
2.1 Prismatic VLM
2024 年 2 月,研究者发布了一个工作《Prismatic VLMs: Investigating the Design Space of Visually-Conditioned Language Models》,探索了开发 VLM 的四个关键设计轴:优化过程、图像处理和预训练视觉表示、语言模型,以及围绕训练时间和数据的扩展属性。
具体而言,他们编制了一个标准化的评估套件,开发了一个优化的模块化代码库用于 VLM 训练,利用这些资源贡献进行有针对性的实验。
作者识别出了一些洞察;例如,发现现有工作采用的多阶段训练程序可以在不影响性能的情况下消除,从而减少 20-25% 的计算成本。还发现融合来自不同骨干的特征的视觉骨干,如 CLIP 和 DINOv2,在各方面都能导致更高性能的 VLM。
2.2 实验:4 个关键设计的考量点
2.2.1 多阶段训练
许多 VLM 采用一种普遍设计选择是包含一个两阶段的训练流程:微调阶段和对齐阶段。
最终发现情况并非如此,微调视觉骨干显著降低了性能,尤其是在需要细粒度空间推理的任务上。
2.2.2 图像处理与视觉表示
首先,对于预训练视觉表示的选择问题上,尽管有大量在不同数据源上训练的视觉表示,CLIP 已成为几乎所有 VLM 的默认视觉表示选择。在这个实验中,作者对 CLIP、SigLIP、DINOv2 和一个标准的用于分类的预训练视觉 Transformer 进行逐一比较。
其次,对于跨视觉骨干网的图像处理问题上,普遍的默认做法是将图像'调整大小并裁剪'到合适的大小。在本次实验中,作者评估了三种不同的图像处理方案:默认的


