做机器人控制、视觉语言模型这一块的朋友,对RT-2应该都不陌生。这个工作有个全称:Vision-Language-Action Models Transfer Web Knowledge to Robotic Control,翻译过来就是“用视觉-语言-动作模型把互联网知识迁移到机器人控制”。说实话,我第一次看到这个标题的时候,第一反应是“又来了个堆参数的大模型”,但真正读完以后,它确实是整个具身智能方向绕不开的一个里程碑。如果你在做抓取规划、模仿学习、机械臂端到端控制,或者单纯想搞明白“大模型到底怎么指挥机器人动起来”,这篇拆解应该能帮到你。
我会尽量不讲废话,直接说清楚RT-2解决了什么问题、核心设计怎么理解、如果要照着做一个类似VLA模型,有哪些可以落地的方案和坑。
1. 从大语言模型到机械臂:RT-2到底在解决什么问题
1.1 为什么传统机器人方案缺少“世界知识”
先聊聊RT-2出现之前,机器人操作的主流做法。
一类是传统的感知-规划-控制流程:用目标检测或位姿估计拿到物体的位置和姿态,然后用运动规划器(比如RRT、CHOMP)在机械臂的运动空间里算出轨迹,再交给底层控制器执行。这套方案的问题在于,感知模块只能识别它被训练过的物体类别,遇到没见过的物体或者背景稍微变一下,识别就很容易崩,更不用说理解“这个物体是用来干嘛的”这种语义信息。
另一类是端到端模仿学习,代表性工作包括ACT、扩散策略等。它们直接把相机图像和机械臂的关节状态输进一个神经网络,输出动作序列。这类方法在单一任务上效果很好,但严重依赖大量专家示范数据,而且每一个新任务基本都要重新收集数据、重新训练。你让它在红色方块杯子里抓积木,换个场景它可能就完全不会了。
这两类方案共同缺少的东西,就是我们日常说的“常识”。比如一个物体软不软、能不能夹起来、什么工具适合做什么事,这些知识很难靠几万条机器人轨迹学出来。RT-2的出现,本质上是想把互联网上海量的图文知识利用起来,让机器人不只是“会执行动作”,而是“知道该怎么做才合理”。
1.2 RT-2的核心思路:把控制任务当成多模态生成任务
RT-2的核心思路,我觉得可以概括成一句话:把机器人的动作也变成一种“语言”,让视觉语言模型直接生成动作。
传统VLM的任务是看图、读文本,然后输出文本答案。RT-2做了一件很聪明的事:在输出词表里增加了“动作Token”。每个动作Token对应机器人一个动作维度的离散取值,比如末端执行器的位置增量、旋转增量、夹爪开合量,等等。这样一来,模型接收的输入是“当前相机图像 + 语言指令”,输出的是一连串混合了文本 Token 和动作 Token 的序列。
为什么这能迁移Web知识?因为互联网图文预训练已经给模型塞进了海量视觉语义——物体的类别、颜色、形状、功能、“用锤子敲钉子”之类的常识。当机器人任务也需要模型观察图像、理解指令、做出决策时,这些语义知识就被激活了。举个例子,网上有大量“把香蕉放到盘子里”的图文描述,模型虽然没有真的操作过机械臂,但它见过“香蕉”和“盘子”的空间关系;当机器人看到桌上有一个香蕉和一个空盘子时,它就能推测出“应该把香蕉放到盘子里”。
换句话说,RT-2让机器人控制从“识别物体坐标”跳到了“理解任务语义”,这正是传统方案和RT-2这类VLA模型之间最大的区别。
2. VLA模型的核心机制:图像、文本、动作是怎么走到一起的
2.1 输入输出设计:一张图、一句指令、一串动作Token
要理解VLA,先看输入输出。
RT-2的输入非常简单,不需要额外的状态向量,也不需要人工设计的特征,就是一张或多张机器人相机图像,外加一句自然语言指令。输出则是动作序列,但这里的关键点是:动作不是通过回归连续值得到的,而是通过分类方式生成离散动作Token。
我习惯把这个过程理解为“把动作写成了句子”:比如指令是“把红色积木放到蓝色碗里”,模型内部实际生成的就是类似“动作类别=向前移动0.02米,旋转角=0.01弧度,夹爪=闭合”这样的离散Token序列。生成完成后,再把Token反量化成连续的动作值,发给底层控制器去执行。
这里有一个非常微妙的设计:动作Token和文本Token放在同一个词表空间里。为什么这么做?因为模型本身是Transformer结构,文本和动作都变成了Token,训练目标就可以统一为“下一个Token预测”。这就避免了你还要额外设计一个回归头、单独定义损失函数等繁琐操作。这个统一是把VLM轻松改造成VLA的关键一步。
2.2 动作离散化:为什么能行,又有什么代价
你可能会问:动作是连续量,把它量化成离散Token不是会丢失精度吗?确实会。
RT-2通常把每个动作维度的范围限制在一个区间里,然后分成若干个离散档位。比如把端点位置增量限制在[-0.5, 0.5]米区间,分成256个档位,每个档位对应一个Token ID。这样精度大概只有几毫米,对精细操作来说肯定不够。
但为什么还要这么干?因为离散化带来的收益远大于精度损失:模型可以直接用交叉熵损失训练,计算简单、收敛稳定;同时,语言模型天然擅长生成离散符号,这让“动作生成”可以复用大模型强大的先验知识。而且实际运行频率通常不高,几毫米的精度损失在一个低速度的操作任务中是可以接受的。
如果你要复现一个类似VLA的模型,动作量化方式需要特别注意。分区太细,词表膨胀,训练变难;分区太粗,机器人动作粗糙。我见过一些开源项目把每个维度设成至少256档,这是一个相对平衡的中间值。
3. 复现RT-2风格的模型:架构选型和训练流程
3.1 数据准备与动作Token化
RT-2不是从零训练的,而是站在了大规模预训练VLM的肩膀上。它最强的版本用了约550亿参数的PaLM-E,但也有5B、0.1B等更小的变体。对普通团队来说,从零复现这么大的模型不现实,但我们可以借鉴它的数据组织方式和训练范式。
我整理了一套比较实用的做法:
- 数据来源一:互联网图文数据,包括图像分类、图文描述、视觉问答等。这部分数据量很大,目的是保留模型的视觉语言能力。
- 数据来源二:机器人真实轨迹数据,每一帧图像配上语言指令和该时刻的动作值。这部分数据量较小,但每一条都要保证质量。
- 把机器人的动作离散成Token,与文本Token一起构造为训练样本。
这里有个关键点:不是把机器人数据和互联网数据简单拼在一起就行,而是要对每一条机器人数据做“文本化”。比如一条轨迹数据可能是“前进、向左、夹爪闭合”,我们要把它按照设计好的动作编码规则转换成数字ID序列,同时保留图像和语言指令。
3.2 模型选型:不是非得用千亿参数
如果你没有几百张GPU卡,我的建议是:不要试图从头复现RT-2。可以从开源VLM选一个作为底座,比如Qwen-VL、LLaVA,或者专门做机器人而训练的OpenVLA、RT-X系列。这些模型的视觉编码器基本都能提取丰富的语义特征,语言模型也能理解复杂的指令。你只需要在输出层加上动作Token,然后做微调。
我的经验是,如果任务比较简单,比如桌面抓取、二指夹爪操作,7B到13B的模型就够用。模型太大会带来推理延迟和部署成本,而机器人控制对延迟非常敏感。先跑通一个7B模型,把整个链路理顺,后续再根据效果决定要不要换更大的底座。
3.3 训练流程与参数设置
这里我给出一个简化版的训练流程,供参考。
- 准备数据集:收集至少数千条高质量机器人轨迹,每条轨迹分成多个样本,每个样本对应的“一个观察+一条语言指令+一个动作Token”。
- 混合数据:按一定比例混合互联网图文数据和机器人数据。推荐从10%左右的机器人数据占比开始调,如果模型输出动作不稳定,就慢慢提高到30%甚至更高。
- 训练:用交叉熵损失,对文本Token和动作Token一起做预测。实际训练中,建议对底座模型使用较低的学习率,比如1e-5,防止灾难性遗忘;对新增的动作Token Embedding,可以用稍高的学习率,比如5e-5。
- 另加一个约束解码:推理时,限制模型必须先生成动作Token,再生成其他文本Token,避免模型突发奇想输出长文本描述。
有朋友问我需不需要对底座模型做部分冻结。我的看法是:如果你数据量很大,可以全量微调;如果数据量不足,最好冻结视觉编码器和语言模型的大部分层,只训练动作Token相关的参数和最后几层。全量微调很容易把预训练的常识忘掉,那就失去用VLM做机器人的意义了。
3.4 动作空间设计与归一化
动作空间的设计直接影响模型的学习难度。最常见的是末端执行器位姿增量:位置x、y、z,旋转roll、pitch、yaw,以及夹爪开合量,一共7个维度。训练前要把所有动作值归一化到[-1, 1]之间,再离散成Token。推理时执行一个带平滑的控制器,不能把每个Token对应角度直接硬怼上去,否则机械臂会抖得很厉害。可以在底层叠加一个低通滤波或插值器。
4. 实验效果与场景价值:这些提升落在哪里
4.1 与RT-1的对比:多出来的到底是什么
RT-2论文里最直观的对比是RT-1。RT-1也是一个视觉语言动作模型,但它不是用大规模VLM做底座,而是在相对较小的Transformer上,直接用机器人轨迹数据训练。RT-1在已见过的任务、已见过的物体上表现不错,但一旦任务描述变化、物体外观变化,成功率就直线下降。
RT-2因为有了互联网图文预训练的底子,在“语义泛化”上明显更强。比如模型可以通过“桌上有苹果、小刀、砧板,把苹果切一下”这样的抽象指令,在机器人数据集里原本没有类似组合的情况下,也能推理出合适的动作顺序。这种能力在RT-1上很难看到。
我印象比较深的是论文中提到的“香蕉放到盘子里”这类任务。机器人训练数据里可能没有“盘子”这个物体,但互联网图文语料里有大量关于盘子和香蕉的图文描述,模型通过这种跨模态知识完成迁移。
4.2 涌现与泛化:模型学会了“推理”
很多做机器人的人最关心的不是“模型能不能熟练掌握训练过的任务”,而是“模型面对未知场景能不能合理应对”。RT-2在这一点上打开了新的空间。
一个典型的例子是“把垃圾扔到垃圾桶里”。模型需要先识别哪个物体是垃圾,识别垃圾桶,还要做出“拿起来—移动—放下”的动作。这些子技能可能在其他任务中学过,但组合在一起是全新的。RT-2的高版本模型能做到这种组合,体现出的就是在视觉语言大模型里已经存在的“推理”能力,被迁移到了动作空间。
这给后续研究带来一个非常重要的启示:既然“推理能力”能迁移,那么机器人领域就不必再在“教它认识新物体”上死磕,而是更多考虑如何“把常识转化成动作”。
4.3 可以落地的应用场景
从应用角度看,RT-2这类VLA能落地的场景主要有三个方向。
- 柔性制造/物流分拣:物品种类多、形状不规则,使用传统视觉方案需要不停添加模型,VLA则能根据指令快速适配新物料类型。
- 家庭服务机器人:环境非结构化、用户指令口语化,“帮我把桌上的水杯拿过来”这种任务,需要大量语义理解,VLA天然有优势。
- 无人仓库/智能商业:处理货架上随机摆放的商品,不仅要抓取,还要理解“取最上面的那包”这类空间语义。
当然,这些场景还需要解决安全、实时性、数据采集成本等问题,但方向已经明确了。
5. 做VLA必踩的坑:实战经验与排查技巧
5.1 机器人数据质量是最大的拦路虎
我自己在做类似项目时最大的体会是:VLA效果不行的“锅”,大部分都在数据上,而不是模型上。
机器人轨迹数据通常来自遥操作,操作员手抖、动作习惯、场景光照变化都会影响数据质量。不要以为只要记录了“图像+动作”就行,还必须做一系列预处理:
- 剔除失败轨迹,或者至少把失败轨迹单独标注;
- 对动作序列做滤波和平滑,去掉高频抖动;
- 对每一条轨迹重新采样,保证时间间隔一致;
- 数据增强,包括颜色扰动、随机裁剪、亮度变化,防止模型过拟合到某个固定机械臂视角。
还有一个容易忽略的问题:动作标签和图像之间可能有几帧延迟。如果模型学到的是“上一帧图像对应下一帧动作”的关系,在真实部署时会因为延迟导致控制不稳定。我的经验是所有数据集至少要对齐帧号和动作时间戳,必要时重新标定。
5.2 训练不稳定:损失降不下去或Loss很大
如果你在微调VLM时发现Loss不收敛,先看动作Token的分布是否均匀。动作数据里往往大量集中在“原地不动”这类零动作上,模型很快就学会输出中间值,但实际一动就不对。解决办法是给动作Token的损失加权,或者对零动作样本进行下采样。
还有一种情况是模型训着训着开始“自言自语”,只生成文本描述而不生成动作Token。这通常是混合训练比例失衡,互联网图文数据太多,机器人数据太少。可以适当提高机器人数据比例,或者在训练时对文本Token和动作Token分别设置不同的损失权重。我通常把动作Token的损失权重设成文本Token权重的1.2到1.5倍。
5.3 部署延迟和稳定性问题
理论上VLA模型在GPU上推理一次可能需要几百毫秒,而机械臂控制频率往往要求30Hz以上。直接拿大模型输出做实时控制很容易“卡死”。
实际部署时建议这样处理:
- 先用大模型做低频决策,比如每秒2到5次,生成目标位置或动作序列;
- 再用传统运动规划器或PID控制器做高频跟踪,例如在两次VLA决策之间做插值;
- 对推理结果做“动作过滤”,如果检测到动作Token解码后的值明显异常(比如瞬间速度过大),丢弃并采用上一次合理动作。
模型量化也很关键,用FP16、INT8或TensorRT优化后,7B模型在消费级显卡上可以跑到每秒几帧,基本满足低频决策需求。不要一上来就用FP32,推理时间会翻几倍。
6. 从RT-2到你的项目:三条可落地的建议
6.1 没有千卡集群,怎么借助开源VLM
如果你不是大厂,完全可以从开源VLM开始。目前已经有不少基于RT-2思路的开源项目,比如OpenVLA,官方提供了模型权重、训练代码和数据集格式。它用LLaVA架构做基础,底座的视觉语言能力已经不错,你只需要收集自己场景的机器人轨迹数据,按官方格式转成数据集,然后做LoRA或全量微调即可。
相比从零训练,这种做法的成本低很多,一台8卡A100就能把7B模型微调起来。如果只有单卡,用LoRA也能跑,只是效果和稳定性上需要多调几版。
6.2 先用模拟环境降低验证成本
不要在真实机械臂上直接调试,风险高、效率低。我建议先在MuJoCo或Isaac Sim里搭一套简化版的VLA验证环境,把物体和指令随机化。模拟环境里失败也不会碰坏设备,能快速迭代数据配比、学习率、动作量化等超参数。确认模拟环境稳定后,再把模型移植到真机上做“真-实迁移”。
真实环境与模拟环境最大的差异是图像分布。建议在模拟器里加域随机化,把光照、纹理、物体位姿做成随机化的,能很大程度减少化到真实环境的落差。
6.3 后续扩展方向
VLA这个方向还在快速演进。RT-2之后,已经有越来越多工作尝试把动作预测改成连续动作,比如用扩散模型生成动作轨迹;也有人尝试加入多传感器模态(深度图像、触觉、力觉),让机器人可以处理更精细的装配任务。未来还有一条主线是跨本体学习:用多个机器人共享一个VLA模型,结成类似Open X-Embodiment式的数据联盟,让不同形态机器人都能从彼此的轨迹中受益。
我在实际做VLA项目时最大的感受是:RT-2教会我们最重要的事情,不是“模型越大越好”,而是“如何让已有的视觉语言知识为机器人的动作服务”。很多团队喜欢把时间花在堆算力、堆参数上,但真正决定项目能不能落地的,往往是数据的质量、动作空间的定义,以及推理延迟的控制。与其盲目追求复现原版RT-2的全部能力,不如先用一个轻量级底座,把整个“视觉—语言—动作”的训练闭环跑通,再一步一步往里面加知识。这个路线,无论是做科研还是做产品,都会稳妥得多。