
最近后台和群里收到不少提问都是围着三个缩写转VLM、VLA、VLN。有人把VLA当成VLM的升级版有人以为VLN是VLA的一个数据集还有人干脆把三个词混着用。其实这三个概念在具身智能、多模态大模型和机器人导航领域各占一个位置既有重叠又各有侧重搞混了很容易在选方向、做实验时走偏。这篇文章就把它们的区别、联系以及怎么上手实验一次性讲清楚顺便把VLA在LIBERO上的测试流程、VLN的入门项目复现这条线也一起聊透。适合正在入门具身智能、想复现VLA/VLN论文或者对机器人“视觉-语言-行动”链路感兴趣的读者。1. 先搞清楚三个缩写VLM、VLA、VLN分别是什么1.1 VLM只说不动负责“看懂”的模型VLM全称是Vision-Language Model视觉语言模型。这类模型的输入是图像/视频加文本输出通常是文本或者一个跨模态的特征表示。CLIP、LLaVA、GPT-4V都属于VLM的范畴核心能力是把“看到的内容”和“语言的描述”对齐起来。你可以把它理解成一个“见多识广的讲解员”。给它一张图它能告诉你图里有什么、物体在什么位置、场景是什么氛围给它一段文字它能判断这段文字和哪张图匹配。但讲解员不会亲手帮你搬桌子VLM也一样它只负责理解和描述不负责输出任何机器人能执行的动作。VLM的训练思路也很直观。一类是对比学习比如CLIP让匹配的图文对距离更近、不匹配的图文对距离更远另一类是生成式训练比如LLaVA、GPT-4V用大规模图文数据和指令数据做监督微调让模型学会把图像内容“翻译”成自然语言答案。现在主流的VLM基本都是视觉编码器加语言模型的组合视觉部分提取特征语言部分负责推理和生成。1.2 VLA在VLM基础上长出“动手”的能力VLA全称是Vision-Language-Action Model视觉语言动作模型。它做的事情比VLM更进一步输入图像和文本指令输出机器人可以直接执行的动作比如关节角度、末端位姿、速度指令等。VLA和VLM在架构上最大的区别在“头”上。VLM输出的是文本tokenVLA则在语言模型之上增加了一个动作输出头把动作空间建模成离散token或者连续向量去预测。代表工作有Google的RT-2、斯坦福主导的OpenVLA、Physical Intelligence发布的π0很多人也直接叫它π VLA还有最近NVIDIA开源的面向辅助驾驶的VLA推理模型Alpamayo。这些模型的共同点是把“理解”和“控制”放在同一个模型里端到端训练不再需要传统的“感知→规划→控制”模块化流水线。在具身智能社区里最近经常看到“beat VLM”这种说法意思是某个机器人在操作任务上比纯VLM方案有更高的成功率。这本质上是在强调光看懂世界不够机器人要真正干成事必须把理解转化为动作能力而这一步正是VLA存在的价值。1.3 VLN不只动手还得在环境里“认路走完全程”VLN的全称是Vision-and-Language Navigation视觉语言导航。它的任务定义很清晰给一个智能体一条自然语言指令比如“从卧室出发走到厨房把桌上的红色杯子拿起来”智能体需要边观察环境边决定下一步往哪走最终到达目标位置。VLN和VLA最明显的区别在于任务的时空跨度。VLA通常处理的是单步或几十步内的桌面操作工作空间就是机器人面前那一小块区域VLN则要在一个完整的室内环境里做长程导航动辄几十步、上百步跨房间、跨楼层都很常见。VLN的评价指标也和VLA完全不同最常用的是成功率SR和按路径长度加权的成功率SPL。典型的VLN研究载体是R2R数据集、RxR数据集以及面向连续动作空间的VLN-CE基准。方法上早期是专用的序列模型后来是多模态Transformer最近两年LLM/VLM驱动的零样本VLN也成了热门方向比如NavGPT、TraveXplorer这类工作。我后面会专门展开讲TraveXplorer这类项目怎么复现。2. 三者的核心区别理解、操作与导航2.1 一张表看懂输入、输出和评价维度的差异把三个概念放在同一张表里对比就非常清楚了维度VLMVLAVLN全称Vision-Language ModelVision-Language-Action ModelVision-and-Language Navigation核心任务理解视觉和语言根据视觉语言生成操作动作根据指令在环境中长程导航输入图像/视频 文本图像/视频 文本含历史状态图像 文本指令 历史观测输出文本/特征向量动作向量关节/末端/速度导航动作序列或路径典型代表CLIP、LLaVA、GPT-4VRT-2、OpenVLA、π0、AlpamayoTraveXplorer、NavGPT、BEVBert评测方式图文检索、VQA、描述生成操作成功率如LIBEROSR、SPL如R2R、VLN-CE部署形态API服务或模型库机器人策略模型导航智能体系统这张表是很多人第一次看最需要的东西。VLM站在“理解层”输出的是符号VLA站在“操作层”输出的是机器人关节空间的信号VLN站在“任务层”它关心的不是某一个动作怎么给而是整条轨迹怎么走完。2.2 从“看懂”到“动手”再到“走通”的递进关系我用一个生活化的类比来解释三者关系。你到了一个陌生的城市VLM相当于一个只读地图不出门的导游它能告诉你“市中心在东边、博物馆在河对面”但它不会替你迈一步。VLA相当于一个机械臂操作员它能把面前桌上的杯子拿起来、放进托盘但它离不开工位无法自己走到隔壁房间找杯子。VLN则是一个能在楼里来回穿梭的送货员它听指令认路、进房间、走到目标物面前——至于最后怎么稳稳抓取那个杯子往往还要靠VLA去完成。所以三者的关系不是简单的“升级”而是“地基相同、目标不同”。VLM是基础能力层VLA是把能力往操作方向延伸VLN是把能力往空间决策方向延伸。在日常讨论中VLA和VLN经常被放在一起是因为它们都属于“具身智能”任务都要让模型做闭环决策都需要与环境持续交互。2.3 隐含差异任务时间尺度与动作空间形态除了输入输出三者还有一个经常被忽视的差异就是时间尺度和动作空间形态。VLM的推理是“一次性的”给一张图、返回一段话没有连续决策的概念。VLA的动作空间通常是连续控制的一次推理输出一个动作向量比如七维动作三维位置、三维姿态、夹爪开合然后这个动作在仿真器或真机上执行新图像再送回来做下一次推理。这里的决策频率很高一秒十几次甚至几十次都很常见。VLN的动作空间则有两种形态。一种是离散图导航环境被建模成预定义的航点图智能体只需要选择“去哪个节点”典型代表是R2R另一种是连续空间导航比如VLN-CE智能体直接输出前进、转向等连续速度指令更接近真实机器人部署。从单步决策频率看VLN远低于VLA但从时间跨度和空间范围看VLN要处理的信息量更大也更容易累积错误。3. 三者的联系VLA和VLN都长在VLM的根上3.1 VLA与VLM的联系动作作为语言的延伸VLA在结构上几乎就是把VLM“换了个输出目标”。RT-2的做法是最直观的例子把机器人动作离散成token然后像语言模型预测下一个单词一样去预测下一个动作token。OpenVLA也是类似的思路加载一个预训练的VLMPrismaticLLaVA的变体再把动作回归任务接在语言模型后面用Open X-Embodiment数据集做监督微调。π0则更进一步用流匹配的动作头直接生成连续动作分布避免离散化的精度损失。这种设计思路有一个很实际的好处VLM从互联网图文数据里学到的“世界知识”可以无缝迁移到机器人控制任务。比如模型见过无数“红色杯子”“抽屉”的图文对当机器人收到“把红色杯子放进抽屉”的指令时VLA中的语言模型部分已经具备对物体和空间关系的理解只需要再学一层动作映射就能输出合理策略。这也是为什么现在VLA基本都基于大参数VLM初始化而很少从零随机训练。3.2 VLN与VLM的联系导航本质是空间化的视觉推理VLN和VLM的关系更微妙。很多人第一反应是“VLN不就是给VLM加个导航模块吗”实际没这么简单但确实建立在VLM基础之上。传统VLN方法要专门设计场景语义编码器、指令编码器和跨模态注意力模块训练成本高、泛化也一般。最近两年出现了大量用VLM/LLM做导航决策的工作比如NavGPT直接用大语言模型做推理把历史观测转成文字描述再让LLM决定下一步动作TraveXplorer则把流程拆成视觉感知、场景记忆、指令理解、动作规划几个模块其中视觉感知部分就用到了视觉语言基础模型。VLM在VLN里充当的角色可以概括为三类第一是“语义传感器”把原始图像变成富含语义的文字或特征描述第二是“工作记忆”维护一个拓扑化的场景记忆告诉模型“我从哪里来、去过哪些地方”第三是“决策器”根据指令、当前观测和历史记忆从候选动作或候选地点里选一个执行。所以VLM给VLN带来的核心提升是“零样本理解能力”模型没有见过某个真实场景也能凭借图文预训练知识判断“卧室”“厨房”“走廊”长什么样从而完成导航。3.3 交叉地带导航型VLA与自动驾驶VLAVLA和VLN之间的边界并不总是清楚的因为存在一批“既是VLA又是VLN”的系统。最典型的就是自动驾驶场景。NVIDIA开源的Alpamayo就是一个面向辅助驾驶的VLA推理模型输入是道路图像、历史驾驶状态和文本指令输出是方向盘、油门、刹车等控制动作。把它放到上面的表格里它的任务本质是“在动态环境中导航到目的地”属于VLN的任务范畴但它的输出是连续控制信号、决策频率很高又符合VLA的技术特征。另一个例子是“移动操作”机器人。一个轮式底盘加一条机械臂收到“去厨房拿一瓶水放到客厅茶几”指令后它需要先做VLN式的导航抵达厨房后再做VLA式的抓取、操作。现在很多研究团队已经在做这种“导航操作”的统一大模型把VLA的动作空间扩展成“底盘速度机械臂关节”的联合空间同时建模长程导航策略和近端操作策略。这个概念上的融合未来只会越来越多这也是有必要把三个术语理清楚的现实原因。4. 实操参考VLA在LIBERO上的测试与VLN项目复现4.1 VLA测试第一步环境准备与模型加载如果你现在想跑一个VLA模型最推荐从OpenVLA开始。原因是它的权重公开、开源协议友好、配套代码相对完善而且社区讨论多遇到问题容易搜到解决方案。环境上建议用一台显存至少24G的GPU比如RTX 4090、A6000、A100系统装好PyTorch 2.x、transformers、accelerate。OpenVLA的模型加载现在可以直接走HuggingFace核心代码看起来是这个样子import torch from transformers import AutoProcessor, AutoModelForVision2Seq processor AutoProcessor.from_pretrained( openvla/openvla-7b, trust_remote_codeTrue ) vla AutoModelForVision2Seq.from_pretrained( openvla/openvla-7b, torch_dtypetorch.bfloat16, trust_remote_codeTrue ) # 输入一张机器人视角图像 一条文本指令 image load_image(robot_view.png) instruction pick up the red cup and put it in the drawer inputs processor( image, instruction, return_tensorspt ).to(vla.device) # 输出动作向量或动作token取决于模型配置 action vla.predict_action(**inputs, unnorm_keylibero_spatial) print(action)注意不同版本文档对predict_action的参数名可能略有不同建议以官方仓库README为准。我当时第一次跑就卡在transformers版本上OPENVLA的代码对transformers版本比较敏感版本太高或太低都容易报兼容性错误稳妥做法是直接用官方environment.yml创建conda环境再手动加自己需要的包。4.2 在LIBERO上跑通VLA评估流程LIBERO是现在VLA评测最常见的基准之一全称是Learning In Interactive Robotic Environments核心是几十到上百个桌面操作任务专门测试模型的空间泛化、物体组合泛化、目标泛化和长时程规划能力。LIBERO里常用的任务套件有LIBERO-Spatial、LIBERO-Object、LIBERO-Goal、LIBERO-Multi-Task、LIBERO-Long-Horizon每个套件都有100条测试episode最终报告平均成功率。为什么大家都在LIBERO上测VLA因为它使用仿真环境不需要真机成本低、可复现性强任务设计上区分了“空间位置变化”“物体组合变化”“目标指令变化”等不同维度的泛化能力能比较客观反映模型到底是背了训练数据还是真正学会了理解指令和操作逻辑。在LIBERO上测VLA的基本流程分四步安装LIBERO依赖Mujoco、robosuite等最稳的是按官方environment.yml建conda环境。下载VLA权重比如OpenVLA-7B基座权重。使用官方评估脚本指定数据集和测试范围跑完会输出成功率。如果要做微调就准备LIBERO的专家演示数据先做LoRA微调再评估。整个评估循环用一个伪代码理解更直观success_list [] for episode in libero_test_set: obs env.reset() instruction env.get_task_instruction() done False while not done: image obs[agentview_rgb] action vla.predict_action(image, instruction) obs, reward, done, info env.step(action) success_list.append(env.is_success()) avg_success sum(success_list) / len(success_list) print(fLIBERO成功率: {avg_success:.2f})这里有一个比较关键的细节VLA输出的动作通常需要反归一化。因为训练时动作被压缩到[-1,1]区间推理后要乘以动作空间的范围才能给仿真器执行。OpenVLA的checkpoint里通常绑定了每个数据集的归一化参数加载时把对应的unnorm_key传进去就行比如上面例子里的libero_spatial。不传错误则动作会明显漂移成功率直接崩到接近零这是很多人复现时最容易踩的坑之一。4.3 VLN入门R2R、VLN-CE与TraveXplorer复现VLN的入门门槛比VLA略高一些主要卡在数据集和模拟器上。入门最常接触的两个数据集是R2R和VLN-CE。R2R基于Matterport3D扫描的真实室内场景将环境抽象成离散航点图导航变成“选择下一个航点”的分类任务入门友好VLN-CE则把离散图拿掉智能体在Habitat仿真器里输出连续速度指令更接近真机难度也更高。推荐入门路径是先跑一个R2R上的经典基线理解最基础的“指令编码→视觉编码→跨模态匹配→动作选择”框架。然后再去看最近两年大模型驱动的零样本导航工作。TraveXplorer就是个很好的研究和复现对象。这类零样本VLN框架通常不做任务数据集的微调而是把流程拆成几个模块视觉感知模块用视觉语言基础模型把当前视角渲染成语义描述记忆模块用拓扑图维护已经探索过的区域规划模块用LLM根据自然语言指令和场景记忆做下一步决策最后再由底层的导航策略执行动作。复现的时候你真正要动手实现的是这几个模块怎么串起来以及怎么给LLM设计有效prompt。复现TraveXplorer一类项目时常见的流程是准备好Matterport3D模拟器和Habitat环境R2R需要下载场景数据VLN-CE还需要额外下载数据集。配置LLM的API key因为零样本VLN通常要调用GPT等大模型做推理。跑通主干逻辑先不追求成功率重点看智能体是否能在简单场景里按指令完成几步导航。再逐步加记忆增强、低级策略优化、指令错误恢复等模块。这里有一个比较反直觉的经验零样本VLN的成功率往往比有监督基线低不少但它的“泛化性”体现在未见过的场景上。所以复现时不要只盯着绝对SR数字要看模型有没有真的在“理解指令—执行导航”而不是像有监督模型那样遇到训练集外的场景就乱走。4.4 一条相对平滑的入门学习路线如果你是从零开始想进入这个方向我给一条相对平滑的路线大约需要八到十周。第一周打基础把Transformer、CLIP、多模态对齐的核心概念过一遍不用深入推导但要清楚VLM的输入输出和训练范式。第二到第三周选一个轻量VLM跑通图文问答比如用LLaVA的轻量版本或OpenFlamingo理解视觉编码器和语言模型怎么交互。第四到第六周进入VLA读OpenVLA论文在LIBERO-Spatial上跑通评估尝试用LoRA微调一个简单任务。第七到第八周进入VLN精读R2R论文跑一个baseline再尝试复现TraveXplorer。后面时间就可以结合具体课题深挖比如把VLA的导航能力扩展、或者做VLN和真实机器人的对接。有人会问VLA和VLN能不能同时学我的建议是别贪多先抓一条主线。如果你更关注机器人操作控制先死磕VLA如果你更关注空间推理和智能体决策先死磕VLN。两个方向的前置知识80%重合先做出一个有深度的成果再横向迁移反而更快。5. 坑与心得实测中踩过的那些问题5.1 LIBERO和VLA相关的常见问题LIBERO安装失败是高发问题。绝大多数情况出在Mujoco和robosuite的版本兼容上尤其是系统自带OpenGL库冲突。建议在干净的conda环境里安装不要直接pip install -r requirements.txt先执行官方environment.yml再检查mujoco_py是否能正常渲染。还有一个常见问题是LIBERO依赖的Python版本官方通常要求3.8或3.9新版Python容易编译失败。显存不足也非常常见。OpenVLA-7B用bfloat16加载推理大约要14G显存但LIBERO评估时还会开仿真渲染如果GPU同时跑模型和渲染24G是起步32G以上比较舒坦。如果显存不够不要直接硬扛一是把图像分辨率调低二是把batch_size设到1三是考虑用LoRA微调一个小模型或者用量化加载。需要特别提醒的是很多人只看成功率来挑模型但在LIBERO这种规模较小的benchmark上随机种子和初始化都会对结果产生几个点的波动比较模型差异时务必多次运行取平均。动作反归一化的问题前面提过再强调一次。OpenVLA在LIBERO上出现的“训练成功很高评估崩成零”的案例一半以上是unnorm_key传错了。不同数据集的动作范围和频率都不一样不要自己硬算直接用权重文件里记录的归一化参数。5.2 VLN相关的常见问题与排查VLN复现第一道坎是模拟器。R2R导航依赖Matterport3D模拟器有些数据集需要申请下载权限等审批可能就要几天。VLN-CE依赖Habitat安装时要留意版本以及渲染后端是CPU还是GPUCPU渲染慢到让人怀疑人生建议直接上带GPU的服务器。第二道坎是LLM幻觉。零样本VLN里LLM经常会在决策时“想象”出一个不存在的目的地比如指令说“去厨房拿苹果”模型已经在客厅却直接回答“走到苹果面前”而眼前根本没有苹果。排查思路是给LLM的候选动作做约束从环境真实可执行的动作集合里选而不是让LLM自由生成。另一个经验是把历史记忆做得更“稠密”——不要让LLM只凭当前一帧图像做决策把最近几步的观测描述和拓扑图路径都拼进prompt误判率会明显下降。第三道坎是评估指标的误读。SR和SPL是VLN最核心的指标但很多人复现时发现某个模型SR高、SPL低就觉得奇怪。这其实是正常的SR衡量“到没到”SPL衡量“有没有高效地到”。有的模型会在环境里绕一大圈最后到达目标SR高但因为路径太长SPL就被拉低了。分析模型行为时两个指标要一起看单看任何一个都可能得出错误结论。5.3 最后说点个人体会从一个方向跑到另一个方向的过程中我最大的感受是VLM、VLA、VLN本质上都在解决同一个问题——让机器学会“看见、思考、行动”的闭环只是落点不同。VLM强调感知理解VLA强调动作执行VLN强调空间决策与长程任务组织。理解这一点之后你会发现很多论文其实是在边界上做文章有论文给VLA加导航头有论文用VLN的拓扑记忆改进VLA的长时程操作也有自动驾驶工作把VLA和VLN完全揉在一起。方向在融合术语在模糊但底层逻辑没有变。如果你正在纠结该从哪个入手我的建议是先把VLM的基础打牢再根据自己是偏操作还是偏导航来选择VLA或者VLN深入。做实验的时候一定要记录每一个环境版本、权重版本、参数设置和随机种子——这种习惯在复现和对比模型时能省下一大堆时间。当然也别迷信benchmark上的几个点机器人这个领域仿真和真机之间的鸿沟往往比两个模型之间的差距大得多。真正重要的是你能不能把模型放进一个闭环系统里稳定地跑起来这一关过了方向上的细节问题反而都好解决。