
做机器人这些年我越来越觉得真正的问题不是该用哪个算法而是机器人到底凭什么把一件事做完。很多人一开始会以为这就是个感知加控制的拼接题但等你真把相机、底盘、机械臂组合到一起就会发现最大的瓶颈是模型层它要能看懂场景能在脑子里推演下一步还能输出真正能让电机转动的信号。这就是为什么我把WMWorld Model世界模型、WAMWorld-Action Model世界-动作模型和VLAVision-Language-Action Model视觉-语言-动作模型放在一起研究。它们分别对应了从看到想再到做的三层能力各自的侧重点和代价完全不同。这篇文章不是教科书式的综述而是我结合近期VLA综述、论文和一些开源模型实测经验做的阶段性总结。里面会聊清楚三者的架构差异、训练方式、能力边界也会手把手走一遍VLA在LIBERO仿真环境里的测试流程方便正在做技术选型或者刚入坑具身智能的同学直接参考。1. 先把概念对齐WM、WAM、VLA到底在指什么1.1 WM世界模型机器人的脑内沙盘先说WM。这里的World Model跟企业供应链里那套SAP WM模块完全是两码事别搞混了。世界模型的核心目标是让机器人在内部建立一个关于环境如何变化的模型给它过去一段时间的观测和动作它能预测接下来环境会变成什么样。最经典的代表是Dreamer系列从Dreamer到DreamerV2再到DreamerV3都是靠学习潜在空间里的状态转移来预测未来。Google的Genie系列也是这个思路只不过把生成对象从游戏画面扩展到了更多交互式场景。你可以把WM理解成一个脑内沙盘。我们在做决策之前往往会在脑子里推演一遍各种后果WM就是把这种能力给了机器人。它不直接告诉你现在该往左转还是往右转它只告诉你如果你往左转未来大概率会发生什么。这种预测能力在基于模型强化学习里非常关键因为智能体可以用学到的世界模型去想象大量交互结果而不是在真实环境里烧时间。代价也很明显误差会随着预测步数堆积长时间推演一定会漂移所以实际工程里WM很少单独当作最终策略使用更多的角色是给规划器当模拟器或者拿来生成仿真数据。1.2 WAM从世界模型到动作的直连通道再讲WAM。这个缩写在业内其实还没有统一标准容易撞上语音处理里的加权平均模型。在机器人模型的分析语境下我更倾向于把它理解为World-Action Model也就是世界-动作模型。它走的路线介于WM和VLA之间不像WM那样只做预测也不像VLA那样非要通过大语言模型来理解指令而是把预测世界变化和生成动作两件事放进同一个网络里让模型直接根据世界动态的表征输出动作序列。这类思路在最近一些基于model-based policy的工作里越来越常见模型骨干学习环境动态动作头直接吃动态特征生成控制信号。这么做的好处是训练目标更聚焦、推理链路更短在任务固定、不依赖语义理解的场景里效率和实时性都更好。但它的短板也很明显语言通用性弱换一个新任务基本要重新训练或者小心微调。如果你做一个插拔零件的机械臂项目任务从来不变WAM路线是非常值得考虑的如果你希望机器人能听懂各种稀奇古怪的指令那WAM就不够用了。1.3 VLA视觉-语言-动作一体化大模型VLA是过去两年具身智能领域最出圈的架构。它的定义很直观把一个视觉编码器、一个大语言模型和一个动作输出模块接在同一个网络里输入是图像有时加深度或点云加上自然语言指令输出是机械臂关节角、末端位姿或底盘速度这类可执行动作。代表性工作包括Google的RT-2、OpenVLA、Physical Intelligence的π系列包括π VLA还有NVIDIA面向辅助驾驶场景推出的Alpamayo。VLA真正的价值在于把大语言模型里的语义理解、逻辑推理和世界知识迁移到了机器人操作上。它让机器人可以听懂一句话、看懂一个场景、做出一个动作而不是把每个任务都写成一堆if-else规则。当然全能是有代价的这类模型参数量大、推理延迟高、训练数据要求苛刻。你看VLA相关的论文越来越多说明大家认可这个方向但真正能跑到边缘设备上实时推理的仍然需要大量剪枝和蒸馏工作Alpamayo就是个很典型的工程化案例。2. 架构设计与训练方式三类模型从根本上为什么不一样2.1 WM怎么学预测未来帧建立环境动态WM的训练目标和分类任务不同它不是这张图是什么而是看过之前的状态下一步会变成什么样。以Dreamer系列为例模型先用一个视觉编码器把连续图像帧压缩成潜在向量然后用循环状态空间模型RSSM在潜在空间里学状态转移最后用解码器重建出下一帧或下一状态。训练数据很容易获取只需要智能体与环境做交互收集观测、动作、下一观测这样的时间序列甚至不需要人工标注。这种训练方式让WM有机会学到非常底层的环境规律比如物体的碰撞、掉落、被推动后的位移。但你在实际使用中要特别注意误差累积问题一步预测误差可能很小但连续预测几十步之后想象中的世界跟真实世界就会严重偏离。所以把WM当作一个多步规划器使用时一定要设置合理的推演深度并且在关键决策点用真实观测做修正否则会出现脑内剧情很精彩现实中已经撞墙的情况。2.2 VLA怎么练预训练加微调三个阶段的递进关系VLA的训练路径几乎没有例外都是大规模预训练、指令微调、操控对齐三段式。预训练阶段用的是海量图文和视频数据目标是让视觉编码器和语言模型学会物体长什么样、物体之间有什么空间关系、不同动作会带来什么物理后果。指令微调阶段会引入机器人操作数据比如把红色方块放到白色盘子里这类指令配上真实执行轨迹让模型学会从语言和视觉联合表征里推理出动作。操控对齐阶段则更贴近部署主要解决动作空间如何表示、推理速度怎么优化、遇到陌生场景怎么鲁棒地输出动作。这里有一个非常容易被忽视的点数据配比。互联网数据一旦太多模型会变成一个嘴上王者聊天很厉害但手部动作输出完全跑偏机器人数据太少它又学不会精细操作。我个人经验是起步阶段先把机器人数据质量提上去至少保证每条轨迹的动作干净、无抖动、标签一致再决定要不要加互联网数据。数据里如果有时间戳没对齐、指令描述和动作对不上这类脏数据模型再大也没用。2.3 WAM的取舍牺牲语言泛化换来实时与稳定WAM的设计理念我理解成少即是多。它把世界动态预测和动作生成捆绑在一起相当于在模型内部把想和做焊死。训练时会有两个损失一个来自未来状态预测的自监督信号一个来自动作和结果比较的监督信号。反向传播的时候两边互相影响真正做到了预测是为了做做完了还要修正预测。这种设计带来两个直接好处一是参数量比VLA小很多推理延迟更低二是动作输出的稳定性和平滑度更好因为模型每一步都在用环境动态约束动作不容易出现突变。代价就是语言泛化能力被砍掉了模型换任务的能力很弱。你自己权衡的时候要清楚在一条固定产线上追求节拍和精度WAM路线比VLA更可能达到工业级的要求但如果你做的是迎宾机器人、家庭助手需要面对千变万化的指令WAM就很难支撑了。3. 核心能力对比从看到想再到做的完整拼图3.1 感知力对比谁能真正看懂场景三类模型都具备感知能力但感知的目标完全不同。WM的感知是为预测服务的它必须捕捉到环境动态的变化规律否则下一帧预测必定失败但它不太关心物体的语义标签它更关心这个物体可能往哪里移动。WAM的感知围绕状态变化设计它对物体的位置、位姿变化异常敏感但对这是什么材质有什么用途这类语义信息基本无视。VLA的感知是最接近人类直觉的它继承了多模态大模型的语义理解能力能识别物体、判断空间关系还能理解隐含的指令比如杯子倒了把它扶起来包含的状态判断VLA是可以通过语言和图像联合推理做到的。3.2 推理与规划能力对比谁能先想一步WM的推理方式是基于模型的前向推演。它生成一串可能出现的未来状态再由规划器从中筛选出最优动作序列典型做法是配合MPC使用。这种方式的可解释性最好因为每一步推演都可以回溯、可视化但计算开销很大而且预测误差会随推演深度变大。VLA的推理更像是语言的快思考注意力机制直接让语义和视觉特征交互一步生成动作速度快但它依赖训练分布遇到分布外任务容易产生幻觉动作——看起来很合理实际完全不可执行。WAM介于两者之间它的推演被压缩成了世界动态和动作之间的隐式映射对物理过程有较强的约束但抽象逻辑推理能力较弱多步长任务规划不是它的强项。3.3 动作执行能力对比谁真正输出电机指令WM本身不直接输出动作它输出的预测状态要交给规划器。VLA输出动作的方式则五花八门RT-2把连续动作离散化成token用自回归方式生成OpenVLA直接回归连续动作值π VLA则采用流匹配的方式生成平滑的动作轨迹。从实际体感出发连续动作输出的VLA在精细操作上明显比离散token方案更稳动作之间的抖动更小。WAM输出连续动作且天然受世界动态约束执行稳定性和重复精度在固定任务上往往是最好的这一点在真实机械臂上差异非常明显VLA偶尔会犯动作幅度忽大忽小的毛病而WAM驱动的策略就显得踏实许多。下面这个表是我自己整理的三类模型对比方便你做选型时快速对照对比维度WMWAMVLA核心定位预测环境动态世界状态与动作耦合视觉-语言-动作一体输入历史观测动作历史观测动作图像语言指令输出预测的未来状态/帧连续动作动作token/连续动作/动作序列语义感知能力较弱中等强任务泛化能力中中低高推理延迟中等较低较高可解释性好中差训练数据需求大量环境交互数据高质量交互数据海量互联网数据机器人数据典型场景仿真数据生成、MBRL固定任务实时操控开放指令、多任务切换代表模型/工作DreamerV3、Geniemodel-based policy系列RT-2、OpenVLA、π VLA、Alpamayo4. 落地实操把VLA放到LIBERO里跑一遍4.1 为什么推荐LIBERO作为评测基准聊完架构和原理肯定有人想问VLA到底怎么测网上讨论最多的评测基准之一就是LIBERO。它来自乔治亚理工学院等机构提供了一个统一的仿真环境包含Spatial、Object、Goal和Long四个套件总共50个操作任务。它的价值在于把机器人软件栈、相机布局、动作空间全部统一了你不需要操心不同环境之间的平台差异跑出来的成功率可以直接和别人横向对比。尤其是想发论文或者验证一个新VLA结构LIBERO是目前口碑最稳、社区资料最全的选择之一。不过要泼一盆冷水LIBERO还是仿真环境它的场景真实感和物理引擎的复杂度跟真机差距很大在LIBERO上成功率高并不代表真机上就能稳定运行。我通常把它当作模型能不能跑通基本任务的试验场而不是最终交付的判据。4.2 训练和评测的关键步骤拆解第一步是准备环境。建议用conda创建独立的Python环境版本选3.8或3.9装PyTorch的CUDA版本、MuJoCo和LIBERO源码依赖。LIBERO官方仓库里有requirements文件直接安装会省不少事。第二步是下载数据集。LIBERO把数据封装成hdf5格式包含每个任务的演示轨迹、语言指令和元数据。下载后记得把数据路径配置到训练脚本里注意尽量用绝对路径这一步很多人会踩坑。第三步是选择套件。我个人习惯先跑LIBERO-Spatial因为空间关系类的任务对模型的空间理解要求高问题暴露得最明显。如果连Spatial都搞不定就不要急着上Long这种多阶段长时程任务。第四步是训练。官方仓库带了不少基线模型比如RoboFlamingo、RoVi-Aug等。训练过程本质是模仿学习加少量数据增强脚本会从经验池里不断抽取数据把图片序列和语言指令编码成表征再解码成动作。显存至少要24GB建议直接用40GB以上的A100或4090不然batch size提不上去效果会打折扣。第五步是评测。评测脚本会自动加载checkpoint在每个任务上跑若干轮测试通常看100轮测试中的成功率。重点要观察模型是否出现动作抖动、任务卡死、反复执行上一步之类的典型问题这些现象往往比成功率更能说明问题。4.3 常见问题与排查技巧实录我在跑LIBERO时遇到过几个比较典型的坑列出来供你参考。第一是显存溢出。处理办法很简单调小batch size、降低图像分辨率或者用gradient checkpointing。但是batch size降到一定程度会影响稳定性我自己一般保持在per-gpu batch size大于等于8的前提下调整。第二是任务成功率波动大。这在仿真任务里很常见不同的随机种子可能差出10到20个点。解决办法是多seed取平均比如跑5个seed把成功率的中位数和方差都报告出来这样才有说服力。第三是模型中途卡死。如果你的VLA在任务进行到一半时开始原地踏步优先检查动作尺度是否匹配LIBERO的动作空间范围。LIBERO的动作序列有边界控制输出超出边界会被强行裁剪导致机械臂动作非常奇怪。可以在模型输出层加一个动作缩放的线性层把输出范围明确映射到环境动作空间。第四是数据路径错误。LIBERO对绝对路径依赖很强相对路径经常会在某个子模块里突然找不到文件建议从一开始就统一用绝对路径配置。5. 典型模型与场景应用VLA不是一条路走到底5.1 两个方向上的代表π VLA与NVIDIA Alpamayo当前VLA方向的进展非常多但从落地视角看有两个代表值得重点关注。一个是Physical Intelligence的π VLA它把流匹配动作专家和大语言模型结合起来输出高频且平滑的连续动作在需要精细力控的操控任务上表现很突出。另一个是NVIDIA面向辅助驾驶场景开源的VLA推理模型Alpamayo这个命名来自现实中的一座山峰它的侧重点是把VLA模型压缩到车载硬件能实时推理的规模直接接收传感器画面和驾驶语义信息输出底盘控制信号。这两个案例放在一起非常有意思π VLA在实验室里追求操作泛化和精度Alpamayo在工程上追求推理效率和轻量化说明VLA并不是一个锁死架构它是一套可以按场景裁剪的建模思路。你在评估一个新模型时不要只盯它效果多好一定要看它是否针对某个真实约束做了专门设计这个约束往往是它真正能落地的原因。5.2 从辅助驾驶到工业操作不同场景怎么选模型辅助驾驶场景和室内机器人有个共同点输入都是连续视频流输出都是连续控制信号但辅助驾驶对延迟的敏感度更高所以Alpamayo这类模型才需要在推理优化上死磕。工业操作场景则是另一个极端任务重复固定、动作要求高精度、环境相对可控这类场景里VLA有时反而杀鸡用牛刀因为语言理解能力根本用不上还白白增加了延迟和成本。很多做工业应用的朋友告诉我他们在产线上最终用的还是传统控制器配合WAM式的策略把感知和动作闭环做到极致稳定性比任何大模型都可靠。选型这件事本质上是把你的真实约束列出来逐条比有没有复杂的语言指令任务切换频率高不高延迟预算多少数据能拿到多少每一条都会改变最终答案。没有最好的模型只有最合适的模型。5.3 混用策略把WM、WAM、VLA放进同一条流水线我最近在项目里越来越倾向于混用这三类模型而不是押注某一条技术路线。典型做法是用VLA做任务级的语义理解和阶段规划把把螺丝拧进去分解成移动到螺丝位置、对准、下压、旋转几个步骤然后每一小步的精细动作交给WAM或传统的基于模型控制器执行整个过程再配一个轻量级WM对状态做监控和异常预警。这种分层设计既拿到了VLA的泛化能力又保住了底层执行的高实时性还能用WM给系统加一层安全兜底。当然混用带来的工程复杂度会上升不少你需要在不同模块之间解决通信延迟、状态同步和异常处理的问题。如果你刚开始接触我建议先从一个VLA模型在LIBERO上完整跑通链路再慢慢加WM做预测监控最后再考虑要不要引入WAM替换底层控制器每一步都留足验证时间。写在最后的经验之谈我自己最大的感受是这三类模型不是替代关系而是各自回答了不同层面的问题。VM回答接下来会怎样WAM回答这一下该怎么动VLA回答听懂指令后整件事该怎么做。真正做机器人项目时最怕的就是拿一个看起来很前沿的VLA模型直接上真机结果被延迟、抖动和成本拖垮。先把小规模问题在仿真环境里跑透再根据任务重难点决定用哪类骨干模型这是比较稳妥的路径。最后分享一个小技巧不论你最后选哪一类模型第一优先级永远是数据质量。动作轨迹抖动大、标签对不上、时间戳不齐这些问题不清理干净任何模型结构都救不回来。先把数据治明白模型效果自然就上来了。