OpenVLA:拆开一台机器人大脑
Kim, Pertsch, Karamcheti et al. · Stanford / UC Berkeley / TRI / Google DeepMind 等 · 2024 · arXiv:2406.09246
2024 年夏天,斯坦福的一群研究者把一台机械臂的"大脑"整个放上了网——权重、代码、训练流程,全部公开。这台 70 亿参数的机器叫 OpenVLA。它在 29 个真实机器人任务上,打赢了谷歌 550 亿参数的闭源巨人 RT-2-X:平均高出 16.5 个百分点,参数只有对方的七分之一。但这篇文章真正想带你做的事只有一件:把它拆开。这是第一台所有人都能拧开螺丝的 VLA(Vision-Language-Action「视觉-语言-动作」模型)。SigLIP、DINOv2、LoRA、量化——这些名字你一个都不用记,每个零件你都会亲手摸到、拔下来、再装回去。
一条看起来像定律的线
先立一条"常识"。2023 年,谷歌的 RT-2 让整个领域相信了一件事:机器人模型跟语言模型一样,越大越聪明。看考试成绩:3500 万参数的 RT-1-X 考 18.5 分,9300 万的 Octo 考 20 分,550 亿的 RT-2-X 考 50.6 分——参数每翻十倍,分数就往上蹿一截。这条线看起来像物理定律。
考题是真刀真枪的:一台 WidowX 机械臂站在厨房水槽前,17 个任务、每个 10 次、共 170 次实测——把茄子放进锅里、把杯子放进水槽、从两个物体里认出"红瓶子"。这只茄子接下来会陪我们走完全文。
现在,一个 7B(70 亿参数)的开源模型来考同一张卷子。在图中那条虚线竖标上点一下,押下你猜的分数——按刚才那条"定律",它该考多少?
拆机台:每个零件的出厂铭牌
卸下外壳,里面比想象的朴素:两只眼睛、一个大脑、一个翻译头,外加一个不起眼的接头。点击图里的每个零件,看它的出厂铭牌——谁造的、原本是干什么的:
看完铭牌你会发现一个安静的事实:没有一个零件是为机器人发明的。两只"眼睛"原本是看网图的,"大脑"原本是聊天的,连把它们组装成整机的底座 Prismatic,也只是斯坦福的一个通用 VLM(Vision-Language Model「视觉语言模型」,会看图说话)。OpenVLA 团队真正"自造"的东西是配方:怎么选零件、喂什么数据、怎么教它把话变成动作。
"完全开源"的边界在哪?(值得较真)
论文脚注里自己划了这条线:OpenVLA 的模型权重、训练代码、数据配方全部公开,任何人可复现、可微调。但它站在三个底座模型(SigLIP、DINOv2、Llama 2)之上——这三位的权重开放,训练数据和训练代码并不公开。所以严格说,OpenVLA 是"在开放权重之上的完全开源"。相比之下 RT-2-X 连权重都不放,只能通过 API 调用。开放是个光谱,OpenVLA 站在了当时机器人领域最开放的那一端。
然而第一个配方决定就很怪——好好的一台机器,为什么要装两只眼睛?
两只眼睛:认得出,和放得准
因为"看"其实是两件事。你网购认货,靠的是语义——这是茄子,不是紫皮洋葱;你倒车入位,靠的是空间——离右边还有二十公分。这两种"看",在 AI 里恰好由两条不同的训练路线养成:
SigLIP「语义眼」:谷歌造,看过几十亿"图-文字"配对,擅长认概念
DINOv2「空间眼」:Meta 造,一个文字标签都没读过,纯靠对比图像自学,擅长边缘、深度、"东西在哪"
底座 Prismatic 把两只眼的输出逐通道拼在一起交给大脑。这不是拍脑袋:团队先让三个候选底座比试过,只会认图、空间感差的底座,在多物体任务上明显吃亏(细节见下方折叠)。那么空间眼到底值几分?论文做了残酷的实验:把 DINOv2 拔掉,只留语义眼,重考八道题。先押注:哪道题会掉得最惨?
选底座的比试 + 一个反 VLM 常识的发现(论文 3.4 节)
① 底座比试:在水槽环境的五个语言接地任务上,LLaVA 比 IDEFICS-1 的绝对成功率高约 35 个百分点(后者常抓错物体);换成双眼的 Prismatic 又比 LLaVA 再高约 10 个百分点——论文将这一步归功于 SigLIP-DINOv2 融合带来的空间推理。② 反常识:VLM 界的惯例是训练时冻结视觉编码器(保护网图上学来的稳健特征),但 VLA 恰恰相反——冻结视觉眼的策略平均成功率 46.7%,放开微调则达 80.0%(论文 Table 10 的对照设置)。解释:预训练视觉特征描述"图里有什么"够用了,但"夹爪要伸到哪一毫米"需要眼睛为控制重新调焦。这也是后面微调实验里"只调最后一层"惨败的伏笔。
动作是 256 个新词,但边界画在哪?
穿墙的办法继承自 RT-2(读过我们那篇 VLA 总图的话,你见过"动作离散化"这一幕):把每个连续的动作维度切成 256 档,每档当成一个"新词"。Llama 的词表只预留了 100 个空位给新词,不够用——团队干脆征用词表里 256 个最不常用的词,把旧含义整个覆写。从此在这台机器嘴里,某个冷僻的词条不再是什么拉丁词缀,而是"手腕向左 3 毫米"。它说一句七个词的"话",机械臂就动一下(Δ位移 ×3、Δ旋转 ×3、Δ夹爪 ×1)。
但有个只有真动手训练才会撞上的细节:256 档的边界画在哪?RT-2 的画法:从数据的最小值切到最大值。听起来天经地义——直到 97 万条轨迹里混进一条疯轨迹,比如某次采集时机械臂猛甩了一下。拖动滑块,把那条疯轨迹的幅度拉大,看两种画法各自的下场:
看第一条刻度尺:最小-最大画法被迫把 256 档拉长去罩住那一次猛甩,真实动作挤在一起的区间只分到十几档——游标卡尺活活变成了木工尺。OpenVLA 的画法:边界切在数据的 1% 和 99% 分位数上,两头各裁掉 1% 的极端值,疯轨迹被整个请出定义域,256 档几乎全部花在真实动作上。一条离群轨迹就能吃光全部动作精度——除非分桶时学会不理它。
这个细节值几分,论文没有单独消融;但它引出了一个更大的主题——97 万条轨迹这锅米,远比想象的难淘。
97 万条轨迹,和一台僵住的机器人
训练数据来自 Open X-Embodiment「开源机器人数据联盟」:70 多个数据集、200 多万条轨迹的大杂烩。OpenVLA 没有照单全收,淘了三遍米:先只留"至少有一个第三人称相机、单臂末端控制"的数据集,保证输入输出格式一致;再借 Octo 的配比经验,给场景任务多样的数据集加权、给单调的降权;最后得到 97 万条的配方(配料表在下方折叠里)。中途还有一次撤单:DROID 数据集掺了 10% 进去,模型始终学不动,训练的最后三分之一干脆把它撤了——像面团里嚼不烂的硬粒。
米淘完了还有虫。团队在 BridgeData V2——就是那个水槽厨房——里发现了一个诡异的 bug。先别读下一段。点「开始任务」,看用原始数据训出来的模型会干什么:
97 万条轨迹的配料表(论文 Table 3 节选)
| 数据集 | 占比 | 数据集 | 占比 |
|---|---|---|---|
| Bridge(伯克利厨房) | 13.3% | Stanford Hydra | 4.4% |
| Fractal(谷歌 RT-1 数据) | 12.7% | Language Table | 4.4% |
| Kuka(谷歌抓取) | 12.7% | Taco Play | 3.0% |
| DROID(后撤掉,权重重分) | 10.0% | Furniture Bench | 2.4% |
| BC-Z | 7.5% | Roboturk | 2.3% |
| FMB | 7.1% | …另外 16 个小数据集 | 合计 ~20% |
训练本身也反常识:语言模型通常只过数据 1-2 遍(epoch),VLA 却要过 27 遍,直到动作词元准确率超过 95% 才见顶。总账单:64 张 A100 跑 14 天,约 21,500 A100-小时。
成绩单:巨人守住了哪个考区?
总分 70.6 对 50.6 你已经见过,有意思的是分科成绩。17 道水槽考题按"考什么"分成五个考区:视觉泛化(没见过的背景、干扰物、外观)、运动泛化(没见过的位置朝向)、物理泛化(没见过的大小形状)、语义泛化(没见过的物体和网络概念——比如"把可乐罐移到泰勒·斯威夫特的照片旁")、语言接地(一个场景两个物体,听指令挑对的)。全程 A/B 对照:同一道题、同一套摆位,模型轮流上场。
五个考区里,55B 巨人只守住了一个第一。先押注是哪个,再点开成绩单:
搬回家:算力、时间、性能的三角
"搬回家"的意思是:你有一台论文作者没见过的机器人(比如一条 Franka 机械臂),你给每个任务收集 10 到 150 条演示,微调 OpenVLA 教会它你的活。作为参照:从零训练的最强模仿学习方法 Diffusion Policy 在七个 Franka 任务上平均 48.5 分,微调后的 OpenVLA 67.2 分,而且是唯一一个所有任务都不低于 50% 的方法。预训练的分量再次现身——同一台底座不经 97 万条轨迹预训练直接微调,只有 43.4 分。
但"微调"背后是真金白银:全参数微调要 8 张 A100 跑 5-15 小时。把这个门槛打下来,是这篇论文第一次被正式当成研究对象的问题。最后一个实验台留给你,它把前面拆过的整台机器又搬了回来:选一种微调策略,再选一种推理精度,看三角怎么变。挑战:找到一套"单张 A100 训练 + 8GB 显存部署 + 成绩几乎不输全参数"的配置。
两个值得说破的发现藏在里面。第一,LoRA「低秩适配」——不动任何原有零件,在每层旁边贴一条小旁路、只训练旁路——用 1.4% 的可训练参数追平了全参数微调(68.2 对 69.7),训练开销从"8 张 A100"降到"1 张 A100、10-15 小时",八分之一的算力。第二,int8 之谜:把权重精度砍一半,成绩暴跌到 58.1;砍到四分之一(int4)反而完好无损(71.9)。谜底你在实验台上已经见到——罪魁不是数字精度,是速度:8-bit 的反量化开销让 A5000 显卡上的控制频率跌到 1.2Hz,机器人的手跟不上世界的节奏;在排除速度差异的对照实验里,int8 立刻恢复到 74.4。聊天机器人慢一点只是烦人,机器人慢一点就是错——它活在时间里。
透明这件事,本身就是贡献
回顾你这一路拆下来的东西:你押注过参数量与成绩的关系,看着趋势线断掉;你读过每个零件的出厂铭牌,发现没有一个是为机器人发明的;你拔掉一只眼睛,量出"放得准"值几分;你拉大过一条疯轨迹,看它吃光 256 档精度;你亲手让一台机器人僵住、又救活了它;最后你在算力-时间-性能的三角里,给它找到了一条搬进普通实验室的路。
这些实验,在 RT-2 时代只能是猜测——模型锁在机房里,消融无从做起,连"它为什么会僵住"都没人能查。OpenVLA 把 VLA 从一篇"只能仰望的论文"变成了一个"可以做实验的对象"。开源在这里不是道德姿态,是研究方法:能拆,才能问为什么;能问为什么,才有下一代。论文发布的权重、微调笔记本和训练代码,后来成了一整代开源 VLA 工作的起点。
杠精清单:这篇论文没告诉你的事(坦白从宽)
① 评测对自己有利吗?有这个成分。BridgeData V2 评测环境是 OpenVLA 作者自己搭建的复现版;RT-2-X 只能通过 API 参赛,还带着"取第二可能动作"的补丁。论文自己承认:大胜也部分来自更大的训练集(970k 对 RT-2-X 的 350k)和更干净的数据。在谷歌主场,两者其实打平。② 70.6 分能用吗?不能算部署级。论文明说可靠性通常低于 90%,离"放进你家厨房"还远。③ 6Hz 太慢。ALOHA 这类灵巧双臂平台要 50Hz,OpenVLA 目前追不上,精细动作也不如 Diffusion Policy 丝滑。④ 只有一只"眼睛的瞬间"。输入是单张第三人称照片,没有手腕相机、没有历史帧、没有本体感觉。⑤ 底层三个基础模型的训练数据并不公开(见第二节折叠)。⑥ 底座 VLM 的大小、联合训练的作用、最优视觉特征——论文把这些列为没钱做的开放问题,留给了社区。
如果你还没读过我们的 VLA 总图,那里有这台机器所属的整个物种谱系——大脑与小脑、数据饥荒、以及 RT-2 那记"动作也是语言"的惊雷;读过了,你现在多了一样总图给不了的东西:你摸过其中一台的每一颗螺丝。下一站,凉亭见。