本文是在阅读《OpenVLA:An Open-Source Vision-Language-Action Model》时记录的笔记,带有很强个人主观性,仅供参考。
前言
OpenVLA,主要解决的核心问题,是面对封闭式VLA的获取困难,以及缺少针对新任务而微调VLA的方法。
OpenVLA有几个特点:
- 基本方面:参数量70亿,开源,970k个来自真实世界集合的训练数据。
- 构建方面:基于Llama 2 语言模型,加一个融合的预训练特征的视觉编码器。
- 结果方面:
- 在原任务和泛化任务上均表现强劲。
- 参数量相比之下很小,而且可以通过特殊方法在消费级GPU上微调和部署。
基本介绍到这里。
总体核心思路
1 - 机器人学习策略的弱点:难以泛化到训练任务之外。
2 - 考虑已有的模型:语言模型和视觉模型的能力已具备泛化和更多能力。
3 - 进行思考:将语言视觉模型融合到机器人策略中,赋予泛化等更强能力。
已有的方法如PaLI,RT-2,已经展示了很好的泛化力和鲁棒性。
但如上文所述,仍然存在问题。
- 封闭,信息获取困难。
- 难以广泛通用,由于量级等原因。
于是有了OpenVLA。
一些知识
视觉语言模型(VLMs) :
根据图像和语言生成自然语言。
主要是将视觉编码器与语言模型连接起来。
通用机器人策略 :
其它的是额外加一个预测模型,这里主要说OpenVLA的。
将动作视为Token,直接让VLMs预测。("主要"------一行,😂)
VLAs :
简单说一下。
主要就是将VLMs扩展到VLAs,而现存模型的条件都苛刻,于是OpenVLA改进。
OpenVLA
VLM基础
VLM通常由一个视觉编码器,投影器,LLM组成。
- 视觉编码器:处理输入图像
- 投影器:将视觉编码器输出"投影"到语言空间
- LLM:接收投影和文本输入,进行推理。
在OpenVLA中,VLM的构建(Prismatic):
视觉编码器方面(6亿参数)
由两部分组成,SigLIP+DinoV2。两者分别处理,在通道维度上拼接。可以有效提升空间推理能力。
其中,研究人员发现不同于VLM训练时冻结视觉编码器,在VLA训练期间微调视觉编码器可以带来更好的效果。
Llama 2(70亿参数)
语言模型骨干网络。
MLP投影器(两层小型)
在决定使用哪个VLM时,研究人员通过对比 Prismatic ,IDEFICS-1 和 LLaVA 三种网络微调。结果显示Prismatic的效果最好。(也许是两个视觉编码器组成带来的空间推理能力的提高所导致的)
训练
本质上是对骨干网络(Llama 2)进行微调以适应机器人任务。
目标:
通过输入图像+语言指令,生成动作预测。
困难:
- LLM输出本质上为离散的Token,而机器人动作通常为连续值。
- 如何通过微调,将机器人动作放进LLM的语言空间中。
方法:
动作映射
将不同维度的机器人动作分别用256个离散Token进行对应。
对于每个维度,这256个离散的Token均匀分配在机器人维度上的动作区间。
(例如,机器人一个关节的旋转角度区间为10,20,这256个Token就将此区间平均分割,每个Token对应一段角度,大致是这个意思)
其中,对于每个动作维度,以训练数据中的1%~99%为总区间,以忽略异常值。
空间对应
于是机器人动作有若干个256个Token进行对应,接下来要把它们放进LLM的空间中。
OpenVLA直接采用覆盖的方法(原始的空Token不足对应),将LLM中使用率极小的Token覆盖为机器人动作Token。
训练数据
两个主要目的,多样化和高效微调。
以Open X-Embodiment数据为基础进行筛选处理。(加一些额外数据)
1):进行输入输出连贯筛选处理。
2):用Octo处理筛选后的数据,使它们数据混合权重合适。
其它:
- 关于图像分辨率,发现在效果相同情况下,224×224 px 比 384×384 px 训练时间小3倍,于是采用前者为图像分辨率。
- 关于训练轮数,在VLA训练中增加训练轮数有助于提升性能。(最终27轮)
- 关于学习率,采用2e-5最好。
实验
主要从三个方面进行评估:
- 对于多任务和泛化能力,与先前的策略相比如何。
- 在新任务机器人数据上微调后,与最先进的模仿学习方法比如何。
- 在参数微调和模型量化上,OpenVLA的性能和成本如何。
机器人任务实验评估
在BridgeData V2和Google机器人评估上,与RT-1-X、RT-2-X 和 Octo 进行对比评估。
结果,在测试任务泛化度高的情况下(更难),RT-1-X和Octo评估效果差RT-2-X和OpenVLA一大截。
在Google上,RT-2-X与OpenVLA效果相当。
在BridgeData V2上,OpenVLA更优于RT-2-X。
新任务机器人实验评估
在新任务上,与Diffusion Policy,Diffusion Policy (matched),Octo(微调)方法对比。(还有一个OpenVLA (scratch,非预训练),即直接在新任务上微调VLM,以测试预训练的OpenVLA的能力)
结果,在单指令任务上,Diffusion Policy类方法表现相当或优于OpenVLA。
在多样化任务上,OpenVLA预训练版表现更好。
而且综合单指令和多样化任务来看,OpenVLA的综合实力最强。
(所以将Diffusion Policy方法运用于OpenVLA以达到全面高效,可能是未来研究方向)
参数微调实验评估
比较
- 全量微调(所有权重微调)
- 最后一层微调(仅微调 Transformer 骨干网络的最后一层和词元嵌入矩阵)
- 冻结视绝微调(除视觉编码器外其它微调)
- 夹微调(仅微调视觉编码器、词元嵌入矩阵和最后一层)
- LoRA微调(低秩适应技术)
结果:在冻结视觉的所有微调中效果较差。
夹微调的效果更佳,成本也更小。
LoRA在成本和性能间取得了最佳平衡。
- 性能上,与全量微调相当。
- 成本上,在单张A100上用10-15小时完成微调。
模型量化实验评估
通过为服务LLM开发的现代量化技术进行测试,以bfloat16精度处理OpenVLA,进一步测试8位精度与4位精度的推理速度与内存占用。
结果,以bfloat16精度处理的OpenVLA能部署于16GB的GPU上。
进一步,在用于测试的A5000上,8位精度仅能以1.2Hz的频率运行,这极大影响了性能。
而4位精度在与bfloat16推理性能相似的情况下,能以3Hz的频率运行。
原论文后续部分还提供了额外实验和具体实验的细节。
总结
OpenVLA做到的事情
- 先进,在目标任务,泛化能力上媲美和超越先前模型。
- 开源,解决了模型封闭而带来的各种不方便。
- 迁移,对新任务的适应能力强大。
- 使用,通过量化可在消费级GPU上部署使用。
局限与未来
- 单图,少模态输入。在未来可以探索多图和多模态输入。
- 进一步提高推理效率。
- 进一步提高成功率。
- VLM的最佳大小,融合训练数据集的影响,各种视觉特征的效果等问题的探索。
代码+设备
开源地址:你好👋
基础的 OpenVLA 需要 15GB 的显存,并且在一块 NVIDIA RTX 4090 GPU 上能以大约 6Hz 的频率运行。
官方还提供了一个远程 VLA 推理服务器,允许向机器人实时远程流式传输动作预测。即在上链接中。