Vesta 方法详解:让一个 VLM 成为机器人的高层“大脑”
一句话理解 Vesta:它用一个视觉语言模型统一负责“看懂场景、回忆过去、判断进度、决定下一步”,再把自然语言子任务交给低层控制器执行。
1. 先看全貌:Vesta 到底是什么?
Vesta 是一个机器人的高层规划器。
它接收三类信息:
- 人给出的总目标;
- 机器人现在看到的画面;
- 机器人过去看过什么、做过什么。
然后,它输出下一步应该做的事情。
这里最容易误解的一点是:
Vesta 不直接输出机械臂的关节角度,也不负责每一帧的运动控制。
它更像一个现场指挥者:
Vesta 论文主要研究的是上面的 Planner,而真实机器人实验中的低层 Actor 使用 Gr00t-N1.6。
2. Vesta 想解决什么问题?
2.1 传统方案:每种能力放一个专家模型
机器人需要很多高层能力:
- 定位物体;
- 理解空间关系;
- 按语言指令导航;
- 回答具身问题;
- 规划长任务的下一步。
传统系统通常为每种能力准备一个模型。
这种方案的问题是:模型多、部署复杂、推理慢,而且前一个模型出错后,错误会继续传给后面的模型。
2.2 Vesta 的做法:一个模型统一处理
Vesta 把这些能力放进同一个 VLM,并把不同任务的答案都表示成文本。
例如:
| 任务 | Vesta 的输出 |
|---|---|
| “红杯子在哪里?” | 一个点或框坐标 |
| “走到浴室门口” | 前方落点、左转/右转或 STOP |
| “现在任务做到哪了?” | 自然语言进度描述 |
| “下一步做什么?” | “打开右下抽屉” |
所以,Vesta 的第一条核心思想是:
让定位、导航、推理和规划共享同一个视觉语言模型,并统一成“看图后生成文本”的任务。
3. 真正关键的机制:图文混合记忆
只统一任务还不够。机器人执行长任务时,最大的困难是:当前画面并不能告诉它过去发生了什么。
3.1 为什么机器人必须记住过去?
论文使用的三个真实机器人任务很直观:
如果模型只看当前帧,它很可能:
- 重复打开同一个抽屉;
- 多放或少放一个水果;
- 盒子关上后忘记糖果颜色。
因此,Vesta 的决策不是简单的:
而是:
其中:
- \(g\) 是总目标;
- \(o_t\) 是当前画面;
- \(\mathcal M_t\) 是过去的记忆;
- \(z_t\) 是下一条高层子任务。
3.2 Vesta 记住两种东西
Vesta 的记忆非常简单,没有专门训练一个复杂的记忆网络。
它只保存:
- 历史图像:过去真实看到了什么;
- 历史子任务文字:过去决定做过什么。
为什么两种都要?
| 记忆方式 | 问题 |
|---|---|
| 只有图像 | 模型要从很多画面里重新总结进度,容易误判 |
| 只有文字 | 模型容易过度相信历史日志,忽略现实是否真的变化 |
| 图像 + 文字 | 文字负责概括,图像负责核验,效果最好 |
论文的消融结果也支持这一点:图文混合记忆明显好于只用图像或只用文字。
3.3 历史图像不能无限增加
机器人运行越久,历史图片越多。如果全放进模型,上下文会越来越长,速度也会越来越慢。
Vesta 的处理方式很朴素:
- 只保留有限数量的历史图片;
- 第一帧始终保留,用来记住初始状态;
- 其余图片可以均匀抽样,也可以偏向最近的图片;
- 历史子任务继续以文字日志的形式保留。
论文比较了均匀采样和近期偏置采样,两者效果接近。这说明:
记忆中同时有图像和文字,比用多复杂的采样算法更重要。
3.4 记忆构建伪代码
函数 构建记忆(历史, 图片上限 K):如果没有历史:返回空记忆历史图片 = 保留第一帧历史图片 += 从其余帧中抽取最多 K-1 张# 可以均匀抽取,也可以偏向最近的帧历史文字 = 按顺序记录过去输出的子任务# 例如:检查右上抽屉、检查左下抽屉返回 历史图片 + 历史文字
历史图片上限 \(K\) 的具体数值没有在论文中公开。
这就是 Vesta 的第二条核心思想:
用少量历史图片保存视觉证据,用子任务文字保存语义进度,再把二者重新放进下一次 prompt。
4. Vesta 每次怎样思考下一步?
动作规划时,Vesta 不直接只吐出一句动作,而是按四个阶段思考:
例如:
Observation: 当前打开的抽屉里可以看到苹果。
Progress: 搜索已经完成,但苹果还没有被取出。
Reasoning: 现在不应继续搜索,应该先取出苹果。
Action: 从抽屉里取出苹果。
四段的作用分别是:
| 阶段 | 解决的问题 |
|---|---|
| Observation | 防止模型忽略当前画面 |
| Progress | 强迫模型把当前状态和历史联系起来 |
| Reasoning | 判断应该继续当前动作,还是切换下一步 |
| Action | 给低层 Actor 一条明确、可执行的子任务 |
只有最终的 Action 会写进记忆,前三段不会不断累积。
这样做可以保留“做过什么”,又不会让冗长的推理过程把上下文撑满。
5. 模型结构:简单理解就够了
Vesta 没有提出一套全新的神经网络骨干。它从 Qwen3-VL-8B-Instruct 开始训练。
从方法层面,只需要理解三部分:
Vesta 真正的变化主要不在网络结构,而在:
- 用什么数据训练;
- 怎样把多种具身任务统一起来;
- 推理时怎样加入图文记忆;
- 怎样连接高层 Planner 和低层 Actor。
因此,不需要记住底座每层的维度,也能理解 Vesta 的方法本身。
6. Vesta 是怎样训练出来的?
6.1 训练目标:把一个通用 VLM 变成具身通才
Vesta 使用六类数据做监督微调:
每类数据负责的能力可以简单理解为:
| 数据 | 教会模型什么 |
|---|---|
| 空间智能 | 理解方向、距离、遮挡和空间关系 |
| 导航 | 根据路线指令和第一视角图像决定往哪里走 |
| 定位 | 把语言描述对应到图像中的点或区域 |
| 通用 VLM | 保留常识、语言理解和普通视觉问答能力 |
| 具身推理 | 判断物体能否抓、放在哪里、任务进行到哪一步 |
| 真实机器人 | 适应机器人视角、真实遮挡和实际操作场景 |
Vesta 对 Qwen3-VL-8B 做的是全参数 SFT:视觉部分、连接部分和语言模型一起更新,而不是只训练一个小适配器。
6.2 为什么要特别增加“动作切换”样本?
一段操作视频里,大多数时间都在重复执行当前动作;真正需要切换到下一步的时刻很少。
如果直接按原视频采样,模型很容易学成“永远继续当前动作”。
所以 Vesta 将稀少的转场样本做 \(2\times\) 过采样,让模型更会判断:
- 当前动作是否完成;
- 什么时候应该切换;
- 下一步应该换成什么。
这是一个很小但很重要的数据设计。
6.3 Loss:本质上就是监督模型生成正确答案
所有任务最后都变成文本生成,因此可以共用标准的自回归交叉熵:
直观理解:
无论标准答案是坐标、导航动作、自然语言答案,还是下一条子任务,都用同一种方式训练。
论文公开的训练流程是 SFT,并没有使用强化学习。
7. 推理时怎样真正运行?
7.1 机器人操作:Planner 和 Actor 循环配合
主论文采用同步方式:需要重新规划时,Actor 暂停,等待 Vesta 给出新子任务;得到结果后继续运动。
论文也实现了异步方式:Vesta 在后台持续规划,Actor 使用最新缓存的子任务,这样运动更连续,但规划看到的图像可能稍旧。
7.2 导航:Vesta 决定高层动作,导航后端负责走过去
导航时,Vesta 接收路线指令、当前画面和少量历史画面,然后输出三类结果:
Vesta 不负责每个物理仿真步,只负责高层决策。移动完成后,它再看新画面并重新判断。
循环直到任务结束:读取当前画面从历史中抽取少量画面动作 = Vesta(路线指令, 历史画面, 当前画面)如果动作是 STOP:结束否则:让导航后端执行该动作保存当前画面,进入下一轮
8. 贯穿示例:寻找抽屉里的苹果
任务:找到苹果,把它放到桌上,而且不能重复打开同一个抽屉。
第一步:刚开始搜索
当前画面:四个关闭的抽屉
历史:空Vesta 输出:
Observation: 面前有四个关闭的抽屉。
Progress: 尚未开始搜索。
Reasoning: 应先检查一个抽屉。
Action: 检查右上抽屉。
Actor 打开右上抽屉,里面没有苹果。
Vesta 把“检查右上抽屉”和当时的画面写入记忆。
第二步:避免重复搜索
这里,文字记忆让 Vesta 快速知道“右上已经查过”,历史图像让它确认右上抽屉确实是空的。
第三步:发现苹果后切换动作
假设苹果出现在右下抽屉。
Observation: 右下抽屉已经打开,里面可以看到苹果。
Progress: 搜索阶段完成,但苹果还没有被取出。
Reasoning: 不需要继续搜索,下一步应该取出苹果。
Action: 从右下抽屉中取出苹果。
这一步体现了转场训练的价值:模型不再机械地“继续找”,而是发现上一阶段已经完成,并切换到正确下一步。
完整闭环
整个过程中,Vesta 做的是“决定下一条子任务”,Actor 做的是“把该子任务执行出来”。
9. 为什么这个简单方法有效?
Vesta 并没有依赖复杂的新网络,而是把几个简单设计组合得很好。
可以把它的成功原因归纳为五点:
- 统一能力:不同任务互相提供帮助,而不是各自孤立训练;
- 数据比新结构更重要:空间、导航、具身和真实机器人数据共同塑造能力;
- 记忆足够简单:不需要复杂检索器,少量图片加文字日志已经很有效;
- 专门学习动作切换:解决“永远继续当前动作”的常见问题;
- 高低层分工明确:Vesta 负责想,Actor 负责做。
10. 方法的边界
理解 Vesta 时,也要知道它没有解决什么:
- 它不是端到端的机器人动作模型;
- 记忆是当前 episode 内的短期记忆,不是跨天、跨任务的终身记忆;
- 历史图片靠简单采样,不会主动学习“哪张最重要”;
- Actor 如果执行失败,Planner 不一定能完全补救;
- 真实机器人只在一种双臂平台和三个任务上验证;
- 论文没有公开完整代码,也没有公开图片预算 \(K\)、完整 prompt 等全部复现细节。
11. 一分钟总结
最后只需记住这句话:
Vesta 的核心不是发明一个复杂的新模型,而是把“统一的具身多任务训练、图文混合记忆、四阶段规划、Planner-Actor 闭环”组合成一个简单而有效的机器人高层大脑。