ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

VLA模型科普:视觉-语言-动作模型架构、数据策略与机器人落地实践

VLA模型科普:视觉-语言-动作模型架构、数据策略与机器人落地实践

这两年机器人圈子里,讨论度直线上升的一个词就是VLA模型。全称叫Vision-Language-Action Models,视觉-语言-动作模型。做机械臂操作、移动机器人导航的人,几乎人手一份相关论文在读。我拿到这篇关于VLA模型的综述性论文时,第一反应是“终于有人把这块的现状给梳理清楚了”。这篇综述不是单纯罗列论文,而是站在真实世界应用的角度,把从模型架构、数据策略到落地方案的主线都给拎了出来。

这篇论文适合谁读?我觉得两类人最需要。一类是刚进入具身智能方向的研究生或者工程师,急需建立对VLA模型的整体认知框架,知道这个领域里哪些问题是真问题、哪些只是热闹;另一类是已经在跑机器人实机项目的人,比如做机械臂抓取、移动操作、人机协作的团队,想了解现阶段的VLA到底能帮我们解决多少实际问题,又有哪些坑还在等着我们自己填。

这篇综述的核心价值,在于它没有停留在“模型排行榜”式的简单比较上,而是认真讨论了“为什么VLA能成为机器人操作的通用解法”以及“距离大规模商用还差哪些关键拼图”。下面我就把论文里我认为最有价值的内容,结合自己在这个方向上的实操经验,展开聊聊。

1. VLA模型的底层逻辑:为什么机器人突然“看得懂人话”了

传统机器人操作pipeline是什么样?一套典型的组合是:目标检测网络或语义分割模型负责感知,状态机或行为树负责任务编排,底层的运动规划算法负责机械臂轨迹。这套架构的问题在于“感知”和“规划”是割裂的,每个环节单独训练、单独调参,一换场景就得重新折腾一遍数据。

VLA模型的思路不一样。它把“理解视觉信息”和“理解人类指令”这两件事直接统一到一个模型中,然后让模型直接输出机器人的动作,或者输出用于控制的高维向量。相当于把原来“眼睛”“脑子”“手脚”三个独立系统,合成一个端到端的系统。这么做的好处是,中间那些人工设计的特征和规则被大量减少,模型可以从原始传感器数据直接学到“看到这个杯子、听到‘把杯子放到托盘上’、然后手该怎么动”的完整映射。

这篇综述里明确区分了三种架构路线,我理解下来是这样:

架构类型核心思想典型代表优势短板
模块化串联视觉、语言、动作各自独立模块,串行传递信息感知模块+规划模块加一层语言交互每个模块可单独替换,调试直观误差逐级累积,信息传递有损
联合自主注意力视觉token和语言token进入同一个Transformer,动作作为额外token输出某多模态大模型系列端到端可微,跨模态信息融合充分训练成本高,需要海量数据
条件扩散式动作生成用扩散模型把语言、视觉作为条件,逐步生成动作序列某扩散策略VLA生成动作平滑,适合高频控制采样速度慢,需要蒸馏优化

我个人做项目更关注的是“联合自主注意力”这条路线,原因是它在真实任务里的泛化潜力最大。视觉和语言在同一套注意力机制里交互,等于模型自己学会了对齐“语言指代的对象”和“视觉里的物体”,不需要我们额外引入复杂的指代消解模块。

这里必须展开说一句:为什么端到端的VLA模型是趋势?因为传统方法里,语言指令和视觉特征之间的对齐往往靠规则。比如你说“抓红色的杯子”,如果视觉检测出多个杯子,系统只能靠颜色阈值去筛选,条件一复杂直接崩。但是VLA模型里的语言token和视觉token在训练中会反复进行跨模态注意力计算,模型自己掌握了“红色”“杯子”这些词和图像区域的对应关系,基本不需要人工硬编码规则。实测下来,同一个模型在未见过的新背景、新光照下,对指令的响应稳定性比传统pipeline强不少。

2. 架构拆解:视觉编码器、语言骨干、动作这个“三角色”怎么分工

综述论文把VLA模型拆成三个核心模块,这部分的梳理对做工程落地的人特别有参考价值,因为每一个模块的选择都直接影响最终的实机表现。

2.1 视觉编码器:不是越大的模型越好用

视觉编码器负责把图像或视频转成特征token。论文里对比了固定权重的预训练视觉编码器(如某ViT变体)和可微调的编码器,我的理解是:固定权重的编码器在数据量不够时会表现得更稳定,但可调编码器在数据充足时能学到更贴合机器人视角的特征。实操经验是,如果你手里的数据就那么几百条,建议直接冻结视觉编码器,优先训练语言模型和动作头。如果你有上万条多视角数据,那解冻编码器、让它适应机器人第一视角的视觉分布,能显著提升抓取精度。

我踩过一个比较深的坑:一开始用了针对自然图像训练的视觉编码器,没调,结果模型对机器人的“逼近视角”非常不适应。机器人自带的摄像头通常装在腕部或者头部,拍出来的视角和日常手机照片差很多——大量近距离、大畸变、部分遮挡的情况。固定权重编码器会在这些分布外数据上崩溃。后来解冻编码器、用真实环境图像做了几百步微调,问题立刻缓解。所以论文里强调“视觉特征必须与真实机器人部署环境对齐”,这句话是真的字字珠玑。

2.2 语言骨干模型:参数量和推理速度的权衡

语言模型是VLA的“认知核心”,负责对指令进行理解、推理和任务规划。论文讨论了语言模型规模的影响:更大的模型意味着更强的常识推理能力,但也会带来更长的延迟和更高的算力需求。

从实操角度,我建议把语言模型分成“云端大模型”和“端侧小模型”两层来选。任务优先级高、逻辑复杂,可以调用大模型进行任务级规划;一旦任务被解析成原子操作,就交给端侧的轻量语言模型,以保证控制频率。比如说“把抽屉拉开,取出里面的螺丝刀,再关上抽屉”,大模型负责把这个任务拆解成三个子任务,小模型负责在每个子任务中把当前视觉状态转成具体的动作指令。这种两级架构在延迟和泛化之间取得了相当好的平衡。

语言指令的Token化方式也值得留意。部分论文用的是官方分词器直接把自然语言拆成subword,另一部分则尝试将语言嵌入、作为全局条件向量注入。我的体会是,对短指令(“抓球”),全局条件嵌入就够了;对长指令(“把桌上的三本书按封面颜色从浅到深排好”),还是老老实实用token级输入,不然细节很容易丢失。

2.3 动作头:从“连续向量”到“真实关节指令”的最后一步

动作头是VLA模型的输出端,我倾向于认为这是实机和仿真差距最大的地方。论文里提到两类主流输出方式:

  • 离散动作token:把动作空间离散成若干类,例如每个关节角度切分成256个区间。好处是训练稳定、直接用分类损失,坏处是精度受限,如果关节角度落在边界附近,误差会被放大。
  • 连续动作回归:直接预测高维连续向量。优点是表达精度高,缺点是训练不稳定,需要额外的正则手段。

我自己在机械臂上做过对比,离散token的方式在大部分常见任务上都能跑,但是遇到需要精密插孔、对齐销钉这类高精度场景就吃亏。连续回归方式调试成本高,但调好后精度确实能上一个台阶。综述里有个很务实的建议:根据任务精度需求选择动作输出粒度,而不是盲目追求端到端的全连续输出。如果是做服务机器人的简单抓放,离散动作就够;如果是做精密装配,可能得考虑混合方案——用VLA选择粗抓点,再用局部伺服方法做细调。

另外一个关键参数是动作频率。VLA模型的推理速度通常是3到10赫兹,传统控制回路则是100到1000赫兹。论文里指出,很多团队用“预测未来N步动作”的方式来跑通这个频率差。也就是VLA一次推理输出接下来16到32帧动作,底层再用插值或阻抗控制去执行。这样既保证控制实时性,又保留了端到端模型的全局规划能力。我在部署中也确实感受到,预测多帧动作比单帧动作的平滑性好得多,机械臂不会出现“一顿一顿”的感觉。

3. 数据策略:VLA模型的“语料库”到底从哪来

论文里一个很扎心的观点是:VLA模型的性能天花板,很大程度上由数据决定,而不是模型结构。结构再先进,数据不够、分布太窄,照样在真实环境里翻车。这部分我看得特别认真,因为数据问题是我们这种做实际项目的团队每天都要面对的。

3.1 数据来源的“三个池子”

综述把VLA的训练数据分成三个层次,我根据经验补充一下各自的实际价值:

  • 互联网级图文数据:例如网页上的图片和文字描述。这种数据量可以达到数十亿级别,价值在于让模型获得视觉常识和语言理解能力。比如模型看到过大量“杯子”的图片,知道杯子是圆柱形、有把手、可以盛液体。这层数据通常用来预训练视觉编码器和语言模型。
  • 人类视频数据:例如YouTube上的家务视频、做饭视频。这类数据虽然没有动作标签,但提供了丰富的真实场景中“手如何与物体交互”的信息。综述里提到,有些团队用视频数据进行“动作预测代理任务”训练,让模型预测下一帧的手部位置,从而获得操作常识。
  • 机器人示教数据:真实机器人的远程操作数据,包含精确的关节角度、力反馈和场景变化。这是最贵也是最有用的数据。一条高质量示教数据可能标价几十元人民币,因为需要操作员佩戴遥控设备,手动控制机械臂完成任务,并且场景细节、光照、物体位置都要精心布置。

我自己的体会是,三种数据缺一不可。跳过互联网图文数据,模型的常识就少;跳过人类视频数据,模型对“手怎么接近物体”没有先验;跳过机器人示教数据,模型无法学会具体的控制指令空间。三者的配比,论文里给的建议大致是海量图片+大量视频+少量但精准的示教,这个方向和我实际操作下来感觉一致。

3.2 预训练与微调的实践套路

VLA模型的训练流程一般分三阶段:

第一步,用互联网图文数据预训练视觉语言模型,让视觉塔和语言塔对齐。这一步成本高,通常普通人不会自己练,而是直接用各团队开源出来的模型权重。

第二步,在人类视频或合成数据上进行动作预测预训练。这时候模型学会的是“看到手势、物体和场景,预测下一个合理动作”这种通用能力,不需要真实机器人参与。

第三步,用机器人示教数据微调动作头。这一步才是决定实机表现的关键,需要用目标机器人平台采集数据。我们可以在这个阶段引入数据增强,例如随机改变光照、物体颜色、背景纹理,防止过拟合。

我在微调阶段踩过的一个坑是,数据里物体位置太单一。全部把物体放在桌子正中央,模型训练出来确实100%成功,但换到稍微偏一点的位置就抓空。后来我在数据采集时故意让物体出现在画面的各个区域,顺便加了背景干扰物,模型一下就“皮实”了。数据多样性工程,永远是VLA落地中最具性价比的投入。

3.3 评估基准:别被成功率数字骗了

综述花了不少篇幅讨论评估方法,这也是我很想强调的一点。很多论文报指标,动辄“成功率95%以上”,但要注意几个前提:他们是不是固定了物体初始位置?是不是同一个光照?是不是同一台相机?如果训练和测试分布高度一致,再高的成功率也没有说服力。

真正评估VLA模型泛化性,应该做几类测试:

  • 视觉鲁棒性测试:换背景、换光照、换相机角度,看成功率衰减多少。
  • 指令多样性测试:同一任务换多种自然语言表达方式,比如“把苹果放到碗里”“拿红色的水果到那边去”。
  • 物体类别外推测试:训练时只见过三种杯子,测试时放一个完全没见过的杯子。

我这几年看下来,能在上述三类测试里都保持80%以上成功率的VLA模型,才是真正具备真实世界应用潜力的模型。论文里也告诫了“只用单一环境成功率来横向对比模型”的不合理性,这一点我完全认同。评估基准的设计,某种程度上比模型结构设计更影响论文结论的可信度。

4. 真实世界落地:四道还没完全跨过去的坎

这篇综述最有价值的部分,我认为是它对“真实世界应用”挑战的分析。毕竟VLA模型在仿真里再能打,要在工厂、家庭、仓储这些开放环境里真正干活,面前还有很多路要走。

4.1 推理速度与硬件成本

VLA模型普遍是数十亿参数的大模型,在普通工控机上推理一帧就需要几百毫秒到一两秒不等。对于需要快速响应的任务(抓取滑落的物体、避开运动中的人),这个速度远不够用。下载模型需要据实际部署环境做裁剪加速,目前常见的方案包括量化、剪枝、算子融合和用专用加速卡。综述里提到的“预测未来动作序列”也是缓解频率矛盾的重要方法。

但注意,压缩后的模型多少会损失精度,特别是量化到4-bit后,小模型的输出抖动可能明显。我实测下来,与其在推理框架上压榨那几十毫秒,不如在架构设计上动脑筋——比如把大模型的“慢思考”留到任务切换时,把轻量动作头的“快响应”放到每个控制周期执行。这种“慢规划+快执行”的混合架构,要比单纯优化单次推理延迟靠谱得多。

4.2 跨场景泛化:模型真的理解还是死记硬背

真实世界没有两个完全一样的场景。昨天的工厂车间和今天的,货架上的光照每小时都在变,部分物体位置可能被移动过。VLA模型的泛化能力在这个层面备受考验。

论文里指出,目前多数VLA模型仍然存在“分布内OK、分布外崩盘”的问题。也就是说,测试环境如果长得像训练数据,表现很好;一旦场景风格大变、物体形状罕见、指令说法偏离,模型就可能失灵。我见过比较典型的案例:训练数据里杯子都是正立放在桌上,测试时把一个杯子倒着放,模型看半天愣是不知道该怎么下爪。

解决泛化问题的路径有几个:一是增加数据多样性,让模型见得足够多;二是引入世界模型或者常识知识,让模型能够推理出“倒扣的杯子需要先翻转再抓取”;三是做在线自适应,在实机部署时用少量现场数据做快速微调。论文乐观地认为,随着数据规模扩大和多模态预训练的推进,泛化问题会持续缓解,但我个人觉得,在相当长一段时间里,我们还是要把VLA当作“很强的助手”,而不是“全能的机器人”。

4.3 安全性与可靠性问题

这可能是被很多论文忽略却在工业界最关键的点。VLA模型是概率模型,它的每次输出本质上都是基于统计的预测,天然不具备“绝对安全”的保证。如果在装配线上,机械臂突然做出一个意料之外的动作,后果可能是产品报废甚至人员受伤。

综述里对安全性的讨论集中在三个方面:

  • 动作约束:在模型输出和实际执行之间加一层安全过滤器,确保关节角度、力矩、速度不超过安全阈值。
  • 不确定性估计:有些VLA模型能给出预测的置信度,当置信度低时,系统应该停止并向人类求助,而不是硬着头皮执行。
  • 人工监督与干预:部署时保留操作员随时接管控制权的机制,是现阶段最可靠的安全底线。

我在做实际项目的过程中,一直把“不确定性触发人类介入”作为默认策略。模型有把握的情况下自动执行,没把握的时候掉线让人来处理。这种“人机协同”的模式虽然看起来不酷,但恰恰是VLA模型走向真实应用最务实的路径。论文里将它称为“shared autonomy”,我翻译成大白话就是“不确定就喊人”。

4.4 数据成本与长尾任务覆盖

VLA模型的核心燃料是高质量机器人数据。但现实世界的任务长尾是无穷无尽的——今天抓杯子,明天叠衣服,后天拧螺丝。每个新任务都需要采集一批新的示教数据。数据成本居高不下,是这个领域商业化道路上最大的拦路虎之一。

论文里提到的几种缓解思路我很认同:

  • 数据复用:设计通用性更强的任务表示,让一个模型覆盖多个场景、多种机械臂。
  • 合成数据:用渲染器生成大规模仿真数据,并配合域随机化迁移到真实世界。
  • 仿真到现实的迁移:将仿真训练出来的策略通过域适应、增强等手段迁移到实机。

但坦白讲,仿真到真实仍然存在动态差异,特别是接触力、摩擦、软体变形这些难以建模的物理特性。我觉得更乐观的方向是“仿真为主+真实数据微调”,先用仿真数据把基本技能学到,再用几十条甚至几条真实示教数据做调整。这跟人类学开车很像,模拟器里跑几百小时,再由老司机带十几公里,基本就能上路了。

5. 常见问题与排查技巧实录

最后分享一些我在VLA模型实机部署中亲身踩过的坑和排错经验。这些内容论文里一般不会写,但实际工作中几乎100%会遇到。每一项我都给一个排查路径,方便大家直接“抄作业”。

5.1 训练Loss降了,但实机表现一塌糊涂

这个现象太常见了。Loss下降代表模型拟合了训练分布,不代表掌握了任务。排查顺序:

  • 先确认训练数据里是否掺入了大量“偷懒”行为。例如远程操作时操作员总是从同一个角度接近物体,模型就会把这个角度学会,而不是学习“从哪接近都行”。
  • 再检查评估环境是否和训练环境分布差距过大。如果训练是在固定光源下,测试时开了一盏新的补光灯,视觉特征变了,行为自然就变了。
  • 最后看动作输出的分布。如果动作头输出的速度均值特别低,说明模型倾向于“不动”,这时可以检查动作损失权重是否太大,导致模型宁愿输出平均动作也不愿冒险。

5.2 模型动作抖动厉害,机器人像个“帕金森病人”

这个问题通常和两个因素有关。一是动作频率过低,模型输出的速度指令波动太大,底层控制器反应不过来。解决办法是采用预测未来多帧动作,并在执行时用低通滤波或阻抗控制。二是视觉编码器的特征在相邻帧之间不稳定,轻微的光照变化或相机噪声导致图像特征跳变,进而动作输出波动。

我试过最简单有效的一个方案是:在视觉特征进入语言模型之前,加一个跨帧的时间平均池化,把3到5帧的特征做融合,稳定性能改善很多。代价是反应延迟稍微增加,但在大多数操作场景里完全可以接受。

5.3 模型总是忽略语言指令中的“否定词”

比如指令是“不要抓红色的杯子”,模型却照抓不误。这不是模型听不懂话,而是训练数据里“否定指令”太少。互联网图文数据里的否定句比例本身就不高,而机器人示教数据里否定指令几乎为零。解决思路有两个:

  • 在数据采集时人为加入否定指令。比如录入一段“不要抓蓝色积木,抓黄色积木”的演示。
  • 在推理阶段做指令解析的后置约束,把否定指令解析成对目标集合的排除条件,再交给模型执行。

后者实现起来比较容易,但牺牲一些端到端的灵活性。如果做严肃项目,我建议两边都上。

5.4 换了一台同型号的新机械臂,成功率大幅下降

这是因为每台机械臂出厂时存在微小的关节零位偏差和运动学参数误差,虽然硬件一样,但控制坐标系可能存在几毫米的偏差。VLA模型非常“记仇”,连零点几弧度的差异都能让精准抓取失败。

排查方法是先做一次手眼标定,确认相机到机械臂底座的外参是否和训练数据一致。然后运行一个“集合动作校准”流程,让机械臂朝几个预设目标点移动,记录实际到达位置与期望位置的差值,对动作输出做在线补偿。这类小脚本虽然不起眼,但对实机成功率的提升非常显著。

5.5 常见问题速查表

现象可能原因排查与解决
训练Loss正常但成功率低数据分布单一/模型欠拟合增加场景多样性,检查评估环境差异
动作抖动频率不足/视觉特征跳变预测未来多帧动作,增加时间平均池化
忽略否定指令训练数据缺少否定样本补充此类示教数据,后置规则约束
实机成功率比仿真低域差异/机械臂零位偏差域随机化训练,手眼标定+集合动作校准
推理延迟过高模型太大/硬件算力不足量化剪枝,慢规划+快执行解耦
语言指令理解偏差指令与任务表达不匹配增加指令扩写,或对指令做归一化预解析

6. 我的一点体会

这篇综述读下来,最让我难忘的不是某个模型刷了多少分,而是作者反复强调的那句话:“VLA模型的目标不是替代底层控制器,而是在智能决策层面为机器人提供更强的理解与规划能力,最终与成熟的运动控制算法协同工作。”

我个人在实际项目中的体会是,VLA模型给我们带来的是一种全新的设计思路——以前我们教机器人“每一步怎么做”,现在我们教机器人“理解任务”,让它在充分安全约束下自己琢磨怎么做。这两者的差别,就像教一个人背菜谱和教一个人学做菜的区别。背菜谱的人换个菜就不会了,学做菜的人看到没见过的食材照样能想办法处理。

如果我是刚准备入这个方向,我的建议是:别一上来就动辄几十亿参数的模型,先在开源的小模型上把数据管线、评测流程和部署链路走通,然后逐步升级模型的规模和复杂度。这个领域的门槛看起来很唬人,但拆开看也无非“数据、模型、部署”三件事,而这三件事都有大量现成工具可以借用。先把一轮完整的“采集数据—训练—评测—部署—改进”闭环跑起来,你距离真正的落地就只有速度问题了。

最后再分享一个小技巧。如果你做的是机械臂抓取类任务,建议在训练数据里刻意加入“失败演示”,让模型看到错误的抓取尝试以及操作员如何纠偏。这个经验帮我在不少场景中显著减少了大开大合的错误动作。数据没什么花哨,但思路决定了模型的上限。

RELATED READING

延伸阅读

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