VLA:视觉-语言-行动模型¶
VLA(Vision-Language-Action Model)是把“看见什么”“听懂什么”和“该怎么动”合到一起的机器人基础模型。它接收图像/视频、语言指令和可选的机器人本体状态,输出可以被机器人执行的动作。
一句话理解¶
传统机器人系统常常是:
VLA 想做的是:
也就是让模型直接学习:
\[
\pi_\theta(a_{t:t+H} \mid o_t, l)
\]
其中 \(o_t\) 是当前观测,\(l\) 是自然语言任务,\(a_{t:t+H}\) 是未来一小段动作。这里的策略 \(\pi_\theta\) 不是只会输出文字的 LLM,而是能把多模态理解转成机器人动作的策略模型。
最重要的直觉
VLM 让模型知道“这是什么、在哪里、用户想干什么”,VLA 再把这种理解接到机器人动作空间里,让模型学会“下一步手应该怎么动”。
现有规划是否合理?¶
你原来的规划总体是合理的:先学 VLM,再学动作 token,再学数据与仿真,最后做微调和部署。这条主线正好对应 VLA 的四个核心问题:
| 问题 | 需要掌握 |
|---|---|
| 学 VLA 前要先分清哪些概念? | policy、模仿学习、行为克隆、ACT、Diffusion Policy |
| 模型如何看懂场景? | VLM、视觉编码器、多模态对齐 |
| 模型如何输出动作? | 动作空间、动作离散化、Diffusion/Flow 动作头 |
| 模型从哪里学动作? | 遥操作数据、Open X-Embodiment、LeRobot、RLDS |
| 如何落到自己的机器人? | 行为克隆、微调、仿真验证、控制频率与安全约束 |
需要补强的地方主要有四点:
- 不要把 VLA 等同于“下一个动作 Token 预测”。OpenVLA、RT-2 走离散动作 token 路线,但 Octo、pi0、SmolVLA、GR00T N1 等更强调连续动作、diffusion 或 flow matching。
- 动作表示要单独学。VLA 的难点不只是接一个机械臂,而是把不同机器人、不同坐标系、不同控制频率的动作统一成模型可学习的表示。
- 新手实践优先用 LeRobot/SmolVLA 跑通闭环。OpenVLA 很适合读源码和理解大模型 VLA,但从零实践时成本较高。
- 评估与安全必须提前考虑。机器人模型不能只看 loss,要看成功率、碰撞、时延、抖动、分布外指令和失败恢复。
VLA 的核心运行流程¶
graph LR
A[摄像头图像/视频] --> B[视觉编码器<br>ViT/SigLIP/DINOv2]
C[语言指令] --> D[Tokenizer]
E[机器人状态<br>关节角/夹爪/末端位姿] --> F[状态编码]
B --> G[多模态融合]
D --> G
F --> G
G --> H[VLM/LLM Backbone]
H --> I{动作头}
I -->|离散 token| J[反量化为动作]
I -->|Diffusion/Flow| K[生成连续动作块]
J --> L[低层控制器]
K --> L
L --> M[机器人执行]
1. 输入:观测和任务¶
典型 VLA 输入包含:
- 视觉观测:腕部相机、第三视角相机、多相机或视频帧。
- 语言指令:例如“把红色积木放进左边盒子”。
- 机器人状态:关节角、末端位姿、夹爪开合、力/触觉等。
2. 中间:多模态理解¶
视觉编码器把图像切成 patch token;语言 tokenizer 把指令切成文本 token;投影层把视觉特征接入 LLM 的 token 空间。模型需要理解物体类别、空间关系、任务意图和当前进度。
3. 输出:动作表示¶
VLA 的输出不是自然语言,而是动作。常见动作包括:
- 末端执行器增量:\(\Delta x, \Delta y, \Delta z, \Delta roll, \Delta pitch, \Delta yaw\)
- 夹爪命令:打开、闭合或连续开合度
- 关节命令:目标关节角、关节速度或力矩
- 动作块:未来 \(H\) 步连续动作,减少逐 token 输出带来的延迟
知识地图¶
| 模块 | 你要搞懂的问题 | 对应笔记 |
|---|---|---|
| 前置知识 | 模仿学习、行为克隆、ACT 和 VLA 到底是什么关系? | VLA 前置知识 |
| VLM 基础 | 图像如何变成 LLM 能理解的 token?ViT/CLIP/SigLIP/DINOv2 各自做什么? | VLM 基础 |
| ViT 基础 | 图像如何被切成 patch token 并进入 Transformer? | Vision Transformer |
| 动作表示 | 连续控制信号如何变成 token 或动作块? | 动作表示与策略头 |
| 数据与训练 | 一条机器人演示数据长什么样?怎么训练? | 数据、训练与评估 |
| 模型谱系 | RT-1/RT-2/OpenVLA/Octo/pi0/SmolVLA 各自解决什么问题? | 典型模型与论文路线 |
| 实践路线 | 新手如何从环境搭建走到微调部署? | 实践路线 |
推荐学习路线¶
阶段 0:补齐前置知识¶
- 机器人学:坐标系、末端位姿、关节空间、笛卡尔空间、轨迹规划。
- 深度学习:Transformer、注意力机制、tokenization、微调。
- 强化学习/模仿学习:行为克隆、DAgger、Diffusion Policy 的基本思想。
- 工程工具:PyTorch、Hugging Face、数据集可视化、仿真器基础。
阶段 1:打通 VLM 感知¶
- 精读 Vision Transformer:理解 patch embedding、位置编码、self-attention、token 数和计算量。
- 学 CLIP/SigLIP:理解图像-文本对齐为什么能让模型知道“红色杯子”对应图像中的哪类视觉区域。
- 学 DINOv2:理解自监督视觉特征为什么更适合保留边界、局部纹理和几何线索。
- 学投影层/Resampler:理解视觉 token 如何映射到 LLM hidden size,为什么 token 压缩会影响小物体和定位。
- 跑一个开源 VLM,让它回答图像中的物体、位置、遮挡和空间关系。
- 读 LLaVA/Qwen-VL 一类模型的结构,理解“视觉编码器 + 投影层 + LLM”。
- 做一个小测试:输入桌面图片,要求模型指出“目标物体在哪里、应该从哪个方向接近”。
阶段 2:理解动作空间¶
- 明确机器人动作到底是什么:末端位姿增量、关节角、速度、力矩还是夹爪状态。
- 学离散动作 tokenization:把连续值切成 bins,再映射成 token。
- 学 action chunking:一次预测未来多步,降低延迟并提升动作平滑性。
- 学 diffusion/flow 动作头:为什么很多新 VLA 不再只输出离散 token。
阶段 3:读懂具身数据¶
- 理解一条 episode:图像序列、语言指令、状态、动作、终止标记。
- 了解 Open X-Embodiment/OXE、RLDS、LeRobot 数据格式。
- 可视化一个小数据集:同步播放图像、末端轨迹、夹爪状态和语言指令。
- 学会检查数据质量:时间戳、动作尺度、相机标定、失败示范、语言标签是否一致。
阶段 4:读模型与复现实验¶
- 精读 RT-1:机器人 Transformer 和大规模真实机器人数据。
- 精读 RT-2:把动作表示成文本 token 的 VLA 范式。
- 精读 OpenVLA:开源 7B VLA、DINOv2 + SigLIP 视觉特征、LoRA/量化。
- 对比 Octo、pi0、SmolVLA:连续动作、flow matching、轻量部署与新手实践。
阶段 5:跑通自己的小闭环¶
建议路线:
- 先用 LeRobot 跑数据集可视化和已有策略推理。
- 在仿真或低成本机械臂上采集一个简单任务,例如“抓起方块放到盒子里”。
- 用行为克隆训练一个小策略,先不追求大模型。
- 再尝试 SmolVLA/Octo/OpenVLA 的微调,把语言条件接入任务。
- 实机验证时加速度限制、急停、软限位和人工监督。
新手最容易混淆的概念¶
| 概念 | 容易误解 | 正确理解 |
|---|---|---|
| VLM | 能看懂图就能控制机器人 | VLM 只负责理解,不能天然输出可执行动作 |
| VLA | 一定是 LLM 输出动作 token | 也可以用 diffusion/flow 输出连续动作块 |
| 动作 token | 和文字 token 完全一样 | 训练接口相似,但含义是量化后的控制值 |
| 端到端 | 不需要传统控制 | 仍然需要底层伺服、限位、安全监控和控制频率匹配 |
| 泛化 | 见过大数据就能随便换机器人 | 机器人形态、相机视角、动作尺度变化都会造成分布偏移 |
参考资料¶
- RT-1: Robotics Transformer for Real-World Control at Scale
- RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Octo: An Open-Source Generalist Robot Policy
- OpenVLA: An Open-Source Vision-Language-Action Model
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- FAST: Efficient Action Tokenization for Vision-Language-Action Models
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- LeRobot: An Open-Source Library for End-to-End Robot Learning