前言
机器人策略这几年进展很快,ACT、扩散策略这些方法把动作预测这件事往前推了一大步。但真要做成能泛化的系统,单靠一个 policy head 还不够,很多团队最后还是会把预训练视觉语言模型拉进来。RoboFlamingo 这类早期工作多用 LSTM 或 MLP 兜底,结构能跑,但离'能迁移到新任务'还有段距离。OpenVLA 算是更完整的一次尝试。
最近 π0 的出现也把通用机器人控制这条路讲得更清楚了:同一套策略算法,可以换着机械臂用。这个方向现在很明确,基本就是'先预训练,再针对机器人任务微调'。OpenVLA 出得更早,虽然不是最新的那个,但它把架构、数据和训练方式都讲得比较透,拿来拆一遍很有价值。
OpenVLA 的定位
2024 年 6 月,斯坦福大学、UC Berkeley、Google DeepMind 等机构发布了 OpenVLA,对应论文是《OpenVLA: An Open-Source Vision-Language-Action Model》。它的目标很直接:借用 CLIP、SigLIP、Llama 2 这些基础模型已经学到的通用表示,让机器人策略别只会死记训练集里的动作。
和闭源的 RT-2 比,OpenVLA 主要解决两件事。
一是结构和训练流程更透明,能看清楚它到底怎么做动作预测。二是更适合落到消费级硬件上,尤其是在换机器人、换数据集时,不用重新摸一套完全黑盒的配置。
它的思路其实不复杂:把动作也当成 token,让语言模型直接生成。这个做法看起来朴素,但好处是和 VLM 的训练范式接得很顺,扩展起来也省事。
模型结构
OpenVLA 建在 Prismatic-7B VLM 上,核心就三块。
- 视觉编码器:SigLIP 和 DinoV2。图像块先分别过两个编码器,再把特征在通道维拼起来。DinoV2 对空间推理确实有帮助,机器人控制里这点很实用。不过后面像 π0 只用 SigLIP 也跑得不错,所以它不是硬性依赖,更像是一个增益项。
- 投影器:两层小型 MLP,负责把视觉特征映射到语言模型的输入空间。
- 语言模型骨干:Llama 2 7B。
作者选 Prismatic,而不是 LLaVA 或 IDEFICS-1,原因也比较现实:SigLIP + DinoV2 的组合在空间理解上更稳,代码库本身也更模块化,后续改造成本低。
训练上有几个细节比较值得记一下。
- 输入分辨率用 224×224。384×384 没带来明显收益,训练时间却直接涨了三倍,这笔账不划算。
- 训练轮次跑得比较久,最后到了 27 个 epoch。VLA 这类任务通常就是要多看数据,动作 token 准确率超过 95% 后才开始稳定。
- 学习率固定在 2e-5,没做 warmup,效果反而最好。
动作离散化怎么做
OpenVLA 最关键的一步,是把连续动作变成离散 token。这样做的好处是,训练和推理都能直接复用 LLM 的 token 生成流程,不用再给动作分支单独设计一套输出头。
它参考 Brohan 等人的做法,把每个动作维度切成 256 个区间。问题在于,Llama 分词器里专门留给微调的特殊 token 只有 100 个,不够塞下 256 个动作 token。于是作者干脆用词表里频率最低的 256 个 token,也就是最后那一段 token,来承载动作。
区间边界不是按最小值和最大值直接拉满,而是取训练数据中第 1 和第 99 分位数之间的范围。这个选择很实用,能把异常动作甩出去,不然少数极端值会把离散区间拉得很宽,正常动作的分辨率就被稀释了。
数据集和训练
训练数据来自 Open X-Embodiment,里面有 70 多个机器人数据集,总共大约 200 万条轨迹。这个规模不小,但原始数据不能直接喂进去,还得先筛一遍。
OpenVLA 的筛选思路有两条。
首先,输入输出要尽量一致,所以它只保留至少有一个第三人称摄像机的操作数据集,并且只做单臂末端执行器控制。这样模型看到的视觉输入和动作空间不会太飘。
其次,要平衡不同 embodiment 的权重。这里借用了 Octo 的数据混合策略,简单说就是让低多样性数据少占点比重,把任务和场景更丰富的数据往前放。
DROID 数据集也试过接进来,但后期发现动作 token 准确率不太理想,最后还是移掉了。这个处理挺务实,训练里有些数据不是越多越好,混进去只会拖模型后腿。
基础设施方面,OpenVLA 在 64 张 A100 上训练了 14 天。推理时,bfloat16 精度大约占 15GB 显存,在一张 NVIDIA RTX 4090 上能跑到约 6Hz。再做量化,内存还能继续降,而且性能基本不受影响。
实验结果
和 RT-2 对比
在 BridgeData V2 和 Google Robot 上,OpenVLA 在大多数任务里都跑在前面。它的参数量只有 7B,而 RT-2-X 是 55B,差了一个数量级,但总体成功率反而更高。RT-2-X 在语义泛化上略占优势,这和它更大的互联网预训练规模有关,算是正常现象。


