这两年机器人圈最常挂在嘴边的三个缩写,大概就是 WM、WAM 和 VLA。我刚入行那会儿,这些词还没这么火,大家更多在调机械臂的逆解、写阻抗控制;现在不一样,随便一个 Demo 都敢说自己用了大模型,仿佛不谈 VLA 就不算做机器人。但真把 WM、WAM、VLA 放在一起问,很多朋友其实是模糊的:它们到底各管哪一段?能不能混用?项目里到底该选哪个?这篇文章我就以“从看到想再到做”的视角,把这三个模型拆开揉碎了讲清楚,再结合我用过的方案对比一下,最后聊点从训练到部署的实操经验。
我先把结论摆在前头:WM 解决的是“预判未来”,WAM 解决的是“生成动作”,VLA 则想把“看、想、做”统一成一个端到端系统。但真实落地时,这三者从来不是非此即彼的选择题,更多时候是互相嵌套的关系。下面我按职能一层层拆开讲,每部分都会带上具体模型、训练思路、部署要避开哪些坑。
1. 从“看、想、做”切入,理解 WM / WAM / VLA 的定位
1.1 三者到底各管哪一段
传统机器人有个经典框架叫 Sense-Plan-Act,感知、规划、执行三段式。搬到今天的大模型语境下,这三段其实被重新分配了:
- WM(World Model,世界模型)主管“想”。它根据当前观测和历史状态,预测未来会变成什么样。比如机械臂把杯子推向桌沿,WM 要能推算出“下一秒杯子会不会掉”。这类模型擅长在隐空间里做推演,不直接输出关节指令。
- WAM 主管“做”。业内对 WAM 的缩写没有 VLA 那么统一,有的地方指 Whole-body Action Model,有的指 World-Action Model,也有团队叫 Whole-arm Manipulation Model。但它们的内核是一致的:把“意图”翻译成具体的动作序列,可能是末端轨迹、关节位置序列,也可能是扭矩信号。换句话讲,WAM 更像传统意义上的策略网络,只不过换上了现代网络结构。
- VLA(Vision-Language-Action Model)则把“看、想、做”打包进一个模型。输入是相机图像加自然语言指令,输出直接是动作。RT-2、OpenVLA、π0 都属于这类。它最大的变化是:不再显式拆出“世界模型”和“动作模型”,而是让语言模型同时承担推理和动作生成的职责。
为什么三者容易被弄混?因为它们都在争夺同一个接口:视觉特征到动作的映射。但你要真在项目里只拿一个 VLA 硬扛所有任务,多半会碰壁。宁可先理解清楚各自的边界,再决定组合方式。
1.2 一个类比:后厨团队怎么分工
我用后厨做菜来打个比方。WM 是那个经验丰富的老师傅,他不用真的颠勺,光看一眼食材颜色和锅里的油温,就能判断“再过 30 秒必须翻面,否则糊了”。WAM 是掌勺的厨师,负责把老师傅的判断变成手上的动作:翻勺、加调料、起锅。VLA 是全能型主厨,他看一眼菜单、瞅一眼备料台,直接就能出菜,不需要中间人传话。
这个类比能解释很多疑问:为什么 WM 和 WAM 能解耦?因为“预判火候”和“翻勺”本来就是两个不同层次的能力,前者依赖环境动力学模型,后者依赖动作控制策略。为什么 VLA 训练起来又贵又难?因为你想让一个模型同时学会“看菜单、记菜谱、掌勺”三件事,数据和算力需求量自然大得多。
想清楚这个分工后,下面几节就好理解了:第二节讲 WM 怎么“想”,第三节讲 WAM 怎么“做”,第四节讲 VLA 怎么把二者揉在一起,最后再对比怎么选型、怎么训练、怎么评测评。
2. WM(世界模型)到底在“想”什么
2.1 世界模型的本质:预测未来状态
世界模型这个术语最早能追溯到心理学里的“认知地图”,但在机器学习语境下,它的数学本质是一个状态转移模型:给定当前状态和动作,预测下一时刻的状态。用公式写就是 p(s_{t+1} | s_t, a_t)。难点在于机器人世界里,状态往往不是干净的向量,而是高维的相机图像、点云,甚至力觉信号。
所以现代世界模型基本分两条路线:一种是在像素空间直接预测未来帧,另一种是在隐空间里预测特征向量。像素空间预测直观但计算量巨大,隐空间预测更高效,但会丢失一部分可解释性。DreamerV2、DreamerV3 让我印象最深的是它们把环境的奖励和终止信号也纳入预测,整个模型不仅回答“未来长什么样”,还回答“这样好不好、是否结束”。在机器人领域,这种预测能力可以直接用于规划:想象几万个未来轨迹,选一条得分最高的去执行。
2.2 机器人世界模型怎么用:规划、数据增强、策略蒸馏
世界模型在机器人里最直接的应用是模型预测控制(MPC)。传统 MPC 依赖精确的动力学方程,而世界模型能直接从数据里学出动力学,省去建模的苦力活。比如机械臂推箱子时,不必手工建摩擦模型,只要让世界模型看过足够多推箱子的视频,就能在隐空间里模拟不同推法下的效果。
第二类用法是数据增强。如果用世界模型生成的虚拟轨迹去扩充训练集,相当于让策略模型“脑补”出更多工况。我在实际项目里试过这个思路:机器人抓取特定物体时,真实采集只有几百条轨迹,但用世界模型做动作扰动、生成偏移轨迹后,下游抓取成功率提升了大约十个点。要注意的是,世界模型生成的轨迹不能直接拿来做闭环控制,只适合作为开环参考或辅助监督信号。
第三类用法是策略蒸馏:先让一个“想得多”的世界模型配合搜索算法,在隐空间里跑出最优轨迹序列;再把这段轨迹当作专家示范,去监督训练一个轻量级策略网络。这样可以绕开真实机器人上大量试错的成本,适合仿真到现实的迁移场景。
2.3 世界模型落地要绕开的坑
- 长程预测误差会累积。训练时可能是 5 步预测误差很小,但一旦 rollout 到 30 步,误差就指数级放大,画面越推越糊、越推越偏。我的经验是把推理长度限制在 10 步以内,或者引入闭环校正机制,每执行几步就重新用真实观测校正一次隐状态。
- 评估困难。世界模型的“好用”很难用一个指标说清,常用的是未来帧 PSNR、隐状态判别准确率,但这些和下游任务成功率不一定完全相关。最好把世界模型放在真实任务里做端到端评估,虽然成本高,但结论可信。
- 搜“WM”这个词要小心。如果你在搜索引擎里输入 WM,有很大概率会跑出一堆企业资源管理系统里的“仓库管理”配置教程,跟机器人世界模型完全是两码事。我会在关键词里加上 robot、world model、Dreamer 一起搜,能省不少时间。
3. WAM 把“想”变成“做”:动作生成的三种主流方案
3.1 从“意图”到“动作”中间隔着什么
如果说 WM 是大脑里的推演,那 WAM 就是脊髓反射和肌肉协调。它需要解决的问题很具体:给定当前观测和高层意图,输出机械臂的关节角度序列、末端位姿轨迹,或者移动机器人的速度指令。WAM 这个概念之所以不像 VLA 那样广为人知,是因为它的很多职能被分散到了各个传统子模块里:运动规划、轨迹优化、RL 策略。
但“动作生成”这件事,在神经模型时代有一个绕不开的难点:动作空间是连续且高维的。一个 7 自由度机械臂,每次决策要输出 7 个关节角,而控制频率可能要到 10Hz 甚至 100Hz。动作维度高、频率快,还不能有明显抖动,这就比“生成一句话”难多了。
3.2 三种主流动作输出方式
我按自己实际用过的方案,把动作生成分成三类:
直接回归连续动作。这是最朴素的做法,网络输出全连接层直接预测关节角度或末端增量。好处是简单、高频,坏处是容易输出过平滑或过激进的轨迹,落地时通常要加低通滤波和速度限幅。
离散化动作空间。把每个关节的角度范围切成若干桶,模型输出分类分布。这样做的好处是能借鉴语言模型的交叉熵训练方式,但误差精度受分桶数限制。RT-1 用的就是这个思路,8 个分桶还是 256 个分桶,直接影响操作的精细度。
生成式动作头。最近最火的方案是扩散模型(Diffusion Policy)和流匹配(Flow Matching)动作头。π0 用的就是流匹配方式,它从一个噪声动作向量逐步去噪到目标动作,生成过程更平滑,多峰分布表达能力强。My 的体会是,扩散式动作头在演示数据有多样性特征时(比如同一个任务有两种不同绕法)表现特别好,传统回归会平均出“两边都不靠”的轨迹,扩散模型能保留多模态特征。
3.3 WAM 和经典控制结合的必要性
把 WAM 输出的动作直接发给执行器,几乎一定会出问题。模型训练数据里如果都是遥操作的示教轨迹,它学到的往往是人类手臂的自然运动习惯;但一旦遇到关节限位、奇异点,模型可能给出不合理目标。我现在的标准做法是:WAM 输出末端目标位姿,然后接一层逆运动学加轨迹插值,最后过速度规划器和安全限位,才能真正上机。
这不是说端到端就不好,而是工程上要优先保证安全。神经网络的泛化能力再强,也不能在奇异点附近赌它输出正确。因此 WAM 适合做“智能决策”,传统控制负责“保命稳底”。
4. VLA 如何统一“看”和“做”:架构、训练与代表模型
4.1 VLA 的本质:语言模型长出“手”
VLA 最核心的贡献不是提出什么新技术,而是把一个多模态语言模型和动作输出头嫁接到一起。图像和文本指令经过编码后送进 Transformer,输出端不再是下一个 token 的概率分布,而是动作 token 或连续动作。这样做的好处是继承了语言模型强大的语义理解、多任务泛化和少样本能力。
举个例子,传统方法要训练“拿起红色杯子”的专用策略,数据集必须只包含红杯子的轨迹;而 VLA 用了大模型预训练权重,可能你只给它十几条红杯子的示范,它就能借助“杯子”这个词的常识,把“拿起蓝色杯子”也做出来。这就是视觉-语言预训练给动作学习带来的迁移红利。
4.2 几个代表性 VLA 架构对比
我做了一张表,把目前讨论度最高的几条 VLA 技术路线放一起对比:
| 模型 | 基础结构 | 动作输出方式 | 训练策略 | 适合场景 |
|---|---|---|---|---|
| RT-1 | Transformer | 离散化 8 维度动作 | 从零训练策略,动作分类 | 标准化数据、闭环控制频率高 |
| RT-2 | PaLI-X / PaLM-E 底座 | 动作作为文本 token 输出 | 承接视觉-语言预训练,再微调 | 强调语义泛化和跨任务迁移 |
| OpenVLA | Prismatic VLM 底座 | 离散动作 token,类似 RT 系列 | LoRA 高效微调,开源可复现 | 学术研究、二次开发门槛低 |
| π0(Pi Zero) | 自研多模态 Transformer | 流匹配动作专家头 | 预训练流匹配动作,再指令微调 | 复杂操作、多模态动作分布 |
| NVIDIA Alpamayo | 开源 VLA 推理模型 | 辅助驾驶场景动作输出 | 推理侧高度优化 | 车机及移动机器人低延迟部署 |
这里想特意提一下 NVIDIA Alpamayo,它是面向辅助驾驶场景推出的开源 VLA 推理模型,核心卖点是推理延迟优化做得很好,能跑在资源受限的硬件上。这件事说明 VLA 已经不是只在机械臂上做 Demo 的玩具,而是开始往车载边缘计算的场景渗透。
4.3 VLA 是怎样训练的:三个阶段
很多朋友问“VLA 是怎样训练的”,其实本质上逃不出三个阶段的配方:
- 阶段一:视觉-语言预训练。拿几亿甚至几十亿图文对,训练模型理解图像和文本的对齐关系。这个阶段决定了模型的“常识水平”。如果你完全从零训练 VLA,光这一步就够烧掉一个实验室的 GPU 预算;所以大部分团队直接加载开源 VLM 权重。
- 阶段二:动作预训练(可选)。拿大量跨任务、跨机器人形态的遥操作数据,让模型学习“看见画面该输出什么动作”。π0 的特别之处就在这,它先学一个通用的流匹配动作专家,不绑定具体任务,再往下游做适配,数据利用效率高很多。
- 阶段三:任务微调。在目标任务的数据集上做监督微调,让模型把语言指令和具体动作习惯绑定起来。常用技巧是冻结大部分主干参数,只微调动作头和部分 Transformer 层,从而降低过拟合、减少训练成本。
这三个阶段加起来,本质上就是“先学常识、再学动作、最后学任务”。如果你拿到 OpenVLA 这类开源权重,可以只做第三阶段,也能跑出不错的效果,这要看项目预算和任务难度。
4.4 部署 VLA 时最难啃的骨头:延迟和缓存
VLA 部署到真实机器人上,最大的矛盾是“模型大”和“控制频率高”。一个 7B 参数级别的 VLA,在 A100 上单次推理能到几百毫秒,在工控机上的消费级显卡可能一秒钟都推理不出来。而机械臂的力控或视觉伺服还等着 10Hz 控制指令。差着数量级。
实际解法一般有几种:一是把高频运动控制留给底层 WAM 或 PID 控制器,VLA 只负责生成一段秒级目标轨迹,控制频率靠插值补足;二是做动作分块,一次性预测未来 16 或 32 步动作,减少调度次数;三是用 TensorRT、ONNX 导出做模型压缩,在推理侧暴力优化。NVIDIA Alpamayo 走的就是第三条路。
还有一个隐藏很深的坑:KV Cache 和上下文长度。VLA 输入保留历史帧和指令 token,推理时如果每次都重新计算整个序列,延迟会随上下文长度线性增长。正确做法是缓存历史 key-value,只算增量帧,这能提速一大截。代价是工程复杂度上升,得自己管理缓存生命周期,否则显存还会莫名飙高。
5. 三种模型对比与选型决策:不要盲目追“全能”
5.1 三个维度的硬对比
为了方便项目立项时跟团队沟通,我列了一张核心对比表,基本把三者的差异讲透了:
| 维度 | WM | WAM | VLA |
|---|---|---|---|
| 核心问题 | 未来状态预测 | 动作生成 | 感知-语言-动作端到端 |
| 典型输入 | 历史观测、动作假设 | 当前观测、高层指令 | 图像序列、语言指令 |
| 典型输出 | 预测状态/奖励信号 | 关节角度、末端轨迹、速度指令 | 动作序列(可端到端闭环) |
| 数据需求 | 环境交互数据(可仿真生成) | 专家示教/RL 采集 | 大规模多模态预训练+任务微调 |
| 计算资源 | 训练中等,推理较轻 | 训练较轻,推理高频 | 训练极重,推理延迟压力大 |
| 可解释性 | 预测可可视化,较好 | 动作可观测,中等 | 端到端黑箱,难调试 |
| 工程成熟度 | 中高(MPC 路线成熟) | 高(传统控制可兜底) | 中低(稳定性和安全机制仍在探索) |
从这张表能看出,VLA 虽然热度最高,但工程成熟度反而最低。原因很简单:大模型黑箱输出的动作,谁敢直接上产线?所以我现在做项目时的默认套路是“VLA 做决策、WM 做推演、WAM 做执行”,用组合拳替代单点押注。
5.2 不同项目阶段怎么选型
如果你的项目处于实验室原型阶段,任务比较固定(比如桌面抓取),那我建议先别碰 VLA,直接用 WAM 的思路,训一个 Diffusion Policy 或者动作回归模型就能出效果。数据量不大,训练时间短,部署难度低,非常适合快速验证问题。
如果项目里要求语义泛化,比如用户随便说一句“帮我把桌上的矿泉水拿过来”,那必须上 VLA。因为它要理解“矿泉水”这个词,还要能匹配到视觉目标上。此时如果用传统 WAM 加目标检测模块,你需要维护一个目标清单,命令一复杂就崩溃。
如果项目涉及多步规划和长时程操作(比如“整理桌面”,涉及定位、抓取、放置、归位多个子任务),那就强烈建议加入 WM。它可以在隐空间里做任务推演,生成子目标序列,再交给下游策略去执行。没有 WM 的纯端到端模型,在多步任务上经常做着做着就忘了目标。
5.3 混合架构才是工程上的最优解
我目前最满意的机器人抓取导航系统,用的就是一个三段式混合架构:顶层是微调过的 VLA,输入自然语言指令和全景图像,输出子目标描述;中层是一个 WM,根据当前状态和子目标,预测未来几个关键状态并做碰撞可能性评估;底层是 WAM,执行从当前状态到目标状态的具体动作,频率在 20Hz 以上。
这个架构最直观的好处是各层可以独立测试和替换。VLA 效果不好就单独换成新版权重;WM 预测不准就单独补充仿真数据;WAM 抖动明显就单独调滤波器。如果是单一端到端大模型,任何一处出问题,整个链路都要重新调。
6. 从训练到部署:数据、评测与调优要点
6.1 数据工程:比模型结构更值得花时间
我见过太多团队在模型结构上反复纠结,最后却没把数据管好。VLA 的训练效果,数据质量的影响远大于网络结构细节。机器人操作数据不好采,遥操作采一条有效轨迹可能要几分钟,中间还可能失败中断。所以数据清洗的优先级非常高:截断失败轨迹、滤除抖动片段、标注好语言指令,这几步能筛掉至少两成垃圾数据。
仿真数据也很关键,尤其是世界模型训练时,仿真环境可以低成本生成大量探查式交互数据,覆盖真实世界里难以遇到的极端状态。但要注意仿真到现实之间的差距,世界模型学到的动力学如果与真实环境偏差过大,预测结果就没意义了。我的做法是“混合采集”:真实数据保证真实性,仿真数据负责数量和多样性,比例大概 1:3 起步。
6.2 在 LIBERO 上测试 VLA 的方法与常见坑
LIBERO 是目前评测 VLA 最常用的基准之一,它提供了 4 个任务套件、数百个长程操作任务,核心玩法是“在仿真环境里观察图和语言任务描述,给出动作”。网上经常搜到“VLA 如何在 LIBERO 上进行测试”这类问题,其实流程并不复杂:
- 先安装 LIBERO 运行库,它依赖 robosuite 仿真器,版本一定要配套,别照着老教程装最新版,很容易报兼容错误。
- 下载对应的任务数据和演示集。跑评测前先加载预训练模型权重,或者用你自己的微调权重。
- 把模型的推理封装成标准接口:输入当前图像和任务描述,输出动作。
- 在任务集上批量跑试,统计成功率。LIBERO 的评测指标就是任务成功率,越接近 1.0 越好。
实际踩过的坑有两个。一个是 robosuite 的渲染问题,在无显示器环境要设置离屏渲染参数,否则一跑就报错。另一个是最小二乘动作平滑或动作分块的参数量,不同任务套件对动作频率的敏感程度不一样,统一参数集经常导致某些任务成功率特别低。
6.3 部署推理阶段的性能调优 checklist
- 用量化代替烧硬件。7B 级别的 VLA,FP16 需要 14GB 显存,INT8 能压到 7GB 左右,很多消费级显卡就能跑。代价是精度有一定损失,通常在 1-2 个点以内,值得换。
- 动作分块长度先取 8 到 16。太长会导致动作滞后,太短导致推理频率不够。至于具体选几,要看你的控制频率和模型单次推理延迟来算。
- 输出后处理不能省。无论是 VLA 还是 WAM,输出动作都要做限幅、平滑、急停检测三件套。我在项目里吃过亏,模型偶尔输出一个离谱速度指令,差点把机械臂怼到限位,从那以后后处理环节一律不省。
- 确认缓存逻辑值得提前写。历史帧的 KV Cache 不缓存的话,上下文越拉越长,延迟越滚越大。但缓存逻辑要小心显存生命周期,建议接个定时清空策略。
6.4 做模型选型和落地最实在的几条心得
最后说几句大白话。第一,别被热词绑架。VLA 是厉害,但不一定是你项目的最优解。如果任务固定、数据少、还要求高频率反馈,Diffusion Policy 这种轻量级 WAM 方案可能更香。第二,先做减法再做加法。我每次接手新项目,会先把任务里“需要什么能力”列出来,再倒推该用 WM、WAM 还是 VLA,基本不会跑偏。
第三,世界模型和 VLA 不是冲突关系。VLA 可以给出动作,但给不出对未来的信心分数;WM 可以补上这一步,相当于给系统装了一个“若隐若现的前瞻能力”。混合架构的调试难度确实更高,但模型之间的互相纠正,能让整个系统可靠很多。我自己踩过这么多坑之后,最大的感受是,机器人模型的选择从来没有银弹,真正的工程能力,恰恰体现在搞清楚每种模型擅长什么、不擅长什么,然后让它们老老实实待在各自的位置上。