OpenVLA:开源的视觉-语言-动作模型
1. 简介
让我们先来介绍一下什么是OpenVLA,在这里:
https://openvla.github.io/
可以看到他们的论文、数据、模型。
OpenVLA 是一个拥有 70亿参数的开源 **视觉-语言-动作(VLA)**模型。它是在 Open X-Embodiment 数据集 中的 97万个 机器人执行任务或学习过程的数据记录(episodes) 上训练得到的。
每个 episode 是一个机器人从“接收任务”到“完成任务”的完整记录,包含了视觉画面、语言指令、动作反馈等。
Open X-Embodiment dataset 是一个由多个实验室联合构建的开源大规模机器人数据集。提供来自多种不同类型机器人、大量任务的数据,非常适合训练通用机器人模型。
OpenVLA 在通用机器人操作策略方面设立了新的业界标杆。它能够直接控制多种机器人,并且可以通过对模型的一小部分参数进行训练,就可以让它适应新的任务或机器人。
OpenVLA 的模型权重和基于 PyTorch 的训练流程都是完全开源的,用户可以通过 HuggingFace 平台下载并进行微调。
一句话说明:OpenVLA 是一个强大的开源AI模型,能让机器人“看懂画面 + 听懂指令 + 做出动作”,并能快速适配多种任务和机器人,是未来通用机器人智能的重要一步。
2. 摘要
基于互联网上大规模视觉-语言数据和多样化机器人演示预训练的大模型,有可能彻底改变我们教授机器人新技能的方式:不再需要从零训练新行为,而是可以通过微调一些模型参数就能执行新任务,类似 GPT 不用重训,只需给点新例子就会写出新东西。
但是因为缺乏高效微调的研究方法而且大多闭源(Google 的 RT 系列),导致不知道如何适配新任务,限制了模型的实际应用。
现在OpenVLA来了,训练他所采用的数据是现实中真正机器人操作的视频/动作记录,不是模拟器中产生的数据。
OpenVLA 以 Llama 2 语言模型为基础,结合了从 DINOv2 和 SigLIP 中提取的视觉特征,构建了强大的视觉编码器。
Llama 2:Meta(脸书)开发的强大开源语言模型。
DINOv2 / SigLIP:是处理图像的预训练视觉模型,可以将图片转化为“理解向量”。
这些模块组合在一起,模型就能“看懂图像 + 理解语言”。
OpenVLA 在“通用操作任务”上表现优异,甚至超越了闭源的 RT-2-X(55B 参数)模型,在 29 个任务和多种机器人上,任务成功率高出 16.5%,而参数仅为其 1/7。这项评估是在 WidowX 和 Google Robot 两种机器人平台上完成的。
而且 RT-2-X 没有探讨如何微调模型以适配新机器人。
OpenVLA 在新环境中也能高效地微调,尤其在多任务、多物体、语言交互性强的场景中表现出优秀的泛化能力,并比 Diffusion Policy 等从零模仿学习方法高出 20.4%。
计算效率方面:通过现代的低秩适配(LoRA)方法,OpenVLA 可以在普通消费者级 GPU(这点很关键啊) 上微调,并通过量化(quantization)部署而不降低任务表现。
LoRA(Low-Rank Adaptation):一种高效微调方法,只训练小部分参数,节省算力。
Quantization(量化):把模型压缩得更小(比如用 8-bit 代替 32-bit),大幅减少模型的内存占用和计算量,便于部署在手机、机器人上。
量化本质上是将 高精度数值(如 float32)映射到低精度数值(如 int8) 的过程:
原始 float32 权重:[0.12, -1.5, 3.7]
量化后的 int8 权重:[12, -15, 37]
虽然会损失部分精度,但通过合理的映射策略(如动态范围缩放、校准等),可以在精度损失和模型性能之间取得平衡。
关键协同效应:
LoRA 负责高效微调 → 保持模型对新任务的理解能力
量化负责压缩与加速 → 让模型适配边缘设备
最后,他们开放了模型的检查点(预训练权重)、微调用的笔记本文件、以及完整的 PyTorch 代码库,支持在 Open X-Embodiment 数据集上进行大规模训练。
3. 详细介绍
现有的机器人操作策略难以泛化,而在机器人领域之外,已有的视觉和语言基础模型(如 CLIP 、SigLIP 、Llama 2 )则展现出了更强的泛化能力,这是它们通过互联网规模的预训练数据集学到的先验知识所赋予的。
虽然在机器人领域复刻这种规模的预训练是一个尚未解决的难题(即使是最大的机器人操作数据集也只有 10 万到 100 万条示例),但是这也是一个机会:可以将现有的视觉和语言基础模型作为训练机器人策略的核心构件,从而使其具备超出训练数据范围的对象、场景和任务泛化能力。
为实现这一目标,已有研究尝试将预训练的语言模型和视觉-语言模型用于机器人表征学习,或作为模块化系统中用于任务规划与执行的一个部分。近年来,它们也被用于直接训练VLA,用于机器人控制。
VLA 是将视觉与语言基础模型直接用于机器人控制的一种实现方式,方法是对视觉条件下的语言模型(VLM)进行微调,从而生成机器人动作指令。
VLM:给语言模型添加视觉输入作为上下文(如 PaLI [19,20]),使其能生成与视觉相关的文本或动作。
为了构建未来研究与开发的良好基础,机器人学领域亟需像开源语言模型生态那样的、支持高效微调和适配的开源通用 VLA 模型。
OpenVLA 的核心是一个预训练的视觉条件语言模型主干,它能捕捉多粒度的视觉特征,并在 Open-X Embodiment 数据集中来自真实机器人操作的 97 万条演示轨迹上进行了微调。
其核心架构基于三个预训练模型组件:SigLIP 和 DINOv2 视觉编码器以及 Llama 2 语言模型主干。
机器人任务通常需要同时处理宏观决策和微观控制:
宏观层面:理解“整理桌面”的整体目标。
微观层面:精确抓取书本、避开障碍物、调整关节力矩。
所以需要多粒度特征,如果用单粒度,可能导致无法理解任务意图或缺乏细节导致操作失败
他们还研究了 VLA 的高效微调策略(此前工作未涉足这一点),涉及从物体抓取放置到清洁桌面等 7 项多样化操作任务。
可以发现:微调后的 OpenVLA 策略明显优于其他预训练策略(如 Octo [5]);相较于使用从零开始的模仿学习(如 Diffusion Policy [3]),OpenVLA 在需要将语言指令与动作绑定的多任务多物体场景中展现出更显著的优势。
首次展示了利用低秩适配(LoRA)与模型量化,能够使 OpenVLA 在普通消费级 GPU 上进行微调与部署,而不会影响性能。
最后,他们开源了所有模型、部署与微调示例 notebook 以及 OpenVLA 的 PyTorch 代码库。
4. 相关方法和技术
4.1 视觉条件语言模型
视觉条件语言模型(VLMs)是在互联网规模的数据上进行训练的,目标是根据输入的图像和语言提示生成自然语言。这类模型已被广泛应用于多种任务,如视觉问答(VQA)和物体定位 [32, 33]。
近年 VLMs 发展的关键进展在于模型架构的创新——它们能将预训练视觉编码器(如 CLIP、SigLIP)提取的图像特征与预训练语言模型(如 LLaMA、T5)连接起来,从而构建出强大的多模态模型,融合了视觉与语言两方面的进步。
近年来的开源 VLMs 趋于统一采用一种更简单的方式——“图像 patch 作为 token”(patch-as-token)的方法:即把图像划分为若干 patch,并将每个 patch 的特征视为一个“词元”(token),再投影到语言模型的输入空间中。
patch-as-token:模仿语言模型处理文本的方式,将图像“切割”成小块(patch),再将这些小块转换为类似“单词”的向量,最终让语言模型能同时理解视觉和文本输入。
在本研究中,使用了 Karamcheti 等人提出的 VLM 作为预训练主干网络。它结合了多分辨率的视觉特征,既融合了 DINOv2 提供的低层次空间信息,也融合了 SigLIP 提供的高层语义特征,从而有助于视觉泛化能力的提升。
DINOv2:一种自监督视觉 transformer 编码器,擅长捕捉图像中的空间关系。 SigLIP:Google
提出的图文匹配模型,用于提升视觉语义理解能力。
4.2 通用机器人策略
机器人领域的一个最新趋势是训练多任务的通用型机器人策略,这些策略使用的是包含多种机器人形式的大型数据集,Octo [5] 提出了一种通用策略,可以开箱即用地控制多种机器人,并能灵活地适配新的机器人设置。
像 Octo 这种策略,通常是将预训练模块(如语言嵌入或视觉编码器)与从零开始初始化的其他模块组合在一起,在训练过程中“缝合”成一个完整策略。
预训练模块:直接复用已有的大模型组件,这些模块已在海量数据上训练过,能够提取高质量的通用特征。
由于不同机器人的关节数量、运动范围、动力学特性差异巨大,完成的任务也不同,预训练模型无法直接覆盖。所以需要从零初始化某些模块。
这样的话,更换机器人时,只需调整适配器和解码器,无需重新训练整个模型,预训练模块也减少了机器人对数据量的依赖。
想象组装一台电脑:
预训练模块:像高性能的通用配件(CPU、内存),适合多种用途;
从零初始化的模块:像专用外设(游戏手柄、绘图板),需要根据具体需求定制驱动。
而 OpenVLA 则采用更加端到端的方式:直接微调 VLM,使其输出机器人动作指令,并将这些动作视为语言模型词汇表中的 token。
在 VLM 原有的文本词汇表中新增动作 token,使模型能像生成文本一样生成动作序列。 模型直接生成动作 token 序列,例如:
[detect_cup] [move_to_cup] [grasp] [lift] [move_to_table] [place]
使用机器人演示数据(图像-指令-动作序列三元组),让模型学习何时生成何种动作 token。
最后将生成的离散动作 token 转换为机器人可执行的连续控制信号
无需手动设计特征提取器、规划器、控制器,所有决策由单一模型完成,避免模块间接口不匹配导致的错误;从大规模机器人演示数据中学习动作模式,而非依赖规则编程。
实验表明,这种简单却可扩展的训练流程在性能和泛化能力上显著优于先前的通用策略模型。
4.3 VLA 模型
有不少研究尝试将 VLM 应用于机器人领域,例如用于视觉状态表示、目标检测、高级规划、以及作为反馈信号。也有部分研究将 VLM 直接嵌入端到端的视觉运动控制策略,但这些方法引入了大量架构上的特殊设计(如标定相机),因而通用性较差。
直接微调大型预训练 VLM 来预测机器人动作 [1, 7, 17, 18, 72–74]。这类模型通常被称为 视觉-语言-动作模型(VLA)。有三大优势:
- 可以将预训练的视觉与语言模块在大规模图文数据上进行对齐;
- 架构通用,可利用现成的多模态训练基础设施,轻松扩展到十亿级参数模型;
- 能够直接继承 VLM 领域的最新进展,迅速提升机器人性能。
输入:
左上角的图片;左下角的自然语言指令
中间结构:
1.针对输入的图像进行视觉特征提取(DINO v2 + SigLIP),包含低层次空间细节(物体边缘、形状)和高层次理解信息(这是碗、这是茄子),两者并行对同一帧图像进行编码,然后各自输出一组视觉特征向量。
2. 将上面步骤生成的视觉特征通过MLP映射到与语言模型相同的[token表示空间] 中。输出一组 [视觉tokens] (彩色小方块),它们就像是“视觉版的单词”。
3. 针对输入的语音指令,通过LIama Tokenizer 切分成一系列文本 tokens(绿色小方块)
4. 将 视觉tokens 和 语言tokens 一起作为输入,输入进LIama 2(7B参数),生成一串 动作tokens(紫色小方块)。
动作解码:
Action De‑Tokenizer 将这些 tokens 转化为机器人可执行的连续控制信号——通常表示为 Δx、Δθ、Δgrip 等 7 维动作向量(图中右边机械臂的箭头)。
5. VLA 模型
前面已经初步介绍了这个模型,但还有许多未被充分探索的问题,例如:应当选择哪些模型主干、哪些数据集、哪些超参数进行训练。
下面将详细阐述开发 OpenVLA 的方法和核心经验教训。
主要都是他们怎么去训练这个模型的,关于怎么部署好像没有讲到?
可如果我们想炼个小的,针对草莓采摘的,也许会参考官方的训练过程
5.1 VLM
在本工作中,选用 Prismatic-7B VLM [44] 作为基础模型。它包括:
600M 参数的视觉编码器;
Prismatic 的视觉编码器由 SigLIP [79] 和 DinoV2 [25] 两部分组成,引入 DinoV2 特征能够增强空间推理能力[44],这对机器人控制尤为重要。
将两个编码器输出的向量在特征维度上并排连接,得到更丰富的表示。
2 层的小型 MLP 投影器;
7B 参数的 Llama 2 语言模型骨干。
SigLIP、DinoV2 和 Llama 2 并未公开其完整的训练数据集,但可以推测它们分别在万亿级的互联网图文对、纯图像、纯文本数据上预训练。
Prismatic VLM 则在此基础上,使用 LLaVA 1.5 数据混合集 [43] 进行微调,该混合集包含约 100 万 条来自开源数据集的图文和纯文本样本。
5.2 OpenVLA 训练流程
将动作预测视为一种“视觉-语言”任务:将观测到的图像和自然语言任务指令映射到一串预测的机器人动作序列 。
为了让视觉-语言模型的语言骨干能够预测机器人动作,我们将连续的机器人动作映射为离散的语言模型 token。
机器人动作原本是连续值(如 Δx=0.05),但语言模型只能处理离散 token,需先离散化。
经过上述离散化后,N 维动作被表示为 N 个取值范围在 [0…255] 的整数。但 Llama tokenizer [10] 只预留了 100 个“special token”供微调时新增用的id(共有数万个token),直接用我们 256 个动作 token id 覆盖 Llama 词表中最少被使用的 256 个 token。
当我们把动作全都变成 token,就能像训练GPT那样:给模型一段“视觉+语言”输入,让它一步步预测下一个动作 token。其实就是让模型学会这个视觉+语言 和 该做什么动作 之间的映射。
训练结束后,模型既能理解图像和指令,又能输出机器臂的动作序列,且每个动作序列里的 token 都映射到一组连续控制信号,机器人就按这个信号执行操作。
5.3 训练数据
以 Open X-Embodiment(OpenX) 数据集为基础进行数据精炼。
数据精炼有两个目标:
1.保证输入输出空间一致性,即所有子数据集的图像和动作格式统一;
2.保证数据多样性平衡,即在机器人形态、任务类型、场景环境间均衡分配训练样本。
仅保留至少有一个第三人称视角相机且使用单臂末端执行器的操作数据集
附录 A 中给出了所有使用数据集及其混合权重的完整列表。
5.4 设计决策
先在小规模实验中尝试了多种设计方案,再启动最终的完整模型训练。
初期选用了 BridgeData V2 [6] 数据集进行训练与评估,而非一次性使用全量 OpenX 混合数据,这样能够加快实验迭代并降低算力开销。
BridgeData V2:一个涵盖多种操作场景的中等规模机器人演示数据集,常用于快速迭代研究。
经微调的 Prismatic VLM 策略在简单单物体任务和多物体语言落地任务中,又比 LLaVA 高出约 10%,这一性能差异归因于Prismatic 所用的SigLIP+DinoV2 融合编码器所提升的空间推理能力,此外,Prismatic 拥有模块化且易用的代码库。
输入图像的分辨率对 VLA 训练的计算量影响很大:分辨率越高,生成的图像 patch token 越多,模型上下文长度越长,训练计算量呈n²增长。
使用 224×224 px 与 384×384 px 的输入,发现两者在性能上无显著差异,但后者训练时间要慢 3 倍。
虽然在许多 VLM 基准上更高分辨率能带来性能提升,但在 VLA 任务中我们尚未观测到这一趋势。最终 OpenVLA 选用 224×224 px 分辨率。
VLM 领域的研究表明:冻结视觉编码器(即不更新其权重)通常能获得更好效果,但在 VLA 训练中微调视觉编码器对性能至关重要。
冻结编码器可保持预训练知识,但可能缺乏适应下游任务的细节;微调则让编码器“专门”学习机器人视角下关键细节。
典型的 LLM 或 VLM 训练通常遍历数据集一到两次(即 1–2 个 epoch)。相反,我们发现 VLA 的训练需要在数据集上多次迭代——真实机器人任务的表现会随着训练动作 token 准确率提升而持续改进,直到超过 95%。最终,我们在完整训练中共完成了27个 epoch。
没有过拟合?那么过拟合的极限在哪里?
针对 VLA 训练对学习率进行了大范围调参,最终发现固定学习率 2×10⁻⁵(与 VLM 预训练时相同)效果最佳。此外,我们并未观察到学习率预热(warmup)带来额外收益。
预热(Warmup):训练初期用较低学习率逐渐升至目标值,有时能稳定早期训练,但本实验中未见明显作用。
5.5 训练和推理所需的硬件、软件和系统架构
最终的 OpenVLA 模型在一个由 64 块 A100 GPU 组成的集群上训练了 14 天,总计使用了约 21,500 A100 GPU 小时,训练时使用的 batch size 是 2048。
在推理阶段,OpenVLA 在 bfloat16 精度(即未量化)下加载时需要大约 15GB 的 GPU 显存,在一块 NVIDIA RTX 4090 上的运行速度约为 6Hz(>=5就可以接受),即每秒处理约 6 帧。
6Hz 推理速度,是指 OpenVLA 模型单次“思考”(即:从视觉+语言输入→预测一条动作指令的时间) 的频率,也就是 模型生成一组动作
token 的速度,不包括机器人实际执行动作所需的反馈/控制周期。
举个例子: 比如 VLA 每 200ms(5Hz)预测一次动作序列:
输出是:“在未来 1 秒内,将机械臂末端移动到坐标 (x, y, z)并抓取”。
然后底层控制器在这 1 秒内,以 200Hz 的频率不断调整电机来执行这一目标。
所以,VLA 推理速度只需要能跟得上“动作规划节奏”就行,不需要直接满足底层控制频率。这一结构类似人类的行为系统:大脑规划动作(低频),肌肉自主协调(高频)。
可以通过对模型进行量化来进一步减少 OpenVLA 在推理时的显存占用,而且不会影响其在真实机器人任务中的性能。
下图说明了 OpenVLA 在多种消费级与服务器级 GPU 上的推理速度。
4-bit量化让模型可在Jetson等嵌入式设备运行,消费级显卡(RTX 4090)接近专业卡(H100)性能,降低部署门槛。
为方便使用,他们实现了一个远程 VLA 推理服务器,可将动作预测结果实时传输到机器人,无需本地搭载强算力设备即可控制机器人。在后续的开源代码介绍中包含这一远程推理解决方案。
这个我可以用吗?
6. 代码库
发布了 OpenVLA 代码库,它是一个模块化的 PyTorch 代码库,用于训练 VLA 模型。
它既可以在单个 GPU 上微调 VLA 模型,也能在多节点的 GPU 集群上训练拥有上亿参数的大模型。
它支持多种现代的训练大模型技巧,例如自动混合精度(AMP)、FlashAttention、以及完全分片的数据并行(FSDP)。
AMP(Automatic Mixed Precision):让训练更快、更省内存的方法。比如有些计算用32位浮点(float32),有些用16位(float16),效果差不多但更省资源。
FlashAttention:一种更快、更节省内存的注意力机制实现,在训练大模型时尤其重要。
FSDP(Fully Sharded Data Parallelism):把模型参数拆开分配到不同GPU上,可以训练更大的模型。
OpenVLA 代码库开箱即用,支持在 Open X 数据集上训练,兼容 HuggingFace 的 AutoModel 类,并支持 LoRA 微调和量化模型推理。
OpenVLA 是一个用来训练 VLA 的“万能训练机”,既适合小规模实验,也能搞亿级大模型。它集成了当前流行的训练加速工具(AMP、FlashAttention、FSDP),并支持主流框架(HuggingFace)、灵活的微调(LoRA)、高效的部署(模型量化)等,基本是现代 AI 工程师的理想训练工具箱。
7. 实验
实验目标是评估 OpenVLA 作为一个即插即用(无需大量修改)的通用多机器人控制策略的表现,同时也要测试其是否容易在新任务上快速适配。
希望通过实验能够回答一下三个问题:
1.在多种机器人和不同类型的泛化任务上,OpenVLA 的表现与已有的通用机器人策略相比如何?
2.OpenVLA 能否高效地微调到新的机器人系统和任务?其效果与最先进的数据高效模仿学习方法相比如何?
3.能否通过参数高效的微调方法和模型量化技术,降低 OpenVLA 的训练与推理成本,从而提升其实用性?其中的性能与计算消耗之间的权衡关系如何?
作者设计的实验目标,从“能用”(跨机器人泛化)→“好用”(快速适配)→“省资源”(低成本部署)三个角度评估
7.1 实验设置与任务定义
作者团队在两个机器人实体上评估 OpenVLA 的“开箱即用”性能:一个是 BridgeData V2 评估下的 WidowX 固定机械臂,另一个是 Google(RT-1,RT-2)评估中使用的移动机械臂(被称为“Google robot”)。
一个是「定点做家务」的机器人(WidowX),一个是「能移动操作」的更高级机器人(Google robot)-RT系列是固定位置操作
草莓采摘机器人肯定会移动,但是采摘时候是定点的
设计了全面的任务集,涵盖了多个泛化维度,在 BridgeData V2 任务集上进行了 170 次实验(17 个任务 × 10 次尝试),在 Google Robot 平台上进行了 60 次实验(12 个任务 × 5 次)。采用 A/B 测试,确保不同模型的起始条件一致。
这张图展示了在 BridgeData V2 任务下的 WidowX上,四种通用机器人控制策略——RT‑1‑X(蓝色)、Octo(橙色)、RT‑2‑X(绿色)和我们的方法 OpenVLA(红色)——在一套五大类任务上的表现对比,以及它们的整体平均成功率。
任务类别 | 含义 | 成功率(%) |
---|---|---|
视觉泛化 (Visual Generalization) | 背景、遮挡物、物体外观未在训练中出现过 | RT‑1‑X 8.0 Octo 29.0 RT‑2‑X 52.0 OpenVLA 87.0 |
运动泛化 (Motion Generalization) | 物体的位置与朝向组合未见过 | RT‑1‑X 25.0 Octo 7.5 RT‑2‑X 55.0 OpenVLA 60.0 |
物理泛化 (Physical Generalization) | 物体的形状和大小组合未见过 | RT‑1‑X 10.0 Octo 20.0 RT‑2‑X 26.7 OpenVLA 76.7 |
语义泛化 (Semantic Generalization) | 需要理解全新对象、指令或网络上概念 | RT‑1‑X 26.3 Octo 0.0 RT‑2‑X 38.8 OpenVLA 36.3 |
语言接地 (Language Grounding) | 能否根据语言提示精确操纵指定物体 | RT‑1‑X 30.0 Octo 40.0 RT‑2‑X 85.0 OpenVLA 90.0 |
整体平均 (Average) | 上述五类任务的加权平均 | RT‑1‑X 18.5 Octo 20.0 RT‑2‑X 50.6 OpenVLA 70.6 |
针对草莓采摘项目,每株长的都不同,光照也不同,叶片遮挡情况也不同,所以视觉泛化能力很重要;
草莓的位置(台面种植中草莓朝向应该都是向下?)也是很难都训练到,所以运动泛化很重要;
草莓的形状和大小也各不相同,所以物理泛化很重要;
草莓就是草莓,不需要理解全新对象或概念,所以语义泛化不重要。
综合来看,这个模型在理论上符合草莓采摘的环境
这张图是在Google robot 平台上四种机器人策略(RT-1-X、Octo、RT-2-X、OpenVLA)在 In-Distribution(训练数据内任务)和 OOD Generalization(未见任务)场景下的性能对比,足见OpenVLA 的优势。
总的来说:RT-1-X & Octo 表现较差,它们在任务中经常搞错目标,或者机器人干脆“摆烂”乱动。RT-2-X 借助大模型 + 互联网预训练 + 语言理解,在泛化能力上领先很多。尽管 OpenVLA 只有 RT-2-X 的 1/8 参数量,它在 Google Robot 上表现相当,在 BridgeData V2 上全面领先。
原因包括:
1.更大的训练数据量(OpenVLA 用了 97 万条运动信息 vs RT-2-X 的 35 万)
2.更干净的数据处理(比如去掉了 BridgeData 中无效动作)
3.使用融合视觉编码器:结合语义 + 空间特征(提高理解能力)
7.2 对新机器人环境的高效数据适应
如何高效地将 VLA 微调到新任务和机器人配置仍鲜有探索,而这恰恰是实现其广泛部署的关键。
在本节中,研究 OpenVLA 是否能快速适配新的真实世界机器人平台。(更多仿真实验见附录 E)
所用策略:对所有参数进行完整微调,只用 10–150 个演示样本来学习目标任务(下图),用了99个桌面任务和30个DROID现实场景任务
这是一个非常“极限”的测试:少样本 + 全参数更新,看模型是否能快速适应。 这在机器人学习中非常重要,因为数据昂贵,示教困难。
在两个环境中测试OpenVLA:
1.Franka-Tabletop:固定在桌面上的 Franka Emika Panda 机械臂;
2.Franka-DROID:来自 DROID 数据集、安装在移动升降桌上的 Franka 环境。
两者都是 Franka 机械臂,但存在平台姿态和传感差异,可以检验模型的适配性。
DROID 是一个新出的实际任务数据集,非常贴近现实使用场景。
选择 Franka 机械臂作为微调实验的目标平台,是因为它在机器人学习社区中广泛使用,因此很可能是 OpenVLA 的现实“适配对象”。
两个环境的控制频率分别是 5Hz 和 15Hz,均为非阻塞控制器。
与 Diffusion Policy 方法进行对比,它是当前数据高效模仿学习的 SOTA 方法,从零开始训练。还使用了输入输出接口与 OpenVLA 对齐的 Diffusion Policy(matched 版本)进行对比。
此外,也评估了 Octo 在目标数据集上的微调效果 —— 它是目前最强且支持微调的通用策略。
还加入了一个消融实验 —— OpenVLA (scratch),直接在目标平台上微调未预训练的 Prismatic VLM,以评估大规模机器人预训练的效果。
可以看到下面这个擦桌子的任务是在现实场景中的,比单纯的桌面任务要复杂。
该图对比了多种机器人策略在Franka Emika Panda机械臂上的任务表现,分为 单一指令任务 和 多样化多指令任务。
我们发现,在单一指令任务中(如“将胡萝卜放入碗中”或“将玉米倒入锅中”),Diffusion Policy 两个版本的表现比 Octo 和 OpenVLA 更优。
说明 Diffusion Policy 在小样本、高精度控制任务中仍是 SOTA,泛化型模型还略逊一筹。
但在场景中存在多个物体、需要语言理解的复杂任务中,预训练的通用策略效果更好。
OpenVLA 是唯一在所有测试任务中成功率始终≥50%的方法。
OpenVLA (ours) 在两类任务中综合表现最优,尤其是在多样化任务中优势显著。
Diffusion Policy 在单一任务中表现突出,但在复杂场景中泛化能力不足。
OpenX 的预训练使 Octo 和 OpenVLA 能更好适应语言语义要求高的复杂任务 —— 这一点也可以从 OpenVLA (scratch) 表现较差中看出。
若 OpenVLA 能引入动作分段与时间平滑机制,可能在精细度上达到 Diffusion Policy 同样水平。
7.3 参数高效微调
在上一节中,对 OpenVLA 进行完整微调通常需要 8 张 A100 GPU,耗时 5–15 小时(具体取决于数据集大小),才能获得较高性能。
虽然比预训练省很多(预训练动辄几千 GPU 小时),但仍然不够轻量化,尤其在实际部署或小团队研究中。
本节将探索更节省算力和参数的微调方法,并研究其效果。
对比了如下几种微调方法:
- 完整微调(full fine-tuning):更新模型中所有参数,这是 baseline,也是性能最强、但计算成本最高的方案。
- 仅微调最后一层(last layer only):只微调 Transformer 主干的最后一层 和 token 嵌入矩阵。
- 冻结视觉模块(frozen vision):冻结视觉编码器,微调其它所有参数。
- 夹心微调(sandwich fine-tuning):微调视觉编码器 + token 嵌入 + 最后一层。
- LoRA 微调:采用 Hu 等人提出的流行的低秩适配技术(Low-Rank Adaptation)[26],在模型的所有线性层上应用多个秩 r。
LoRA 是近年来主流的轻量微调方案,尤其适合 LLM 场景。
它通过在固定主模型的同时,仅插入低秩矩阵进行训练,极大减少参数数量和内存需求。
在多个 Franka-Tabletop 任务上实验出了各方法的微调成功率、训练参数数量和 GPU 显存需求
我们发现,仅微调最后一层或冻结视觉模块的效果都较差,说明视觉特征需进一步适配目标场景。
相比之下,夹心微调(sandwich)表现更好,因为它微调了视觉模块;同时因为未微调完整语言模型主干,显存占用也更低。
最后,LoRA 在性能与资源消耗之间实现了最佳平衡 —— 它的表现超过“夹心微调”,并且可与完整微调媲美,但仅需微调完整的 1.4% 的参数。
LoRA 的秩(rank)对策略性能影响甚微,说明LoRA 不太敏感于 rank,调参成本低,因此推荐默认使用 r = 32。
使用 LoRA 后,我们可以在单张 A100 上,用 10–15 小时就完成一次 OpenVLA 的微调 —— 相比全量微调,算力开销减少了 8 倍。
但还是太贵了
7.4 通过量化实现内存高效推理
虽然 OpenVLA 表现强,但它很“大”,推理内存消耗是个瓶颈,尤其对资源受限的部署环境(如边缘设备、小型机器人)。
借鉴大语言模型(LLM)部署的最佳实践,在推理阶段将 OpenVLA 保存和加载为 bfloat16 精度(这是默认设置),这可将内存占用减半,使得该模型能在 仅有 16GB 显存的 GPU 上运行。
这种方法已经大大压缩了资源要求,但目标是进一步压缩。本节我们将探索是否可以使用现代量化技术进一步减少策略模型的推理内存占用,从而扩大 VLA 策略模型的可访问性。
通过以更低的精度加载模型权重,从而以牺牲一定推理速度和准确性为代价,换取内存使用的降低。
具体来说,我们在 8 个代表性的 BridgeData V2 任务上,对 OpenVLA 模型在 8-bit 和 4-bit 精度下的推理效果进行实验。
在大多数 GPU 上,8-bit 量化会导致推理速度变慢,因为增加的量化操作带来了额外计算开销。
8-bit 理论上应该更快(更小数据),但实际中量化解码操作本身会成为瓶颈。
而 4-bit 推理反而能获得更高效率,因为显存传输的减少抵消了量化操作的开销,更轻更快。
4-bit 量化在性能上与 bfloat16 几乎相当,但显存占用却不到后者的一半。
极小的精度损失换来了巨大的内存节省,这使得部署在 8G/12G 显存设备上变得可行。
RTX 4090 是基于 Ada Lovelace 架构,对 FP16 / INT8 / 4-bit 量化推理优化极强。
A100 虽然 FP16/TF32 表现也很强,但对消费级推理优化支持不如 4090 高效。
在量化和微调中,使用过一个修改过的 OpenVLA 模型进行实验,使用了较小规模的机器人数据混合进行预训练,并采用了稍微简化的架构,仅使用了 SigLIP 作为视觉主干网络,而不是使用更复杂的融合 DinoSigLIP 编码器。
作者发现,即使使用这种更简单的架构,该模型在微调任务和“开箱即用”任务中依然表现出色。
这也是一个可优化的点
8. 讨论与局限
当前的 OpenVLA 模型存在一些局限。
1.首先,它目前仅支持单张图像的观测输入。这在动态任务或需要时序感知的场景中会表现不佳。
现实中的机器人系统通常是异构的,具有多种类型的传感器输入。实际应用中常用多摄像头、深度图、IMU、力传感器等。
理想汽车他们也用到了VLA这个模型,他们是怎么解决这个问题的?
未来的重要研究方向是让 OpenVLA 支持多图像、身体感知输入以及观测历史信息。
使用在交错图文数据上预训练的视觉语言模型(VLM)可能有助于实现这类灵活输入的 VLA 微调。
2.其次,提高 OpenVLA 的推理吞吐量对于支持高频控制设置至关重要。这也将使我们能够在比本研究中更精细、更复杂的双手操作任务上测试 VLA 模型(Helix)
当前模型速度还达不到对部分高控制频率任务的实时响应需求,尤其是高精度、双臂任务。
3.此外,OpenVLA 的性能仍有提升空间。虽然其表现优于现有的通用策略,但在测试任务中尚未达到非常高的可靠性,成功率通常低于 90%。
4.最后,由于计算资源限制
模型大小是否值得扩大?
联合多来源数据的训练是否优于分阶段训练?
哪种视觉表示(如 CLIP、DINO、SigLIP)最适合 VLA?
承上启下
当将 VLA 模型部署到真实机器人系统中时,尽管它在模拟环境或基准任务中展现了良好性能,但在实际落地过程中仍面临多方面的挑战和困难。
- 资源限制与硬件兼容性
计算资源不足:VLA 模型通常较大(如 OpenVLA 为 7B 参数量),即便量化后仍需较高的 GPU 显存(7GB)。大多数机器人(尤其是移动机器人或嵌入式系统)配备的 GPU(如 Jetson TX2、Xavier、RTX 1650 等)根本无法运行这种模型。
我们那草莓采摘机器人用的什么GPU呢?电源和散热问题应该还好,启动时间是否会成为限制?
- 输入感知的多样性与不足
仅支持静态图像(单帧)输入、缺少时序建模。许多真实任务(如抓取、搬运)需要基于历史状态决策,仅基于当前帧可能导致误判。
我们那采摘是否有基于历史状态决策?
-
实时性与控制频率瓶颈
推理延迟高:大模型(即便量化到 4-bit)在中端 GPU 上推理仍需数百毫秒,远不能满足 10Hz (每步推理时间100ms)以上的实时控制需求。延迟导致的控制响应滞后,使得系统状态已发生改变,而控制信号仍基于“旧图像”做出的决策
实际部署中需要用异步机制(图像获取、模型推理、控制执行)并行运行,对系统设计要求高,调试成本大。 -
环境不确定性高
现实场景中,物体可能位移、掉落、形变,VLA 模型如果没有动态感知能力就容易失效。 -
训练-部署之间的偏差
如果模型在仿真中训练,则部署到实机上可能完全失效,视觉差异、物理摩擦、机器人动态都不同。
为了适应特定机器人的特性,需要额外采集数据进行 LoRA 等微调。但采集/标注/部署本身就是一个复杂流程,尤其在工业环境下成本高昂。 -
系统集成
模块耦合度高:VLA 模型往往集成视觉、语言、控制模块,缺乏良好的模块化设计,使得集成到现有机器人架构中困难。
调试困难:VLA 模型的推理过程往往是黑盒的,无法像传统控制器那样逐步调试,很难定位错误来源。