【OpenVLA】:开源视觉-语言-动作通用机器人策略的技术原理与落地实践

📅 2026/6/27 9:31:21
【OpenVLA】:开源视觉-语言-动作通用机器人策略的技术原理与落地实践
OpenVLA开源视觉-语言-动作通用机器人策略的技术原理与落地实践论文信息标题OpenVLA: An Open-Source Vision-Language-Action Model会议arXiv:2406.09246v3 [cs.RO]单位斯坦福大学、加州大学伯克利分校、丰田研究院、Google DeepMind、麻省理工学院、Physical Intelligence代码https://openvla.github.io论文https://arxiv.org/pdf/2406.09246.pdf一、引言机器人“通用大脑”的破局之路给机器人教新技能过去的模式是“一个任务训一个模型”就像给每个工种单独招一个工人换个活就得重新招人。随着大模型时代到来大家开始琢磨能不能给机器人做一个“通用大脑”看一眼图像、听一句指令就能上手各种操作任务这个方向就是视觉-语言-动作模型VLA——把视觉理解、语言理解和机器人动作控制塞到一个端到端模型里靠大规模预训练获得泛化能力。Google的RT-2系列已经证明这条路走得通但有两个致命问题卡着行业脖子闭源黑箱顶尖的VLA模型基本都不开放权重和训练细节学术界和小公司根本碰不到落地困难没人摸得透怎么把通用VLA快速适配到自己的机器人、自己的任务上更别说用消费级显卡跑起来。本文推出的OpenVLA就是冲着解决这两个问题来的。它是一个70亿参数的完全开源VLA模型在97万条真实机器人演示数据上训练而成。最夸张的是它用比闭源标杆RT-2-X少7倍的参数量在29个任务、多种机器人平台上把绝对成功率拉高了16.5个百分点。同时它还支持消费级显卡微调、量化推理把通用机器人策略的门槛直接打了下来。下图是OpenVLA的整体定位与核心特性图1OpenVLA核心定位示意。基于开源VLM主干在大规模机器人数据集上微调输出通用机器人控制策略支持多机器人开箱即用与高效微调全链路完全开源。出处原文Figure 1通俗解释之前的顶尖VLA就像某大厂的闭源商业软件贵还不让改OpenVLA就像开源的Linux系统免费给你用还能自己改配置、装插件普通电脑也能跑起来。性能还比商业软件强属于典型的“开源打赢闭源”。二、模型架构与核心数学原理2.1 整体架构OpenVLA的思路非常朴素把机器人动作预测当成一个“图文生成任务”来做直接复用成熟的视觉-语言模型VLM主干只需要把动作塞进输出词汇表里就行。整体架构分为三大模块如下图所示图2OpenVLA模型架构。输入为图像观测与语言指令输出7维机器人控制动作由双路视觉编码器、MLP投影层、Llama 2 7B大语言模型主干三部分组成。出处原文Figure 2三个模块的分工如下双路视觉编码器由DINOv2和SigLIP两个预训练视觉模型组成。同一张图片分别过两个编码器得到的特征在通道维度拼接兼顾细粒度空间信息DINOv2擅长和高层语义信息SigLIP擅长。MLP投影层一个2层的多层感知机把视觉特征映射到和语言嵌入相同的维度让大语言模型能“看懂”图片。LLM主干采用Llama 2 7B作为基座负责融合视觉、语言信息输出离散的动作token序列最终反解为连续的机器人动作。通俗解释视觉编码器相当于“眼睛”DINOv2负责“看清楚物体在哪、长啥样”SigLIP负责“认出这是什么东西”投影层相当于“翻译官”把视觉信号翻译成大脑能懂的语言LLM主干就是“大脑”看着图、听着指令琢磨出下一步该怎么动。2.2 动作离散化让大模型能输出动作大语言模型天生只能输出离散的token可机器人动作是连续值比如位移、角度。所以第一步要把连续动作“拆成”离散的档位也就是动作离散化。本文对动作的每个维度独立做均匀分箱每个维度拆成256个档位aibin⌊ai−q0.01q0.99−q0.01×255⌋ a_i^\text{bin} \left\lfloor \frac{a_i - q_{0.01}}{q_{0.99} - q_{0.01}} \times 255 \right\rflooraibin​⌊q0.99​−q0.01​ai​−q0.01​​×255⌋符号逐一解释aia_iai​第iii维的原始连续动作值比如末端执行器的x方向位移aibina_i^\text{bin}aibin​离散化后的档位编号取值范围是0到255的整数q0.01q_{0.01}q0.01​训练数据中该维度动作的1%分位数即去掉最低1%的异常值后的下界q0.99q_{0.99}q0.99​训练数据中该维度动作的99%分位数即去掉最高1%的异常值后的上界⌊⋅⌋\lfloor \cdot \rfloor⌊⋅⌋向下取整运算255分箱总数减1最终得到0~255共256个档位和直接用最大最小值分箱相比用分位数可以过滤掉极端异常动作避免大部分动作挤在少数几个档位里有效提升控制精度。离散化之后7维动作就变成了7个0~255的整数刚好对应词表里的7个token。由于Llama的tokenizer只预留了100个特殊token位置本文直接复用了词表里最不常用的256个token把它们重定义为动作token零成本扩展输出空间。通俗解释这就像把音量旋钮从无级调节改成256格的按键调节。用分位数定范围就是把偶尔拧到底的极端情况去掉让中间常用的区间分得更细调起来更精准。2.3 训练损失函数训练目标就是标准的下一个token预测只对动作token部分计算交叉熵损失L−1Ta∑t1Talog⁡pθ(at∗∣o,I,at) \mathcal{L} -\frac{1}{T_a} \sum_{t1}^{T_a} \log p_\theta(a_t^* | o, \mathcal{I}, a_{t})L−Ta​1​t1∑Ta​​logpθ​(at∗​∣o,I,at​)符号逐一解释L\mathcal{L}L最终训练损失值越小模型预测越准TaT_aTa​动作token的总数量本文中单步动作对应7个token∑t1Ta\sum_{t1}^{T_a}∑t1Ta​​对每个动作token的损失求和再取平均log⁡\loglog自然对数用于把概率转为对数概率优化更稳定pθ(at∗∣o,I,at)p_\theta(a_t^* | o, \mathcal{I}, a_{t})pθ​(at∗​∣o,I,at​)给定条件下模型预测出正确动作tokenat∗a_t^*at∗​的概率θ\thetaθ模型的全部可训练参数ooo输入的图像观测I\mathcal{I}I输入的语言指令ata_{t}at​当前位置之前的所有动作token利用自回归特性保证动作序列的连贯性简单说就是给模型看图片、读指令让它挨个预测7个动作档位预测错了就用交叉熵罚它直到预测越来越准。通俗解释这就像做英语完形填空给你上下文图片指令前面的动作让你填每个空的正确单词动作档位填错越多扣分越多。练得多了填得就越来越准。三、关键设计决策与训练细节做VLA不是把VLM拿来直接训动作就行很多细节决定了最终效果。作者做了大量消融实验踩了一堆坑总结出了下面这些最佳实践。3.1 VLM主干怎么选作者对比了IDEFICS-1、LLaVA、Prismatic三个开源VLM主干结论很明确IDEFICS-1最弱多物体场景下经常抓错东西LLaVA比IDEFICS-1强35%语言理解能力更好Prismatic比LLaVA再强10%核心原因是它用了DINOv2SigLIP双路视觉编码器空间推理能力更强刚好适配机器人对位置精度的要求。最终OpenVLA选择了Prismatic-7B作为基座这也是性能和工程可用性的最优解。3.2 视觉编码器要不要微调这是一个反常识的结论普通VLM任务里冻结视觉编码器效果更好能保住互联网预训练学到的通用特征但机器人VLA任务里必须微调视觉编码器否则效果很差。原因很简单通用视觉预训练只需要认出“这是个杯子”但机器人控制需要精准知道“杯子在桌子上哪个坐标、离机械臂多远”。这些细粒度空间信息必须在机器人数据上微调才能提取出来。3.3 图像分辨率越高越好吗不是。作者对比了224×224和384×384两种分辨率精度上两者几乎没区别训练速度上384分辨率要慢3倍。最终选用224×224分辨率性价比最高。当然这是当前数据规模下的结论未来数据更多了高分辨率可能会体现出优势。3.4 训练超参的反常识结论和普通大语言模型预训练相比VLA训练有两个明显不同训练轮次要多很多LLM预训练一般1-2轮数据就够了但VLA要训27轮直到动作token准确率超过95%真机效果才会饱和。毕竟机器人数据量比文本小得多需要多迭代几次才能吃透。不需要学习率预热固定2e-5的学习率效果最好预热反而会掉点。3.5 训练数据怎么凑OpenVLA的训练数据来自Open X-EmbodimentOpenX数据集这是全球几十个机构凑出来的机器人演示大合集原始有200多万条轨迹。作者做了两轮筛选只保留单机械臂、有第三人称摄像头的操作任务保证输入输出格式统一沿用Octo的数据混合权重给多样性高的数据集更高权重给单一任务的数据集降权避免模型偏科。最终训练集包含97万条机器人演示轨迹覆盖多种机器人、多种场景、多种任务。有趣案例这就像练武功只练一套拳法容易走火入魔得百家拳都练一点基础才扎实。数据混合权重就是给厉害的拳法多安排点课时给花架子少安排点课时最后练出来的底子最均衡。四、开箱即用通用机器人性能评测第一部分实验测试“零样本直接用”的能力不做任何额外微调直接把模型放到新机器人上跑看泛化能力有多强。测试了两个主流平台WidowX机械臂BridgeData V2基准和Google移动操作机器人。4.1 WidowX平台五维度泛化大比拼BridgeData V2的测试覆盖了5类泛化能力每类都对应真实场景里的常见挑战视觉泛化背景变了、多了干扰物、物体颜色变了运动泛化物体放的位置、朝向没见过物理泛化物体大小形状变了语义泛化完全没见过的新物体、新指令语言对齐多个物体摆在一块能不能准确抓起指令说的那个结果如下图所示图3BridgeData V2 WidowX机器人评测结果。从左到右依次为平均成功率、视觉泛化、运动泛化、物理泛化、语义泛化、语言对齐能力。出处原文Figure 3详细数据汇总如下表方法参数量平均成功率视觉泛化运动泛化物理泛化语义泛化语言对齐RT-1-X35M18.5%8.0%25.0%25.0%26.7%26.3%Octo93M20.0%29.0%7.5%26.3%38.8%36.3%RT-2-X55B50.6%52.0%55.0%60.0%76.7%38.8%OpenVLA7B70.6%87.0%60.0%70.7%70.7%90.0%表1BridgeData V2各维度泛化成功率对比出处根据原文Figure 3与Table 4整理结果分析全面碾压闭源大模型OpenVLA参数量只有RT-2-X的1/7平均成功率高出20个百分点在视觉泛化、物理泛化、语言对齐三个维度上优势尤其巨大。唯一短板是语义泛化只有在完全没见过的新概念、新物体上RT-2-X略占优毕竟它用了更大规模的互联网预训练数据。但这个差距很小完全在可接受范围内。小模型完全不够打RT-1-X和Octo这种几千万参数的模型在强泛化任务上成功率普遍只有百分之二三十基本没法实用。通俗解释这就像考试RT-2-X是个550斤的大胖子学霸OpenVLA是个80斤的普通体型学霸结果门门科目OpenVLA分更高只有最偏的冷门题胖子稍微多对两道。性价比差了不是一点半点。4.2 Google机器人平台分布内与分布外双测Google机器人平台测试了12个任务分为两类分布内训练数据里见过类似的物体和任务分布外完全没见过的物体、场景、指令结果如下图所示图4Google移动操作机器人评测结果。左为平均成功率中为分布内任务右为分布外泛化任务。出处原文Figure 4数据汇总平均成功率OpenVLA 85.0% vs RT-2-X 78.3% vs Octo 26.7% vs RT-1-X 33.3%分布内任务OpenVLA 88.0% vs RT-2-X 72.0%分布外任务OpenVLA 82.9% vs RT-2-X 34.3%最夸张的是分布外泛化OpenVLA只掉了不到5个点而RT-2-X直接腰斩从72%掉到34%。这说明OpenVLA的泛化鲁棒性比闭源模型强得多。五、下游适配微调与轻量化落地通用模型再强也得能适配自己的机器人、自己的任务才算能用。这部分实验回答两个核心问题微调效果怎么样消费级显卡能不能跑5.1 全量微调对比吊打从零训练测试在Franka机械臂的7个任务上做微调对比三类方法Diffusion Policy从零开始训的当前最优模仿学习方法Octo开源通用策略微调OpenVLA本文模型微调结果如下方法单指令任务平均多指令任务平均整体平均Diffusion Policy61.0%32.7%45.4%Octo微调52.4%40.1%46.2%OpenVLA微调63.8%53.7%58.3%表2Franka平台微调任务成功率对比出处根据原文Table 7整理结果分析简单任务各有千秋单一物体、单一指令的简单任务Diffusion Policy和OpenVLA差不多毕竟扩散模型在单任务精度上确实有优势。复杂任务拉开差距多物体、多指令、需要语言理解的复杂任务OpenVLA比Diffusion Policy高出21个百分点。这就是预训练的威力——大模型见过的场景多理解语言指令更准。整体提升20.4%平均下来微调后的OpenVLA比从零训练的Diffusion Policy成功率高20.4%是目前数据高效模仿学习的新标杆。5.2 参数高效微调消费级显卡也能训全量微调7B模型需要大显存服务器普通人玩不起。作者测试了LoRA低秩适配这类参数高效微调方法结论非常乐观LoRA只训练不到1%的参数就能达到全量微调95%以上的性能其他PEFT方法比如前缀微调、适配器效果都比LoRA差不少。这意味着什么一张24G显存的消费级显卡比如RTX 4090就能给OpenVLA做微调适配自己的机器人任务。这在以前是想都不敢想的事。通俗解释全量微调就像让学霸重新从小学学起费钱费时间LoRA就像给学霸补一门专业课只学新知识旧知识不动花很少的时间就能考高分。5.3 量化推理显存砍半性能不掉推理侧也做了轻量化验证4位量化、8位量化对成功率几乎没有影响但能大幅降低显存占用、提升推理速度。不同显卡上的推理速度如下图所示图6不同型号GPU上的推理速度对比单位为每秒输出动作数。蓝色为bfloat16精度深蓝色为8位量化绿色为4位量化。出处原文Figure 6关键数据RTX 4090上bfloat16精度就能跑到6Hz完全满足机器人闭环控制的要求4位量化后显存占用从15GB降到不到8GB普通游戏本都能跑服务器级H100上能跑到每秒5个以上动作延迟完全可控。六、核心代码实现下面给出基于HuggingFace的OpenVLA核心推理代码与LoRA微调代码可直接用于实际部署。6.1 开箱即用推理代码importtorchfromtransformersimportAutoModelForVision2Seq,AutoProcessorfromPILimportImage# 加载模型和处理器model_nameopenvla/openvla-7bprocessorAutoProcessor.from_pretrained(model_name,trust_remote_codeTrue)modelAutoModelForVision2Seq.from_pretrained(model_name,trust_remote_codeTrue,torch_dtypetorch.bfloat16,load_in_4bitTrue# 开启4bit量化显存不够就打开).to(cuda)# 准备输入imageImage.open(robot_observation.jpg)# 机器人摄像头图像instruction把红色的瓶子放进锅里# 构造提示词promptfWhat action should the robot take to{instruction}? A:# 预处理输入inputsprocessor(prompt,image).to(cuda,dtypetorch.bfloat16)# 预测动作withtorch.no_grad():action_tokensmodel.predict_action(**inputs)# 反解为连续动作actionprocessor.decode_action(action_tokens)print(f预测7维动作:{action})# 输出格式: [delta_x, delta_y, delta_z, delta_roll, delta_pitch, delta_yaw, gripper]6.2 LoRA微调核心代码importtorchfromtransformersimportAutoModelForVision2Seq,AutoProcessorfrompeftimportLoraConfig,get_peft_modelfromdatasetsimportload_dataset# 加载基础模型model_nameopenvla/openvla-7bprocessorAutoProcessor.from_pretrained(model_name,trust_remote_codeTrue)modelAutoModelForVision2Seq.from_pretrained(model_name,trust_remote_codeTrue,torch_dtypetorch.bfloat16,load_in_4bitTrue).to(cuda)# 配置LoRAlora_configLoraConfig(r16,lora_alpha32,target_modules[q_proj,v_proj],# 只微调注意力的Q/V矩阵lora_dropout0.05,biasnone,task_typeCAUSAL_LM)modelget_peft_model(model,lora_config)model.print_trainable_parameters()# 输出: trainable params: ~0.1% of all parameters# 加载自定义数据集datasetload_dataset(your_custom_robot_dataset)# 训练配置training_argsTrainingArguments(output_dir./openvla-lora-finetuned,per_device_train_batch_size4,learning_rate2e-5,num_train_epochs10,fp16True,logging_steps10,save_strategyepoch)# 开始训练trainerTrainer(modelmodel,argstraining_args,train_datasetdataset[train],data_collatorlambdabatch:processor([fWhat action should the robot take to{x[instruction]}? A:forxinbatch],[x[image]forxinbatch],actions[x[action]forxinbatch],return_tensorspt))trainer.train()# 保存LoRA权重model.save_pretrained(./openvla-lora-finetuned)代码说明推理代码支持4位量化单张消费级显卡即可运行LoRA微调仅训练极少量参数24G显存显卡即可完成7B模型的微调完整的训练、数据处理、部署代码可参考官方开源仓库。七、总结与展望核心结论开源VLA首次超越闭源标杆OpenVLA用1/7的参数量在29个任务上全面超越55B的RT-2-X把通用机器人策略的性能和可及性都推到了新高度。微调落地路径跑通从全量微调到LoRA高效微调再到量化推理整条落地链路都验证过了消费级硬件就能用不再是实验室专属玩具。设计经验可复用双路视觉编码器、微调视觉主干、分位数动作离散化、多轮训练这些最佳实践给后续做VLA的研究者踩平了很多坑。未来方向更大规模数据与模型现在还只有不到一百万条机器人数据未来数据量上去后更大的模型应该还能继续涨点多模态输入扩展现在只用了单目RGB未来可以加入深度图、力觉、语音等更多传感器输入强化学习对齐现在还是纯行为克隆未来结合RLHF或者在线强化学习有望进一步提升任务成功率和鲁棒性。总的来说OpenVLA不是终点而是开源通用机器人策略的一个坚实起点。它把高高在上的VLA技术拉到了普通人能碰得到的位置接下来整个领域的迭代速度肯定会越来越快。