ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

机器人模型 WM、WAM、VLA 概念解析与实战选型指南

机器人模型 WM、WAM、VLA 概念解析与实战选型指南

从去年开始,机器人领域的模型名词就有点“通货膨胀”的趋势:今天一个VLA,明天一个world model,现在又冒出个WAM。很多做机器人研究、或者想入行具身智能的朋友跑来问我,这些缩写到底什么关系,是不是换了个名字炒冷饭。我自己也花了不少时间把这些工作从头捋了一遍,从最早的video prediction,到RT-2这种端到端的大模型,再到最近π-VLA、NVIDIA Alpamayo这类新工作,慢慢发现一条比较清晰的线索:这三类模型本质上是在解决从“看到环境”到“想清楚怎么动”再到“真正把手脚动起来”的完整链条,只是各自的侧重点完全不同。

这篇内容我不打算做那种“逐篇论文复述”式的综述,而是想从从业者选型、训练、部署的真实视角,把World Model(WM)、World-Action Model(WAM)、Vision-Language-Action Model(VLA) 这三条技术路线的原理、差异、训练方法和适用场景拆开揉碎讲清楚。文末我也会放一些自己在实操中踩过的坑,包括评测基准怎么选、动作头怎么接、训练时loss为什么会突然飞掉这些细节。无论你是刚开始接触机器人大模型,还是已经在跑VLA训练了,这篇都值得看完。

1. 机器人模型的“三段式”全景图

1.1 从“看”开始,但看的不是一张图

很多初学者会把机器人的“感知”理解成“图像分类”,这是第一个需要纠正的认知。对机器人来说,视觉的目的不是告诉模型“这是个杯子”,而是要回答几个更棘手的问题:杯子在空间中的精确位置是多少?杯口朝哪个方向?我伸手过去之后,杯子的位置会不会变?我拿起杯子之后,它里面的液体会不会洒出来?

这些问题的共同点是:它们都需要模型对环境有一个“动态”的理解,而不只是“静态”的识别。世界模型(WM)解决的就是这个问题。WM的核心思路是把环境状态建模成一个随时间演化的序列,模型要学习的是状态之间的转移规律,也就是“如果我在时刻T看到这样的画面,并且做了某个动作,那么时刻T+1的画面大概会变成什么样”。

我用一个比较生活化的例子:你在开车经过十字路口时,看到一辆车打着左转灯慢慢靠向左侧车道。你的大脑会立刻预测出“它在下一个路口之前应该会向左拐”,并提前减速。这种预测能力不依赖于某个具体的交通规则,而是靠大量驾驶经验积累出来的“世界如何运转”的感觉。WM想用神经网络复现的,就是这种直觉。它不直接告诉机器人“该做什么动作”,而是给机器人构建一个“如果这样做,世界会变成什么样”的想象空间。

1.2 从“想”开始,语言模型带来的常识爆炸

有了对世界的理解之后,机器人还需要“推理”。这正是VLA中的语言模型组件发挥作用的地方。传统的机器人控制策略是“感知到动作的直接映射”,比如用视觉特征直接回归关节角度,这种pipeline在单一任务中很有效,但问题在于它没有任何“常识”。机器人不知道杯子通常是用来喝水的,不知道盘子应该端平而不是倾斜,更不会想到“如果我要拿桌上那瓶水,得先把挡在中间的遥控器挪开”。

语言模型恰好补上了这一环。预训练语言模型里包含海量的人类常识、物理知识、任务规划能力,这些知识从文本中来,却可以迁移到现实世界的任务中。VLA模型做的事情,就是把视觉信息“翻译”成语言模型能理解的token,让语言模型基于视觉和指令进行推理,最后再把推理结果“翻译”成机器人能执行的action token。

打个比方:VLA像是一个既看得见世界、又能用语言思考、还能直接动手的“全能型选手”。WM负责给它提供“世界直觉”,语言模型负责“逻辑推理”,动作解码器负责“肌肉执行”。三者各司其职,但最终目标是同一个。

1.3 三类模型边界速览

为了让大家有一个全局性的对照,我把三类模型的核心特征整理成了一个表格。

维度世界模型(WM)世界动作模型(WAM)视觉语言动作模型(VLA)
核心目标学习环境状态转移规律,预测未来在预测世界的同时保持一致的动作生成从视觉和语言指令直接映射到动作
典型输入历史观测帧(+动作)历史观测帧+动作序列图像+语言指令
典型输出未来观测/隐状态未来观测+动作序列动作序列(关节角度/末端位姿)
对因果关系的依赖强,本质是在建模因果强,动作和世界变化必须自洽中等,更多依赖数据统计相关
代表作方向Dreamer系列、IRIS等新兴方向,多家实验室在探索RT-2、OpenVLA、π-VLA、Alpamayo
训练成本中等,视频预测为主较高,需要动作与世界联合数据高,需要大量操作数据
核心强项样本效率高,能离线学习动作与物理规律更自洽跨任务泛化能力强,具备常识推理
核心短板无法直接生成精确动作尚无成熟稳定的训练范式数据依赖严重,推理延迟偏高

从表格能看出来,WM的侧重点在“理解世界的变化”,VLA的侧重点在“从指令到动作的映射”,而WAM更像是两者的交叉地带:它希望模型在生成动作的时候,同步预测这个动作会带来什么样的世界变化,从而保证动作本身是符合物理规律的。边界这个东西,在当前的研究阶段本来就比较模糊,很多模型是混合体,并不存在一个绝对干净的分类。但有了这个表格,至少在和别人讨论时不容易被名词绕晕。

2. 从“脑补世界”到“身体力行”

2.1 WM凭什么能预测未来

我先聊聊世界模型里最核心的一个概念——隐空间动力学。如果你看过Dreamer系列论文,会发现它们的训练过程大致分三步:先用一个图像编码器把高维的观测图像压缩成一个低维的隐状态向量;然后在这个隐空间里学习状态转移网络,通过输入历史隐状态和动作,预测下一步的隐状态;最后再用一个解码器把隐状态还原成图像,或者直接把隐状态喂给策略网络生成动作。

这种“先压缩再预测”的设计是有道理的。直接在像素空间里预测下一帧,计算量巨大而且容易产生模糊重影,因为像素级的预测需要处理大量细节(纹理、光照、物体的细微边缘),这些细节对决策来说反而无关紧要。而在隐空间里做预测,相当于让模型只关注“状态发生了什么关键变化”,省去了无关细节,训练效率和预测准确率都能大幅提升。

我在实际测试中也发现,直接用像素重建的WM,在小规模仿真环境(如CartPole、HalfCheetah)里跑得通,但一换到带视觉纹理的机器人操作环境就非常容易崩。原因是视觉噪声太大,比如背景中光照强度的细微波动都会被模型当成重要特征来学习,导致预测误差快速累积。后来我把视觉编码器换成预训练好的自监督模型,再把预测损失集中在隐空间上,训练稳定性才好转。做WM方向的话,这一步避不开。

2.2 WAM:让动作和世界的“因果”保持一致

WAM这个缩写目前还没有一个完全统一的定义,我看到过的说法就有“World-Action Model”和“Whole-Body Action Model”两种。这里我采用业界讨论中更主流的一种理解:World-Action Model,强调的是动作生成和世界变化之间的联合建模。换句话说,WAM不仅想知道“该做什么动作”,还要求模型能预演“这个动作做完之后,世界会变成什么样”,并且两者必须保持一致。

为什么这种一致性很重要?还是拿倒水这个动作举例。你拿起水壶往杯子里倒水,手在倾斜的过程中改变了水壶的姿态,水流出来需要一定时间,水在杯中的液面逐渐上升……这些过程有一个严格的时间因果链条。如果动作策略模型只是孤立地输出关节角度,而不理解“倾斜10度会产生约100ml/s的水流”,那它在面对新情况(比如换一个大杯口的水杯)时就容易犯错。WAM的思路是让模型在训练时同时学习动作和其造成的变化,使动作生成受到“世界变化是否合理”这个约束的监督。

目前这个方向的公开论文还不算多,各家的做法差异也比较大。有些团队走的是“先训一个WM,然后用WM做planning,最后在planning结果上微调动作模型”的路线;有些团队则尝试把动作生成和视频预测放到同一个训练目标里联合优化。我自己比较看好后一种,因为它让动作和预测之间形成了一种类似“对抗”的约束,能显著减少动作的物理不合理性问题。

2.3 VLA:端到端的“视觉-语言-动作”大融合

VLA是这三类模型里目前落地最火、开源资源也最多的方向。它的基本结构可以看作三个模块的拼接:视觉编码器(通常是CLIP或者SigLIP这类视觉语言对齐模型),大语言模型(LLM作为推理主干),以及一个把LLM输出映射成机器人动作的动作头。

训练过程也分阶段:第一阶段是视觉语言预训练,让视觉编码器输出的特征能够和语言嵌入对齐,这一步通常直接在互联网级别的图文数据上完成,成本高但效果显著;第二阶段是机器人动作微调(action fine-tuning),使用真实机器人遥操作采集的数据或者仿真数据,让模型学会把“视觉+语言指令”映射成动作;第三个阶段在一些新工作中出现,是用偏好优化或强化学习进一步提升策略的精细度。

以π-VLA为例,这个工作特别强调了一个设计——逐步推理(step-by-step reasoning)。在生成动作之前,模型会先输出一段关于当前场景的语义分析,比如“识别到绿色杯子和红色积木,绿色杯子在右侧,用户指令是拿起杯子”,然后再基于这段推理生成动作序列。经过这种“动作感知的推理”训练后,模型在高精度任务上的成功率提升非常明显。它的意义在于:VLA不再是一个盲目的“图像到动作”的映射器,而变成了一个会先想清楚再行动的策略模型。

不过必须提醒一点,端到端训练VLA对数据的需求极大。我见过一些团队,自采了几万条遥操作数据就拿去微调开源VLA,结果效果远不如简单的行为克隆baseline。这里的核心问题是VLA的参数量非常大(往往在7B到13B量级),微调数据不足时很容易发生灾难性遗忘,或者被数据中的噪声带偏。关于这个问题,我在后面“常见问题”一节里会单独展开讲。

3. 实战:VLA训练到部署的全流程记录

3.1 数据管线:先解决“数据从哪里来”

网上很多教程一上来就让你装环境、跑训练脚本,但真实项目中,最先卡住你的永远是数据。VLA训练数据的主流来源有三种:

  • 遥操作采集:真人手持示教器或穿戴设备控制机器人完成任务,同时记录第一视角视觉、关节角度、末端位姿、语言指令等信息。这种方式数据质量最高,但采集速度慢,一个小时能采几十条轨迹就算高效了。
  • 自动化数据生成:在仿真环境(如Isaac、Libero、RLBench)里,用脚本或规划器自动批量生成轨迹。速度快,一个晚上能刷出上万条,但存在“仿真与真实差距”(sim-to-real gap)。
  • 互联网视频数据:通过观看海量人类操作视频来学习动作语义,比如NVIDIA在Alpamayo里就大量使用了这类数据。它的价值在于提升常识理解能力,但因为视频中缺乏精确的机器人动作标注,无法直接作为动作监督信号。

在实际项目中,我的建议是分桶管理数据:把遥操作数据作为主训练集,仿真数据作为预训练阶段的数据来源,互联网视频数据只用于视觉语言模块的对齐,不让它们参与动作头的训练。这样可以最大程度避免低质量动作标注污染策略网络。

数据处理环节还有一个很容易被忽略的点:语言指令的一致性。同一个任务,不同采集员可能写下“拿起红色杯子”“把红色杯子拿起来”“pick up the red cup”三种不同的指令。如果不对这些指令做归一化处理,模型会花不少容量去学习“理解不同说法”,而不是真正学习动作。我在pipeline里会加入一个指令标准化模块,把所有任务指令统一映射成几个标准模板,并保留小比例的原始指令做数据增强,效果比直接用原始文本好很多。

3.2 训练细节:从预训练权重开始还是从零开始?

关于VLA训练,一个最常见的取舍是:到底用开源的预训练VLA权重做微调,还是从LLM和视觉编码器开始自己拼一个。我的建议很直接:如果没有非常特殊的硬件结构需求,直接用成熟开源的VLA权重做微调,不要自己从零拼装。原因很简单,VLA的预训练阶段需要在海量图文数据上做好视觉语言对齐,这个阶段个人或单一机构几乎无法复现,而这一步直接决定了模型后续的指令跟随能力。

以OpenVLA为例,它用的是7B参数的PruneLM作为语言骨干,在LLaVA格式的视觉语言数据上做过完整预训练,再用RLDS格式的机器人操作数据做微调。如果我从零开始训练,单是视觉语言对齐阶段就需要几十张A100跑上好几周;而基于它的开源权重做机器人数据的微调,2到4张A100或者4090就能在几天内完成,效率完全不同。

微调时的关键参数我通常会这样设置:batch size尽量大,至少64条trajectory以上;学习率设在1e-5到5e-5之间,如果发现loss震荡就降一半,不要硬扛;在微调的前几个epoch冻结视觉编码器和大部分LLM层,只有动作头和后几层LLM参与更新,等loss稳定后再逐步解冻更多层。这种做法能显著降低灾难性遗忘的风险。

关于动作表示方式,目前的VLA主要分两种:离散化动作token和连续动作回归。早期的RT-2把动作量化成离散token后交给语言模型预测,好处是可以复用语言模型的tokenizer和loss功能,坏处是离散量化会损失精度,在高精度插孔这类任务中比较吃亏。π-VLA和Alpamayo这类新工作更倾向于连续动作输出,在模型末尾接一个专门的MLP或者diffusion head来直接回归连续动作值,精度更高,但训练难度也相应增加。做工业级部署的话,我更推荐带diffusion head的连续动作方案。

3.3 评测指标与基准:别被成功率骗了

VLA模型的评测,绝大多数论文都会报“任务成功率”,但只看成功率会踩很多坑。因为成功率严重依赖初始条件分布——如果评测时物体摆放位置永远不变,那么一个简单的开环动作序列就能刷出很高的成功率,模型的真实泛化能力根本体现不出来。

目前Libero是这个领域使用最广的基准之一,它包含了多个任务套件(如Libero-Spatial、Libero-Object、Libero-Goal等),每个套件内部都有不同的初始状态分布。我在实践中的使用方法是:分别在每个套件上评测模型,并记录两类指标——最终成功率(success rate)和平均完成任务所需的步骤数(number of steps)。后者非常关键,因为它能看出模型是否具备“高效规划”能力,而不仅仅是靠运气碰出来。

除了这两个标准指标,我还会额外记录一个“首次动作正确率”(first action success rate)。这个指标指的是模型在任务开始时做出的第一个抓取或移动动作是否正确。首次动作几乎不依赖后续误差累积,能更真实地反映模型对任务的理解能力。VLA模型如果首次动作正确率低于60%,那基本可以认为它没有真正理解任务,只是在数据里记住了某种运动模式。

3.4 部署推理:延迟和算力的权衡

VLA模型部署到真实机器人上时,最大的痛点是推理延迟。一个7B参数的模型,即使在A100上推理一次也要几百毫秒到一秒级别,这在需要实时反应的机器人控制中是很难接受的。为了降低延迟,我常用的手段有四个:

  • 动作分块(action chunking):让模型一次预测未来10到20个动作序列,而不是每次只预测一个动作。这样推理频率可以从10Hz降到2Hz,而控制效果反而更好,因为连续动作之间的平滑性提高了。
  • KV Cache优化:在推理时将历史视觉和语言token的KV Cache缓存下来,下一次推理只处理新增的输入,能减少大约30%到40%的重复计算。
  • 量化压缩:把模型量化到INT8或者INT4。VLA对量化比较敏感,动作头部分建议保留FP16,只对语言模型主体做量化,精度损失可以控制得比较小。
  • 视觉编码器抽帧:不需要每帧都做视觉编码,可以每隔2到3帧用一次视觉特征,中间帧直接复用上一帧的视觉token。视觉编码器的计算量在VLA里占比不低,这个优化能省不少时间。

我踩过的一个坑是:为了追求高帧率,把动作分块长度从16调到了4,结果机器人动作变得非常“神经质”,抖动明显。后来才意识到,动作分块的作用不仅仅是降低推理频率,它本身也是动作时序平滑性的重要来源。分块太短,相当于每次只做一步修正,模型输出之间的连续性就断了。实际部署中,分块长度在10到20之间是一个比较稳妥的区间。

4. 选型决策:你该走哪条路线

4.1 按预算和场景选路线,而不是按热度

很多读者一上来就问“哪个路线最强”,这不是一个可以直接回答的问题。我见过做仿真环境导航的把WM用得出神入化,也见过做柔性物体操作的在VLA上跑出远好于WM的效果。选型要考虑的核心变量有三个:你能拿到的数据规模、你的算力预算、以及任务本身对“物理一致性”的要求。

如果你的任务是在受限环境中做感知和预测,比如自动驾驶、仓储机器人,而且你有大量低成本的环境交互数据(车辆行驶记录、机器人巡逻记录),那么WM路线非常合适。它的强项是样本效率:不需要每个动作都有精确标注,只要有无穷多的观测数据,就能训练出不错的环境预测模型。你可以在训练好的WM上做模型预测控制(MPC),也可以只用它做环境感知的增强模块。

如果你的任务对动作物理合理性要求极高,比如精密装配、手术辅助、复杂物体操作,那么WAM方向更值得关注。它的优势在于动作生成时会受到“世界变化是否合理”的约束,能有效减少那些“视觉上看着对,动起来却不符合物理规律”的失败动作。不过有一点要说在前面:WAM目前还处在研究早期,公开可用的权重和教程非常少,如果你需要一个马上能用的方案,现在选WAM可能不是一个明智决定。

如果你的任务对泛化能力要求高,需要理解自然语言指令、处理多样物体和场景,那么VLA就是目前最现实的选项。VLA生态最成熟,有OpenVLA、π0、π-VLA、Alpamayo等大量开源权重可参考,社区案例也多,遇到问题基本都能搜到解决方案。

4.2 近期的趋势:模型边界正在被打破

以前WM、VLA、WAM三个方向的研究者是各写各的论文,但最近半年可以看到非常明显的融合趋势。π-VLA引入了“思维链式的逐步推理”,本质上是把语言推理能力嵌入了动作策略;Alpamayo则把VLA和视频生成/世界模型结合起来,在做规划时先预测未来的场景变化再决定动作,这就是一个典型的“WAM+WM+VLA”混合形态。NVIDIA发布Alpamayo本身就说明工业界对这个方向投注了大量资源,其面向辅助驾驶场景的设计也意味着VLA的应用不止于机器人手臂,还包括移动平台、人形机器人、智能座舱等更广泛的具身智能领域。

所以在2025年这个时间点,我给大家的建议是:不要把自己钉死在某个模型类别上。最合理的做法是把这三套技术看成“工具箱”,根据任务需要组合使用。视觉语言基础模型负责理解任务,世界模型负责短时预测和物理约束,动作头负责把决策落到真实动作。这套组合拳,才是未来具身智能的主流技术框架。

4.3 搜索名词时的“撞车”提醒

最后聊一个比较实用的话题。你搜“WM”的时候,大概率会搜出来一堆和机器人完全无关的内容,最典型的是SAP系统里的“仓库管理模块”(Warehouse Management),它的配置清单和机器人的world model没有半点关系。同样,搜“VLA”也会撞上射电天文里的“甚大阵列”望远镜(Very Large Array)。搜索机器人模型相关关键词时,建议加上“robotics”“policy”“world model”之类的限定词,能省下不少筛选时间。这个细节看起来很小,但我实测下来,真的能帮你避免在错误信息里浪费一两个小时。

5. 常见问题与踩坑记录

5.1 微调VLA时loss不降反升、甚至直接发散

这是微调VLA最高频的问题,几乎每个团队都会遇到。最常见的原因有三个:学习率过大、训练数据质量差、以及解冻层数过多导致灾难性遗忘。我自己的排查顺序是:

  • 先降学习率,降到当前值的五分之一,观察5个batch的loss走势;
  • 检查数据pipeline里是否存在“指令与轨迹不匹配”的样本,比如指令写的是“拿起蓝色方块”,轨迹里抓的却是红色方块,这种数据会严重扰乱梯度;
  • 把解冻层数降到最低,只训练动作头,确定动作头本身能收敛后再逐步开放更多层。

还有一个小技巧:如果loss在训练早期就异常震荡,先关掉视觉编码器的梯度,只训练LLM和动作头。很多情况下,问题不在视觉端,而是视觉编码器输出的梯度噪声淹没了训练信号。

5.2 世界模型的预测图像越来越模糊

WM在像素空间做未来预测时,预测结果会随着步数增加慢慢变得模糊,这是因为模型在输出时对多种可能性做了平均,导致预测值趋近于中间态。解决办法有两个:一是把预测目标从原始像素换成特征空间的离散token,用VQ-VAE把图像压缩成离散token后再做预测;二是在训练中加入对抗损失(GAN loss),让解码器输出更“锐利”的图像。我自己更趋向于前者,因为它避开了对抗训练的不稳定性。

5.3 真实机器人上动作抖动严重

动作抖动通常是三个原因:控制频率太低、动作分块太短、以及动作头输出没有做平滑滤波。前两个在3.4节里已经聊过。第三个原因容易被忽略,如果你的VLA输出的是离散动作token,那么相邻两步的 token 之间可能没有平滑过渡,直接执行就会造成抖动。解决方案是在动作头输出后接一个指数滑动平均滤波器(EMA),或者用一个小窗口的移动平均做后处理。注意滤波系数不要设得太大,否则动作流畅了但反应变迟钝,实际任务中会显得机器人“慢半拍”。

5.4 评测指标很高,真机却各种翻车

这个问题的根源在于评测环境的“过度确定性”。仿真环境中,物体位置、光照、物理参数都是固定的,模型很容易学到“在这个位置伸手就能抓到”这样的捷径。到了真实环境,任何细微变化都会让这种捷径失效。要减少这类问题,可以在评测时引入随机化干扰:随机扰动物体位置、改变光照、增加背景噪声、甚至随机遮挡一部分视野。模型必须在这种随机化评测中依然保持较高成功率,才有资格上真机测试。

6. 一些值得持续跟进的方向

如果你在看完上面的内容之后,还想知道下一步应该关注什么,我的个人建议是把目光放在这几个交叉点上:一是“VLA+世界模型”的混合架构,让VLA在规划之前先做场景演变预测,这能显著提升长程任务的成功率;二是“VLA+强化学习”的后期微调,用RL来优化成功率指标,效果往往比纯模仿学习高出不少;三是小参数VLA的可行性,现在业界已经开始尝试在5B甚至3B模型上实现接近7B模型的效果,这对边缘端部署的意义非常大。

此外,多模态和推理时计算的结合也值得关注。π-VLA已经证明了逐步推理对策略性能的提升,但推理产生的额外时延能不能被接受,取决于应用场景。如果是在辅助驾驶这类实时性要求极高的场景,你可能需要把推理过程做成长短两条路径:长路径用于离线生成preference数据,短路径用于线上实时执行。

综合来看,机器人模型这个领域还远远没有定型,WM、WAM、VLA三个名称背后代表的是一整套思想和方法论。比起纠结于“哪个缩写更高级”,不如在实际任务里多试几种组合,找到最适合自己场景的那一套方案。毕竟,模型论文里的指标再漂亮,最终还是要看机器人在真实世界里能不能稳定地帮你把活干完。这也是我给所有做机器人的同行最朴素的一条建议。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进