
机器人圈子里 WM、WAM、VLA 这三个词最近几乎每隔几天就要被拉出来讨论一轮。它们对应的其实是机器人模型里的三件不同事情“看”、“想”、“做”。视觉语言模型负责“看”世界模型负责“想”VLA 这类端到端动作模型负责“做”。但真正把项目落地时你会发现这三者之间并不是一条干净的流水线而是大量概念重叠、框架混用、评测口径不一的情况。这篇内容想把这三种模型串起来做一次综合对比从原理到训练再到实际踩坑尽量说清楚每条路线的边界和适用场景给正在做机器人感知控制、机器人操控策略或者大模型进机器人的朋友一份可以直接参考的路线图。先说清楚一个前提WM、WAM、VLA 并不是同一个维度的分类。WM 强调的是环境建模VLA 强调的是从多模态输入到动作输出的端到端映射WAM 则更像是介于这两者之间、尝试把世界状态变化和动作生成焊在一起的做法。理解了这个层次差异后面很多争论其实都能平息下来。这篇内容会按照“基础原理 → 架构设计 → 实际操作 → 避坑经验”的顺序展开不会有太重的数学公式但会把每个关键设计的背后逻辑讲透。1. 先从「想」聊起世界模型WM到底在建模什么1.1 世界模型的核心思想脑内预演世界模型World ModelWM这个概念早在 2018 年就被 David Ha 和 Jürgen Schmidhuber 那篇经典工作带火了。核心思想其实一句话就能说清楚让智能体在环境之外额外学习一个关于环境变化的内部模拟器。打个比方斯诺克选手在真正出杆之前脑子里早就把白球撞红球之后的角度、力度以及下一杆的局面全部推演了一遍这就是脑内预演。机器人如果想在真实世界动手前先“过一遍剧本”就需要一个能预测未来帧或者潜在状态转移的模型那就是 WM。从任务目标上看WM 训练的不是“接下来该怎么动”而是“下一步环境会变成什么样”。它的输入是历史观测序列图像、关节状态、力反馈等输出是未来的观测预测或者更高维度的潜在状态预测。它学习的本质是环境的动力学给定当前状态 st 和动作 at预测 st1。这个定义看似简单但带来的直接好处非常明显智能体可以在虚拟脑内空间里试错而不必把真实机器人当试验品。基于模型的强化学习Model-based RL就是在这个思路上长出来的典型代表包括 Dreamer 系列、PlaNet、MBPO以及 2024 年前后火起来的生成式世界模型 Genie 和 DreamMachine。这些模型在游戏、导航、机器人操控、自动驾驶数据生成等场景都验证过很强的应用价值。1.2 世界模型的三种主流架构形态如果只看学术界常用的 WM 实现大体可以分成三种形态。第一种是隐空间动力学模型。代表是 PlaNet 和 Dreamer做法是先用一个卷积编码器把图像压成低维潜在向量然后在潜在空间里做状态转移预测再用解码器重建图像。这样做的好处是不用直接在像素上做预测计算量可控而且潜在空间的抽象能力反而让模型更容易学到关键因果。第二种是自回归 Transformer 模型。典型代表是先对视频帧做离散化处理把每一帧变成 token然后像训练语言模型一样预测下一帧 tokenGenie 就是这类思路。它的优点是生成效果好、适合做大规模预训练缺点是训练成本高动作条件和多模态信息融合比较复杂。第三种是隐式机制模型。比如用 NeRF、3DGS 这类渲染技术把三维场景重建出来再结合 KPI 或者扩散模型对未来场景做生成这在自动驾驶的占用网格预测和主动视觉场景理解里比较常见。如果你现在要选一个世界模型作为项目底座我的建议是先想清楚一件事你需要的“预测”是用于可视化验证还是用于内部规划。如果是内部规划优先考虑隐空间模型速度快、容易做规划器优化。如果是要给决策人员看可解释的预测视频那生成式或基于渲染的模型就更合适。这两者的模型部署方式和推理延迟差别很大不是越复杂越好。1.3 世界模型的优势和现实短板优势非常明确数据利用效率高。模型一旦学到粗略的动力学就能通过想象生成大量训练数据用于后续强化学习这是无模型的端到端策略很难做到的。另一个优势是可解释性能生成未来预测意味着你可以直观看到模型“怎么想”的这在机器人安全验证里很有价值。但短板也同样扎心。首先真实机器人是典型的非齐次、高维、连续控制系统图像里大量内容是冗余的地面纹理、光照变化、无关背景一旦模型把预测重点放在这些不重要的视觉细节上动力学学习就会非常低效。其次长时间预测误差会逐步累积。机器人场景中动作序列往往覆盖几百甚至上千帧笛卡尔坐标误差积累到一定程度预测的未来状态和实际状态会产生明显漂移。最后也是最重要的WM 只负责“想”不负责“做”。它给出的通常是一堆可能的状态序列或者奖励期望想要真正控制机器人还需要额外接一个规划器加底层控制器整个链路一旦拉长端到端训练的梯度就很难回传部署复杂度也随之上升。2. WAM把「世界预测」和「动作生成」焊在一起2.1 如何理解 WAM 这个相对新潮的分类WAM 这个词目前并没有一个严格统一的定义在不同论文和项目里会被描述成 World Action Model、World-Aligned Model 等。但综合来看它代表的是一类“既要预测世界也要生成动作”的联合模型。你可以把它理解为在 WM 之上加了一个动作输出头或者在 VLA 内部强行加入了世界状态预测分支。我个人的理解是WAM 试图解决一个很实际的问题——很多任务里“下一步世界会怎样”和“我下一步该做什么”是强耦合的。比如拿一杯水如果你只预测水流状态而不预测手的轨迹那预测结果对规划没有直接意义如果你只预测动作而不预测杯子状态那你无法判断这次动作是不是真的成功。把两者放到同一个模型里联合建模能让动作生成过程更依赖物理状态变化。举例来说给定一段“拿起蓝色方块”的语言指令和当前多视角图像WAM 输出两个东西一个是下一秒的隐状态描述也可以是渲染后的未来帧另一个是机械臂的关节增量或末端SE(3)Pose增量。2.2 WAM 的架构设计和联合训练逻辑实际实现上WAM 一般会走共享编码器、分支输出的结构。视觉和文本指令先经一个多模态编码器得到统一的特征序列然后主干网络继续做时序建模在输出层分两个分支世界状态头预测未来潜在状态或未来帧训练时最小化重建误差或隐状态余弦距离。动作头直接输出动作参数常见的是高斯混合模型GMM输出连续动作分布或者用离散 token 做动作解码。训练目标是两个分支损失的加权和L L_world λ L_action。比较重要的点是 λ 的设定。我在实际复现一类类似结构时发现如果动作损失权重太大世界预测头很快就会塌成一个“跟随动作标签的复制器”学习不到真正的动力学反过来如果预测损失太大动作头又会变得很保守输出趋于平均动作。所以一般会先单独预训练 WM 部分让模型先把环境动态学稳定再打开动作头做联合微调联合微调期间把 λ 设在 0.3 到 1.0 之间逐步调整。2.3 现有瓶颈和适用边界WAM 的最大优势是动作生成和物理推理天然对齐模型在生成动作时“看过”未来的世界状态反事实推理能力理论上比纯 VLA 更强比如遇到未见过物体时可以先在脑内推演这个物体被碰到后会不会移动再决定抓取力度。但它的短板也非常明显对训练数据的对齐要求极高。你既需要同一段轨迹同时有准确的动作标签和准确的状态转移标签还需要状态转移过程“可学习”。真实遥操作数据里经常出现同一动作导致不同物体状态变化的情况比如同一次按压软物体变形量不一样这时候把两个任务绑在一个模型上很容易互相干扰。所以现实中WAM 更像是一种研究中的过渡范式也不建议大家在资源有限时直接硬上。真正落地更常见的做法是“WM 规划 低层策略执行”的分层架构WM 负责评估不同候选动作可能带来的未来结果低层策略负责把高层的意图拆解成真实的关节轨迹。个人观点是如果你做的是长时程任务、需要精细操作又要安全考虑优先考虑这种分层组合如果任务很短、状态变化很小直接用 VLA 更省事。3. VLA把「看见」和「做到」高效接起来的端到端模型3.1 VLA 为什么能成为近两年最热的方向VLA全称 Vision-Language-Action Model直接把视觉观测、自然语言指令和机器人动作映射到同一个模型中。它在架构上的本质是用一个多模态编码器统一视觉和语言再用一个动作解码器把模型内部的语义理解转换到机器人的动作维度上。一句话总结它的路线不需要显式地对世界建模而是直接学习“在什么情况下做什么动作”。VLA 能火的直接原因有两个第一语言模型的语义理解能力实在是太强了把 LLM 的能力直接复用到机器人操控上成本比重新训练一个策略低太多第二机器人大模型的“大力出奇迹”路线被验证了——数据规模堆到一定量级策略在模拟器和真实场景里的泛化能力会有显著提升。比较有代表性的开源系统包括 OpenVLA、π0π-zero、RDT-1B、RoboFlamingo 等工业界的 RT-2、同类的驾驶类 VLA如 Nvidia 面向辅助驾驶的开源 VLA 推理模型 Alpamayo也走的是这条路。3.2 从输入到输出VLA 的完整数据流一个典型 VLA 的推理链路大致如下接收多视角 RGB 图像可能再加深度图以及机械臂本体感知数据joint position、工具端位姿等。接收自然语言指令例如“把红色杯子放到托盘上”模型将其和图像一起编码。在 transformer 主干里进行多模态融合与时序建模。通过动作解码器产出动作参数常见是末端位姿 delta 或关节角度 delta可能带一个可靠性评分。这条链路最值得关注的设计是动作表示。动作输出目前主要有两种流派离散 token 和连续分布。离散动作 token 在 RT-2 和 OpenVLA 中最常见。具体做法是把每个动作维度做分桶量化比如末端 x 坐标变化量映射到 256 个 bin再将整段动作序列转成 token 序列像生成语言一样生成动作。这种方案的优点是可以直接复用 LLM 的训练基础设施和采样逻辑非常稳定缺点是量化粒度有限做高精度精细操作容易丢信息。连续动作分布则主要出现在 π0 这类更偏操控的模型中动作不是用分类 token 表示而是用高斯混合模型或者 flow matching 来拟合连续分布。π0 的改进在于用 flow matching 而不是简单的 GMM训练时通过在噪声分布和目标动作分布之间做插值来学习一个可逆概率流采样时从噪声出发逐步生成一个动作向量。这样做的好处是能表达多模态动作分布比如面对一个物体既可以“从左边抓”也可以“从右边抓”这两种可行方式都可以在模型里共存而不是被平均成一个没用的中间动作。3.3 VLA 训练管线与数据要素VLA 的训练一般分三个阶段。第一个阶段是视觉-语言预训练通常直接复用已有 VLM 权重把模型训练成能够理解图像内容和语言指令之间的语义对应关系第二个阶段是机器人预训练用海量遥操作轨迹数据对齐视觉语言表征和动作空间让模型里的注意力机制逐步学会把“看到某个物体”和“执行某个动作”进行绑定第三个阶段是目标场景微调在你的真实或仿真环境中进一步优化。数据是整个系统最重要的变量。数据格式上目前最常用的还是每段轨迹存放为固定帧率的图像序列 动作序列 语言指令用 HDF5 做存储。需要注意的是多夹具输入时各相机的曝光和时间戳必须严格对齐否则模型学到的是“时序错位映射”而不是真正的因果策略。数据规模上如果只是想验证可行性100 到 200 个 episode 的小型仿真数据集就能跑通一个小规模 VLA 微调但要在多任务上获得稳定泛化目标数据至少需要覆盖不同初始位置、不同光照、不同物体纹理的数千到数万条成功轨迹。3.4 在模拟器里验证 VLA以 LIBERO 为例模拟器是 VLA 的主战场因为真实机器人训练成本高、周期长在仿真中做 VLA 测试已经成了共识。LIBERO 是目前 VLA 评估里最有辨识度的基准之一它把机器人操控任务拆分成多个任务包每个任务包里有若干条具有细粒度差异的任务目标。不好理解的地方是LIBERO 和标准的 MetaWorld、RLBench 不同它特别强调“从一个任务快速迁移到另一个相似任务”所以对 VLA 的跨任务泛化能力要求更高。用 LIBERO 做 VLA 测试的基本流程大概是先加载目标任务的环境配置重置环境到一个随机初始状态把语言指令和当前相机图像送进模型模型输出一个离散动作或连续动作机器人执行动作、更新环境最后判断任务是否顺利完成记录成功率和平均任务步数。实际操作时比较重要的是需要固定随机种子、统一相机视角范围否则不同轮次之间的对比结果会很不稳定。在测试自动驾驶类 VLA 时逻辑类似但更偏空间推理比如 Alpamayo 这类开源做法会特别测试模型对可行驶区域的输出再结合规划和控制模块去做闭环。评测维度则要考虑路径曲率、通行效率、人工介入频率等这里不再展开。4. 实战记录如何从零微调一个可用的 VLA4.1 开局准备数据集与硬件基线如果你不是从零预训练一个大模型而是基于 OpenVLA、π0 这类开源权重做微调起步其实比大多数新人想象得简单。硬件基线方面单卡 24G 显存如 RTX 4090、A5000 级别已经能跑 LoRA 微调全参数微调建议至少 4 卡 48G 以上。核心资源不是算力而是高质量轨迹数据。数据准备建议按以下步骤用遥操作设备录制轨迹记录末端位姿、关节位置、相机图像、时间戳、语言指令。把图像统一缩放到模型输入分辨率常见是 224x224 或 336x336做色彩归一化。按固定频率对动作序列和图像序列重采样缺帧时做插值而不是简单丢弃。划分训练集和测试集时要让任务初始状态尽量随机化避免模型只学会“从固定点位启动”的捷径。4.2 动作空间选择末端笛卡尔还是关节角这是微调前必须做的一个决策直接决定你的数据采集方式和部署复杂度。表格对比如下维度末端笛卡尔End-Effector Delta关节角Joint Delta采集难度容易通常由遥操作设备直接给出容易读取关节编码器即可表示直观性高人们理解“手往右移 5cm”很容易低各关节角度变化不直观精细操作能力中靠近奇异点可能退化高关节级约束更自然双臂协同需分别输出左右末端可能冲突输出全关节向量天然同步常见模型支持RT-2、OpenVLA 常用π0 等操控模型默认支持经验之谈是如果是单臂桌面抓取、放物体这类任务用末端笛卡尔 delta 足够且省事如果涉及全身控制、双臂协作或者接近奇异位形的姿态建议用关节角。对于输出维度末端位姿一般是 6 维平移旋转关节角常见 6 到 7 维二者都容易落入模型输出头的处理范围。4.3 微调 VLA 的具体操作以 OpenVLA 风格为例以开源 VLA 模型为例微调通常走 LoRA 路线具体过程如下加载模型权重和 tokenizer冻结大部分参数只训练注入到注意力层的 LoRA 参数。把每条轨迹的步骤转换成对话格式例如 system 是“你是一个机器人操作策略助手”user 里放图像和指令“task: 拿起红色杯子”assistant 里放动作 token 序列。利用标准化 dataloader 对图像和动作 token 进行 batch 采样。Loss 一般就是交叉熵离散动作或者是负对数似然连续动作。超参参考范围学习率 1e-4 到 5e-4LoRAbatch size 8 到 32LoRA rank 16 到 64。实际操作中我建议把训练过程拆成“小步快跑”模式先在 200 条轨迹的小数据上训练 2 到 3 个 epoch看 loss 是否下降且验证集成功率是否提升确认数据没问题后再扩大数据量和 epoch。这样能大大减少调试时间。4.4 把模型接到 LIBERO 测试循环里的注意事项因为 LIBERO 是模拟器它的观测和真机不同通常给的是单视角或多视角合成图像且没有真实噪声。直接拿真机采集的数据微调后再扔进 LIBERO 测试效果会大幅衰减。建议在 LIBERO 环境里记录一组“模拟器域”数据用于测试域的微调或者作为模型评测的统一输入源。LIBERO 测试本身的坑也有几个部分任务是稀疏奖励只有最终状态成功与否中间过程是否合理不关心所以模型只要学会“最后一步做对”也可能拿高分要多关注子目标完成率。不同任务包之间初始位姿随机化程度不同要把随机种子写死保证多次结果可复现。模型输出动作频率建议固定为环境执行频率比如 5Hz不要随意调整否则与环境交互的时间对齐会出问题。5. 避坑指南训练和部署 VLA 时的高频问题5.1 训练阶段loss 发散和过拟合训练 Loss 直接变成 NaN最常见原因有三类一是学习率过大对 LoRA 而言超过 1e-3 就很容易发散二是图像里含 NaN 像素或动作序列缺帧导致时间戳错位模型学到异常映射三是混合精度训练时动作 loss 数值范围太大可以尝试关闭 AMP 或者对动作目标做归一化。另一类高频问题是过拟合。小数据上跑大模型几乎必定过拟合。判断方式很简单看训练集成功率接近 100%但验证集一塌糊涂。这时候不要急着换大模型先做两件事给图像加随机裁剪、颜色抖动等增强把任务初始状态随机化尽量把语义不变的样本边界撑大。如果还是不行再考虑 LoRA rank 调小。5.2 评估阶段模型行为不确定和动作漂移同一个指令、同一张初始画面模型两次推理输出不同动作这不一定是你训练错了很可能只是采样参数没调好。连续动作模型用了随机采样或者离散动作解码时 temperature 设置高于 0.1都会引入额外噪声。评估阶段建议把 temperature 或方差直接设为 0或者用 top-k 中概率最高的动作先保证行为确定性再逐步放开随机性来观察探索能力。还有一种常见的问题是连续动作输出飘到不合理区间比如命令末端速度到了 1 m/s远超机器人安全限制。这个通常是因为动作头输出没有做界位或归一化边界设定。强烈建议在模型后面挂一个动作限幅层把输出硬件可接受范围映射到 [-1, 1] 并做线性缩放而不是在 controller 里做最后排错。5.3 仿真到真机的迁移域差和频率不匹配仿真里表现很好的模型搬到真机上成功率掉一半以上是常事。主要原因是光照变化、相机内参不同、背景纹理差异以及机械臂动力学误差。应对思路有三层最基础的是在仿真中做域随机化让相机有不同光照和视角其次是真机数据混合训练把少量真机数据按较高权重参与微调最后是部署时用动作捕捉或力反馈做闭环纠错而不是把 VLA 输出当开环指令直接执行。频率不匹配问题也要重视。VLA 推理一次往往要几百毫秒如果机械臂控制频率要求 10Hz直接序列化推理根本跟不上。实际做法是让 VLA 在低频如 3Hz 到 5Hz产出目标位姿或动作意图中间由插值控制器或 MPC 高频执行。换句话说VLA 做的是“意图生成”底层控制交给专门控制器。5.4 常见问题速查表现象可能原因排查方向训练 loss 不降图像与动作时序错位检查 HDF5 时间戳对齐、帧率验证成功率极低任务指令与数据不匹配检查指令生成模板、语义一致性动作输出跳跃动作归一化边界错误查看动作分布范围、限幅层配置模型输出重复同一个动作语言指令被忽视检查语言 token 在注意力中的权重真机成功率低于仿真域差、动力学参数不准使用域随机化、真机少量微调推理延迟超出控制频率模型过大/自回归 decode 慢蒸馏、int8 量化、异步多帧推理6. 我的一些实际选择建议让「想」和「做」各司其职看完上面这些可能已经明显感受到没有哪个模型是万能的。WM 擅长推理规划但离动作很远VLA 擅长直接映射但对长时程推理和反事实预测偏弱WAM 试图两手抓但在数据和训练上难度更高。我个人的项目经验是如果不是做研究性质的对比社区里最务实的选择是分层组合而不是端到端包办。我的做法基本是把 WM 当作一个“外挂的大脑”负责推理未来状态、生成候选动作序列或评估当前动作的后果把 VLA 当作“手和脚的执行网络”负责根据当前观测和语言指令给出近端的实际动作。日常短操作、抓取、放置这类不需要太多推演的任务直接让 VLA 干活就完了一旦进入需要长时程操作、需要避开动态障碍或需要处理未见过的新物体的场景就让 WM 先脑内推演几遍筛选出更可行的轨迹再让 VLA 跟随。这个架构在训练上是解耦的在部署时又可以通过中间指令接口衔接起来风险最小、迭代最快。另外想特别提一句无论你选择哪种路线数据和评测的规范性永远比模型结构重要。很多项目最后失败不是因为网络结构选错而是因为数据里含了大量歧义样本、评测指标定义不统一、甚至模型导入导出时动作维度都对不上。如果你能从第一天就把数据格式、评测脚本、可控随机种子都固定下来后面会发现整个模型迭代路径清晰得多踩坑数至少少一半。