24年6月来自 Stanford、UC Berkeley、TRI、Deepmind 和 MIT的论文“OpenVLA: An Open-Source Vision-Language-Action Model”。
基于互联网规模的视觉-语言数据和多样化的机器人演示,进行预训练的大型策略,有可能改变教导机器人新技能的方式:可以微调此类视觉-语言-动作 (VLA) 模型以获得稳健、可推广的视觉运动(visuomotor)控制策略,而不是从头开始训练新行为。然而,机器人领域 VLA 的广泛采用一直具有挑战性,因为 1) 现有的 VLA 大部分是封闭的,无法向公众开放,2) 先前的工作未能探索有效微调 VLA 以执行新任务的方法,这是采用的关键要素。
为了应对这些挑战,推出 OpenVLA,这是一个 7B 参数的开源 VLA,基于 970k 个现实世界机器人演示进行训练。OpenVLA 以 Llama 2 语言模型为基础,结合了融合 DINOv2 和 SigLIP 预训练特征的视觉编码器。作为增加的数据多样性和新模型组件的产物,OpenVLA 在通才操作方面表现出色,在 29 项任务和多种机器人实施例中的绝对任务成功率比 RT-2-X (55B) 等封闭模型高出 16.5%,参数减少了 7 倍。
可以有效地针对新设置对 OpenVLA 进行微调,在涉及多个目标和强大语言基落地能力的多任务环境中,其获得特别强大的泛化结果,比从头开始模仿学习的方法,比如扩散策略(Diffusion Policy)等,高出 20.4%。还有计算效率, OpenVLA 可以通过现代LoRA方法在消费级 GPU 上进行微调,并通过量化有效地提供服务,而不会影响下游成功率。OpenVLA 检查点和 PyTorch 训练流水线是完全开源的,可以从 HuggingFace 下载和微调模型,内置支持在 Open X-Embodiment 数据集上大规模训练 VLA。
学习的机器人操作策略,一个关键弱点是它们无法在训练数据之外进行泛化:虽然针对单个技能或语言指令训练的现有策略,能够将行为外推到新初始条件(例如物体位置或光照)[2, 3],但它们对场景干扰物或新目标缺乏鲁棒性 [4, 5],并且难以执行未见过的任务指令 [6, 7]。然而,除了机器人技术之外,现有的视觉和语言基础模型(如 CLIP [8]、SigLIP [9] 和 Llama 2 [10])能够实现这些类型的泛化,甚至更多,这源于其互联网规模预训练数据集捕获的先验知识。虽然为机器人技术重现这种规模的预训练,仍然是一个悬而未决的挑战——即使是最大的机器人操作数据集 [1, 11] 也只有 100K 到 1M 个示例——但这种不平衡表明了一个机会:使用现有的视觉和语言基础模型作为训练机器人策略的核心构建块,这些策略可以泛化到训练数据之外的目标、场景和任务。
为了实现这一目标,现有研究已探索将预训练语言模型和视觉-语言模型集成用于机器人表征学习 [12–14],并将其作为任务规划和执行模块化系统的组成部分 [15, 16]。最近,它们已用于直接学习视觉-语言-动作模型 [VLAs; 1, 7, 17, 18] 以进行控制。VLA 为机器人提供了使用预训练视觉和语言基础模型的直接实例,直接微调视觉为条件语言模型 (VLM)(如 PaLI [19, 20])以生成机器人控制动作。
通过基于互联网规模数据训练的强大基础模型,RT-2 [7] 等 VLA 展示了稳健的结果,以及推广到新目标和任务的能力,为通才机器人策略树立了新标准。然而,有两个主要原因阻碍了现有 VLA 的广泛使用:1) 当前模型 [1、7、17、18] 是封闭的,对模型架构、训练程序和数据混合的可见性有限;2) 现有工作没有提供将 VLA 部署和适应新机器人、环境和任务的最佳实践——尤其是在商用硬件(例如消费级 GPU)上。机器人技术需要开源、通用的 VLA,以支持有效的微调和适应,类似于围绕开源语言模型的现有生态系统 [21–24]。
如图所示:OpenVLA 是一个 7B 参数开源视觉-语言-动作模型 (VLA),基于 Open X-Embodiment 数据集 [1] 中的 97 万个机器人场景进行训练。OpenVLA 为通才机器人操控策略树立了新标杆。它支持开箱即用控制多个机器人,并且可以通过参数高效微调快速适应新的机器人领域。
相关工作
视觉为条件语言模型。视觉条件语言模型 (VLM) 是在互联网规模的数据上进行训练,根据输入图像和语言提示生成自然语言,已被用于从视觉问答 [28–31] 到目标定位 [32, 33] 的无数应用。推动近期 VLM 发展的关键进展之一是模型架构,该架构将预训练视觉编码器 [8, 9, 25] 的特征与预训练语言模型 [10, 23, 34– 36] 连接起来,直接基于计算机视觉和自然语言建模的进展来创建强大的多模态模型。虽然早期研究探索了视觉和语言特征之间交叉关注的各种架构 [37–41],但新的开源 VLM [20、42–44] 已经融合到一种更简单的“patch-as-token”方法上,其中来自预训练视觉Transformer的patch特征被视为 token,然后投射到语言模型的输入空间中。这种简单性使得可以轻松地将现有工具重新用于大规模训练语言模型以进行 VLM 训练。
通才机器人策略。机器人技术的最新趋势是在大型多样化机器人数据集 [1、2、6、11、45、49–56] 上训练多任务“通才”机器人策略 [2、6、45–49],涵盖许多不同的机器人具身 [1、5、53、57–66]。值得注意的是,Octo [5] 训练了一种通才策略,可以开箱即用地控制多个机器人,并允许灵活地微调适应新的机器人设置。之前的方法(如 Octo)通常将预训练组件(例如语言嵌入或视觉编码器)与从头开始初始化的其他模型组件组合起来 [2、5、6],并在策略训练过程中学习将它们“拼接”在一起。
视觉-语言-动作模型。许多研究探索了 VLM 在机器人技术中的应用,例如,用于视觉状态表示 [12, 13]、目标检测 [67]、高级规划 [16] 以及提供反馈信号 [68–71]。其他人将 VLM 直接集成到端到端视觉运动(visuomotor)操纵策略中 [14, 15],但将重要的结构纳入策略架构或需要标定的摄像头,这限制了它们的适用性。最近的许多研究,直接微调大型预训练 VLM 来预测机器人动作 [1, 7, 17, 18, 72]。此类模型通常称为视觉-语言-动作模型 (VLA),因为它们将机器人控制动作直接融合到 VLM 主干中。这有三个主要好处:(1)它在大型、互联网规模的视觉-语言数据集上执行预训练视觉和语言组件的对齐;(2)使用通用架构(不是为机器人控制定制的),能够利用现代 VLM 训练 [73–75] 背后的可扩展基础设施,并以最少的代码修改扩展到训练十亿参数策略;(3)它为机器人提供了一条直接途径,使其受益于 VLM 的快速改进。现有的 VLA 研究要么侧重于在单个机器人或模拟设置中进行训练和评估 [72, 76],因此缺乏泛化性,要么是封闭的,不支持对新机器人设置进行有效微调 [1, 7, 17, 18]。最近 RT-2-X [1] 在 Open X-Embodiment 数据集上训练 55B 参数的 VLA 策略,并展示了最先进的通才操作策略性能。
OpenVLA 扩展 VLA 训练,特别是使用 Karamcheti 的 VLM [44] 作为预训练主干,因为它们是根据多分辨率视觉特征进行训练的,融合来自 DINOv2 [25] 的低级空间信息和来自 SigLIP [9] 的高级语义,帮助实现视觉泛化。
OpenVLA 采用更端到端的方法,直接微调 VLM 将其视为语言模型词汇表中的tokens,生成机器人动作。这种简单但可扩展的流程大大提高了通才策略的性能和泛化能力。
OpenVLA在多个方面与 RT-2-X 不同:(1)将强大的开放式 VLM 主干与更丰富的机器人预训练数据集相结合,OpenVLA 的实验中表现优于 RT-2-X,但规模却小一个数量级;(2)OpenVLA 模型对新目标设置进行微调,而 RT-2-X 并未研究微调设置;(3)具有参数高效微调和量化方法在 VLA 的有效性;(4)第一个开源的通才 VLA,支持未来对 VLA 训练、数据混合、目标和推理的研究。
VLM
如图所示,OpenVLA 的 VLM [20, 42–44] 架构由三个主要部分组成:(1) 视觉编码器,将图像输入映射到多个“图像patch嵌入”,(2) 投影器,获取视觉编码器的输出嵌入并将其映射到语言模型的输入空间,以及 (3) 大语言模型 (LLM) 主干。在 VLM 训练期间,该模型以下一个文本token预测目标进行端到端训练,该目标基于从各种互联网来源收集的成对或交错的视觉和语言数据。
以 Prismatic-7B VLM [44] 为基础。Prismatic 遵循上述相同的标准架构,具有 600M 参数的视觉编码器、一个小2-层 MLP 投影器和 7B 参数的 Llama 2 语言模型主干 [10]。值得注意的是,Prismatic 使用两部分视觉编码器,由预训练的 SigLIP [77] 和 DinoV2 [25] 模型组成。输入图像patch分别通过两个编码器,并将生成的特征向量按通道连接起来。与更常用的视觉编码器(如仅 CLIP [78] 或仅 SigLIP 编码器)相比,添加 DinoV2 特征已被证明有助于改进空间推理 [44],这对机器人控制尤其有用。 SigLIP / DinoV2 和 Llama 2 均未公布有关其训练数据的详细信息,这些数据可能分别由来自互联网的图像文本和纯文本数据组成,数量达数万亿。Prismatic VLM 在这些组件的基础上使用 LLaVA 1.5 数据混合 [43] 进行微调,包含来自开源数据集的总共约 100 万个图像-文本和纯文本数据样本 [29, 42, 79–81]。
训练程序
为了训练 OpenVLA,对预训练的 Prismatic-7B VLM 主干网络进行微调,以预测机器人动作,参见上图。将动作预测问题表述为“视觉-语言”任务,其中输入的观察图像和自然语言任务指令被映射到一串预测的机器人动作 [7]。为了使 VLM 的语言模型主干网络能够预测机器人动作,通过语言模型token化器将连续的机器人动作映射为离散tokens,这样表示 LLM 输出空间中的动作。按照 Brohan [7] 的方法,将机器人动作的每个维度分别离散化到 256 bins的一个。对于每个动作维度,设置bin宽度,均匀划分训练数据中动作第 1 分位数和第 99 分位数之间的间隔。使用分位数代替Brohan [7] 的最小-最大边界,能够忽略数据中的异常动作,否则这些动作可能会大幅扩大离散化间隔并降低动作离散化的有效粒度。
使用这种离散化,为 N 维机器人动作获得在 [0 . . . 255] 中的 N 个离散整数。不幸的是,OpenVLA 语言主干使用的 Llama token化器 [10],仅为微调期间新引入的tokens保留了 100 个“特殊tokens”,这对于动作离散化的 256 个tokens来说太少了。相反,再次选择简单性并遵循 Brohan [7] 的方法,只需用动作 tokens 去覆盖 Llama token化器词汇表中 256 个最少使用 tokens(对应于最后 256 个 tokens)。一旦将动作处理成一系列tokens,OpenVLA 就会使用标准的下一个token预测目标进行训练,仅评估预测动作tokens上的交叉熵损失。
训练数据
构建 OpenVLA 训练数据集的目的,是捕捉大量不同的机器人实例、场景和任务。这使得最终模型能够开箱即用地控制各种机器人,并允许对新机器人设置进行有效的微调。利用 Open X-Embodiment 数据集 [1] (OpenX) 作为基础来整理训练数据集。
完整的 OpenX 数据集包含 70 多个单独的机器人数据集,包含超过 200 万条机器人轨迹,这些数据集在社区的共同努力下汇集成一种连贯且易于使用的数据格式。为了使这些数据上的训练切实可行,对原始数据集应用了多个数据整理步骤。整理的目标是确保 (1) 所有训练数据集的输入和输出空间一致,以及 (2) 最终训练混合中实现实施、任务和场景的均衡组合。为了解决 (1),遵循 [1, 5] 并限制训练数据集仅包含至少一台第三人称摄像机的操作数据集,并使用单臂末端执行器控制。对于 (2),利用 Octo [5] 的数据混合权重来处理通过第一轮过滤的所有数据集。
Octo 是为构建开源、广泛适用的机器人操作通才策略而不断努力的成果。Octo 模型是一种基于Transformer的扩散策略,在 Open X-Embodiment 数据集的 800k 个机器人场景上进行预训练。它支持灵活的任务和观察定义,并且可以快速微调到新的观察和动作空间。Octo 有两个初始版本,Octo-Small(27M 个参数)和 Octo-Base(93M 个参数)。如图所示:
Octo 模型的设计强调灵活性和规模:该模型旨在支持各种常用的机器人、传感器配置和动作,同时提供通用且可扩展的配方,可在大量数据上进行训练。Octo 通过扩散解码支持自然语言指令和目标图像、观察历史和多模态动作分布。此外,专门设计了 Octo 支持对新机器人设置进行高效微调,包括具有不同动作不同相机和本体感受信息组合的机器人。选择这种设计是为了让 Octo 成为一种灵活且广泛适用的通才机器人策略,可用于各种下游机器人应用和研究项目。如图所示:
设计决策
在开发 OpenVLA 模型时,在开始最终模型训练运行之前,在小规模的实验中探索各种设计决策。具体来说,在 BridgeData V2 [6] 上训练和评估 OpenVLA 模型进行初步实验,而不是在完整的 OpenX 混合模型上进行训练,提高迭代速度并降低计算成本。
VLM 主干
最初尝试多个 VLM 主干。除了 Prismatic [44],还测试微调 IDEFICS-1 [82] 和 LLaVA [83] 以进行机器人动作预测。LLaVA 和 IDEFICS-1 在场景中只有一个目标的任务上表现相当,但 LLaVA 在涉及场景中多个目标并需要策略来操纵正确目标(即语言指令中指定的目标)任务中表现出更强的语言落地。具体而言,LLaVA 在 BridgeData V2 环境中的五项语言基础任务中,平均绝对成功率比 IDEFICS-1 高出 35%。经过微调的 Prismatic VLM 策略取得了进一步的改进,在简单的单目标任务和多目标语言落地任务中,绝对成功率比 LLaVA 策略高出约 10%。这种性能差异归因于融合SigLIP-DinoV2 主干所提供的改进空间推理能力。除了性能增强之外,Prismatic 还提供了模块化且易于使用的代码库,因此最终选择它作为 OpenVLA 模型的主干。
图像分辨率
输入图像的分辨率对 VLA 训练的计算要求有重大影响,因为更高分辨率的图像会产生更多的图像patch tokens,从而产生更长的上下文长度,从而二次增加训练计算。比较输入为 224 × 224px 和 384 × 384px 的 VLA,但在评估中没有发现性能差异,而后者的训练时间要长 3 倍。因此,为最终的 OpenVLA 模型选择 224 × 224px 的分辨率。注:在许多 VLM 基准测试中,提高分辨率确实会提高性能 [44、84、85],但尚未看到 VLA 出现这种趋势。
微调视觉编码器
之前对 VLM 的研究发现,在 VLM 训练期间冻结视觉编码器通常会提高性能 [44]。直观地说,冻结的视觉编码器,可以更好地保留其互联网规模预训练中学习的稳健特征。然而,在 VLA 训练期间微调视觉编码器对于良好的 VLA 性能至关重要。假设预训练的视觉主干可能无法捕获有关场景重要部分的足够细粒度空间细节,以实现精确的机器人控制。
训练epochs
典型的 LLM 或 VLM 训练,运行最多通过其训练数据集完成一到两个 epoch。相比之下,VLA 训练需要通过训练数据集进行更多次迭代,真实机器人性能会不断提高,直到训练动作 token 准确率超过 95%。最终训练运行通过其训练数据集完成 27 个 epochs。
学习率
将学习率扩展到 VLA 训练的多个数量级,并使用固定学习率 2e-5(与 VLM 预训练期间使用的学习率相同 [44])获得了最佳结果。学习率预热没有带来好处。
最终的 OpenVLA 模型在 64 个 A100 GPU 集群上训练 14 天,总共 21,500 个 A100 小时,使用 2048 的批处理大小。在推理过程中,OpenVLA 在以 bfloat16 精度加载时需要 15GB 的 GPU 内存(即不进行量化),并在一个 NVIDIA RTX 4090 GPU 上以大约 6Hz 的频率运行(不使用编译、推测解码或其他推理加速技巧)。可以通过量化进一步减少 OpenVLA 在推理过程中的内存占用,而不会影响现实世界机器人任务的性能。
为方便起见,实现了一个远程 VLA 推理服务器,允许将动作预测实时远程传输到机器人——无需访问强大的本地计算设备来控制机器人。此远程推理解决方案是开源代码发布的一部分。
随模型发布的,还有 OpenVLA 代码库,这是一个用于训练 VLA 模型的模块化 PyTorch 代码库。它从在单个 GPU 上微调 VLA 扩展到在多节点 GPU 集群上训练十亿参数的 VLA,并支持用于大型 Transformer 模型训练的现代技术,如自动混合精度(AMP,PyTorch [73])、FlashAttention [74] 和完全分片数据并行(FSDP,Zhao [75])。开箱即用的 OpenVLA 代码库完全支持在 Open X 数据集上进行训练,与 HuggingFace 的 [21] AutoModel 类集成,并支持 LoRA 微调 [26] 和量化模型推理 [27, 86]。
在两个机器人实例上对 OpenVLA 的“开箱即用”性能进行评估:BridgeData V2 评估中的 WidowX 机器人 [6]和 RT-1 和 RT-2 评估中的移动操控机器人 [2, 7](“Google 机器人”)。这两个平台在之前的研究中都被广泛用于评估通才机器人策略 [1, 2, 5, 7]。在每个环境中定义了一套全面的评估任务,涵盖了泛化的各种轴,例如视觉(未见的背景、干扰目标、目标的颜色/外观);运动(看不见的目标位置/方向);物理(看不见的目标大小/形状);和语义(看不见的目标物体、来自互联网的指令和概念)泛化。还评估具有多个目标场景中的语言调节能力,测试策略是否可以操纵用户提示中指定的正确目标目标。
总体而言,在 BridgeData V2 实验的 170 次部署(17 个任务,每个任务 10 次试验)和 Google 机器人实验的 60 次部署(12 个任务,每个任务 5 次试验)中评估每种方法。
版权归原作者 硅谷秋水 所有, 如有侵权,请联系我们删除。