VLA 是怎么让语言模型去开车的:从 Action Tokenization 到 π0
/ 10 min read
Table of Contents
这是一篇学习笔记,不是项目复盘。 我最近在入门具身智能/智能驾驶方向,这篇是我读论文和准备相关面试时整理的、对前沿的理解。里面的 RT-2、π0 这些工作都是别人的研究,我只是把它们的核心思路梳理清楚,没有做过其中任何一个的实现。我自己动手的只有一个 50 条样本的迷你复现。把它单独标成笔记,是为了不让人误以为这是我的成果。
VLA = Vision-Language-Action(视觉-语言-动作)。一句话本质:它把 VLM 的输出从”文字”换成了”动作”,打通了从感知到执行的端到端。
- VLM:图 + 文字指令 → 输出文字(“这是一条夜间公路,注意安全”)
- VLA:图 + 文字指令 → 输出动作(方向盘转 12.5 度、油门 0.3,车直接就开了)
这篇想讲清楚一件事:一个”只会吐词”的语言模型,凭什么能输出连续的控制信号?
一、最核心的难题:动作怎么和语言统一
LLM 擅长输出离散的 token(一个词一个词地预测),但开车的动作是连续的数值。这俩怎么对接?
最早的答案,也是最精巧的一招:动作离散化(Action Tokenization)。
把连续的动作空间切成离散区间——比如方向盘的 -30° 到 +30° 切成 256 个格子(分箱 / binning),每个格子对应一个新造的 token,像 <bin_178>。于是:
- 模型”预测一个动作” = “预测下一个 token”
- 用的是和”预测下一个词”完全相同的自回归机制
一个模型,既能吐词、也能吐动作,因为在它眼里动作就是一种特殊的词。这就是 VLA 能复用整套语言模型基础设施的根本原因。
RT-2(Google) 把这套发挥到极致:拿一个预训练好的 VLM 当底座(自带互联网常识)+ 动作离散成 token 进词表 + 把互联网图文数据和机器人操作数据混合联合训练。结果是涌现出了泛化能力——经典例子是让它”拿起已灭绝的动物”,它能从一堆玩具里挑出恐龙。这种”常识推理 + 动作”的结合,是纯机器人数据训不出来的,常识来自那个 VLM 底座。
DriveGPT4 是和自动驾驶最对口的一个:一个多模态 LLM 同时做两件事——用自然语言解释驾驶决策(为什么减速、为什么变道),以及直接预测低层控制信号(车速、转向)。它的价值在于缓解传统端到端模型的黑箱不可解释性,这对安全攸关的驾驶很关键。(我那个迷你复现,模仿的就是它”可解释决策”这半截,控制信号那半没做。)
顺带一个容易被考的小陷阱:VILA 是 VLM,不是 VLA(NVIDIA 的工作,名字像但少一个 A)。它的贡献是发现多模态预训练要用图文交错而非单纯图文对,多图推理能力更强。
二、前沿转向:离散已经不是唯一答案
如果只知道”动作离散化”,那是 2023 年的认知。2024 年起主流有个明显转向,知道这个转向才算跟得上前沿。
离散分箱有三个硬伤:
- 量化误差:切成格子就有精度损失,做不了精细灵巧的操作(拧螺丝、插插头那种)。
- token 序列变长:一个复杂动作要好几个 token,序列拉长。
- 逐 token 生成慢:电机控制要高频(几百 Hz),自回归一个个吐 token 跟不上。
于是分成两条路线:
离散路线(继续优化 tokenizer):RT-2 → OpenVLA → OpenVLA 的 FAST tokenizer,把动作块压缩成更少的 token,推理最高快 15 倍。思路是”既然要离散,就把离散做得更高效”。
连续路线(2024 新主流):π0(pi-zero) 干脆放弃离散 token,换成 flow matching / diffusion 当动作解码器,直接输出连续动作。这样没有量化误差、能做高精度灵巧操作、也能高频出动作。这是个范式转变——动作解码不再借用语言模型的离散生成机制,而是专门设计连续生成。
还有一个正交的架构分类维度,也很能体现对前沿的理解:
- 单系统(RT-2 / OpenVLA / π0):一次前向直接出动作,简单统一。
- 双系统(Helix / GR00T N1):慢系统处理图像 + 指令理解(像人的深思熟虑),快系统高频出动作(像人的肌肉反射),两者端到端联合训练。这是在”既要语义理解、又要高频控制”之间的工程折衷。
三、放进更大的图景:端到端、IL/RL、仿真
VLA 不是凭空冒出来的,它在自动驾驶的技术谱系里有明确位置。
模块化 vs 端到端:传统自动驾驶是模块化的(感知 → 预测 → 规划 → 控制),每个模块可解释、好排查,但模块间误差会累积、各模块局部最优不等于全局最优。端到端是单个网络从传感器直达控制,全局最优、不丢信息,但黑箱、吃数据。VLA 本质是”带语言、可解释的端到端”——既要端到端的全局最优,又用语言把决策过程暴露出来,缓解黑箱。
怎么训:
- IL(模仿学习 / 行为克隆):模仿人类专家驾驶,简单稳定,但有个致命缺点叫分布漂移——一旦开到专家从没到过的状态,模型不知道怎么救自己,越偏越远。
- RL(强化学习):靠试错 + 奖励,上限高,但需要海量交互、奖励函数难设计,真车上试错代价无法承受,所以通常在仿真里做。
仿真平台:CARLA(开源的城市道路自动驾驶仿真器,业界标准)、Isaac Gym(NVIDIA 的机器人仿真,能在 GPU 上并行跑成千上万个环境,特别适合 RL 这种吃交互量的训练)。一个常见的现代做法是用 GPT-4o / Gemini 这类大模型在仿真器里自动生成轨迹和推理链数据,再拿去训 VLA——这把”数据从哪来”这个老大难,部分交给了大模型。
小结(我的理解)
把这套串起来看,VLA 其实是 VLM 的自然延伸:
图 → 切 patch → 视觉 token → 投影进 LLM → …… ├─ 输出文字 → 这是 VLM └─ 输出动作 → 这是 VLA前半截(怎么把图喂进语言模型)是 VLM 已经解决的;VLA 干的事就是把终点从”吐词”换成”吐动作”。而”动作怎么表示”这个问题的答案,正在从 离散 token(RT-2 路线) 演进到 连续生成(π0 路线)——这条演进线,是我觉得这个方向最有意思、也最该讲清楚的一点。
再强调一次:以上都是我读论文整理的理解,不是我的研究成果。真正能让我有底气聊这些的,是先动手把那个最小的复现跑通、踩透了框架的坑——有了那点实操的手感,再看这些前沿工作才不是空中楼阁。