自动驾驶为什么开始拥抱VLA?从感知、预测、规划到一个驾驶大脑
一、从一个雨夜说起
想象一个场景:雨夜,城区道路,路灯昏黄。一个穿深色雨衣的行人推着自行车,从两辆违停车之间探出半个身位,犹豫着要不要横穿。一个人类老司机是怎么处理的?他不会去"计算这个目标的置信度",也不会先输出一个 3D 框再交给下游。他看到的是一个意图:"这个人想过马路,但在等我。"于是他松油门、备刹车、往左让出半米,同时用余光确认左后方没有电动车上来。而一套经典的自动驾驶系统在这一刻的内心戏是这样的:检测模块在雨滴噪声里挣扎,输出一个置信度 0.42 的"疑似行人";跟踪模块因为遮挡刚刚丢过一次 ID,速度估计还没收敛;预测模块拿到一个位置抖动的目标,给出的轨迹要么原地不动、要么瞬移横穿;规划模块面对两条打架的预测,只能选择急刹——乘客一杯咖啡泼在裤子上。每个模块都没犯大错,但系统整体表现得像个新手。这就是过去十年模块化自动驾驶的真实困境,也是今天整个行业转向 VLA(Vision-Language-Action,视觉-语言-动作模型)的起点。这篇文章想讲清楚三件事:自动驾驶架构这十年是怎么一步步走到 VLA 的;为什么在 NLP 里训出来的能力,居然可以迁移到开车这件事上;以及 VLA 到底解决了什么、又带来了什么新麻烦。
二、先建立直觉:LLM、VLM、VLA 到底是什么
Transformer,你可以把它理解成一个"开会机制"。一句话里的每个字、一张图里的每个区块,都被切成一个个token(可以理解为"信息卡片"),所有卡片进同一个会议室,通过 Attention(注意力)互相打量:谁跟我有关,我就多看谁几眼。开完几十轮会,每张卡片都吸收了全场信息。它的厉害之处在于:不管卡片是文字、图像还是别的什么,只要切成 token,就能进同一个会议室。LLM(大语言模型):只处理文字卡片的 Transformer。它读过的文本多到离谱,所以不只是会接话,而是把大量世界常识和因果关系压进了参数里——"救护车鸣笛要让行""路面有碎玻璃说明前方可能出过事故",这些它都"见过"。VLM(视觉语言模型):给 LLM 装上眼睛。图像被切成 image token,和文字 token 对齐到同一个语义空间(这一步叫multi-modal alignment),于是模型可以看图说话、看图推理。给它一张施工区照片,它能说出"锥桶围出了临时车道,原车道线作废"。VLA(视觉-语言-动作模型):再往前一步——不光会说,还要会做。输出不再是一段文字,而是动作:对机器人是关节角度,对自动驾驶就是未来几秒的轨迹或控制量。一句话概括三者关系:LLM 是读万卷书的大脑,VLM 是这个大脑睁开了眼,VLA 是它终于伸出了手握住方向盘。
有了这个直觉,我们回头看自动驾驶这十年走过的路,就能看懂每一步转折的必然性。
三、架构演进时间线:四个时代,一条主线
自动驾驶架构的演进,本质上是一条"接口不断融化"的历史。第一时代(约 2015–2020):模块化流水线。感知(perception)→ 融合(fusion)→ 跟踪(tracking)→ 预测(prediction)→ 规划(planning)→ 控制,像工厂流水线一样各管一段。相机、激光雷达、毫米波各出各的检测结果,在后融合阶段拼成目标列表,每个目标带位置、速度、类别,传给下游。接口清晰,责任明确,出了问题能定位到人——这是它工程上的巨大优点。第二时代(约 2020–2022):BEV + Transformer。以 BEVFormer 一类工作为代表,多路相机的图像特征不再各自为战,而是通过 attention 统一投射到一张俯视图(Bird's Eye View)上,形成BEV token——每个 token 对应地面上一小块区域的特征。融合从"后融合拼结果"变成"特征级融合",检测、地图、occupancy(占据栅格)都从这张统一表征上长出来。感知内部的墙先塌了。第三时代(约 2022–2024):端到端(End-to-End)。以 UniAD 为代表,把感知、跟踪、预测、规划串成一个可以联合训练的网络:object query 负责检测,track query 跨帧传递维持时序身份,预测和规划模块直接消费这些 query 的特征而不是离散的目标列表。梯度可以从"规划得好不好"一路回传到"特征提得对不对"。模块还在,但接口从"人类定义的结构体"变成了"网络自己学的向量"。第四时代(2024 至今):VLA 与世界模型。端到端解决了"信息不丢",但没解决"没见过的场景不会处理"。于是行业把目光投向了预训练大模型:让一个见过海量图文、装着世界常识的 VLM 作为底座,再教它输出驾驶动作——这就是 VLA 路线。与之互补的是 World Model(世界模型)路线:让模型学会"预演未来",在脑内模拟"如果我变道,世界会怎样变化"。一条主线贯穿始终:每一代架构,都是把上一代"人为切开的地方"重新缝起来。
四、模块化方案的瓶颈:不是哪个模块不行,是"切法"不行
瓶颈一:接口即天花板。模块之间传递的是人类预先定义的结构:3D 框、类别、速度矢量。定义接口的那一刻,信息就被砍掉了一大半。经典例子是大车和挂车的非刚体运动:一辆铰接卡车转弯时,车头和挂厢的朝向、角速度完全不同,用一个刚体框去套,速度估计必然出错,预测跟着错,规划就会在旁边莫名减速或者贴得太近。不是检测算法不努力,是"一个框 + 一个速度"这个接口本身就装不下这类目标。瓶颈二:误差级联,且不可微。上游 5% 的错误率,经过四五个模块的传递放大,到规划端可能就是一次不舒适甚至危险的操作。更麻烦的是模块间靠离散结果通信,梯度传不过去——规划发现"这里总是刹车太晚",没有任何机制能把这个信号自动反馈给感知去调整。只能靠工程师人工归因:是检测晚了?跟踪 ID 跳了?还是速度没收敛?每个 hard case 都是一场跨团队的"甩锅会"。瓶颈三:长尾靠人肉穷举。遇到静止车辆速度异常——雷达把旁边护栏的多径信号关联到静止车上,给出一个 3 m/s 的鬼速度,视觉明明看到它纹丝不动——怎么办?写规则:"视觉速度与雷达速度冲突且目标静止置信度高时,信雷达还是信视觉?"每条规则解决一个 case,又埋下三个新坑。规则库膨胀到几千条后,没人敢动其中任何一条。用有限的规则去覆盖无限的世界,这场仗从数学上就赢不了。瓶颈四:数据闭环效率低。模块化时代的数据闭环(data engine)是这样的:路测采集 → hard case mining 挖出坏例 → 自动标注(auto labeling)打真值 → 分模块重训 → 分模块评测 → 集成回归。每个模块有自己的数据格式、评测指标(evaluation metrics),一个雨夜行人的 case 要在检测、跟踪、预测三个团队之间各修一遍。迭代周期以月计。BEV 和端到端各自缝合了一部分裂缝:BEV 统一了空间表征,端到端打通了梯度。但它们都没有回答一个更根本的问题——
五、为什么 LLM 的能力可以迁移到驾驶?
这是全文最反直觉、也最关键的一节。开车和聊天,八竿子打不着,凭什么语言模型的能力能搬过来?第一,驾驶的瓶颈早就不是"看清",而是"看懂"。端到端模型在训练数据分布内表现很好,但遇到施工区的锥桶和临时车道线就露馅了:锥桶能检测到,临时黄线也能分割出来,但"黄线覆盖白线时应该走黄线""锥桶围出的缺口才是可行驶区域"——这是语义规则,不是几何特征。纯靠驾驶数据学会它,你需要几万个不同摆法的施工区样本。而一个 VLM 在互联网图文里早就见过无数施工场景的照片和文字描述,这条规则是它的先验知识。第二,语言模型学到的不是语言,是压缩在语言里的世界模型。"前方有小学,减速慢行""看到球滚出来,要防备后面追出来的孩子"——人类把驾驶常识大量编码在了文本里。LLM 在预训练中把这些因果链压进了参数。这意味着 VLA 面对低速起步的目标(比如路边一辆刚亮起转向灯、车轮微动的车)时,能调用"亮转向灯 + 蠕动 = 即将汇入"这条常识,而不需要在训练集里见过一万次同样的画面。这就是Scaling Law给驾驶的礼物:通用语料上堆出来的能力,可以在驾驶任务上零成本继承。第三,Chain-of-thought 让"开车的理由"变得可显式表达。传统 planner 输出一条轨迹,你问它"为什么减速",它答不上来。而 VLA 可以先生成一段推理:"右前方公交进站,可能有乘客下车后从车头横穿,降速至 30 并向左偏移",再输出轨迹。这段推理不只是给人看的可解释性,它在训练中还起到中间监督的作用——就像学生写出解题步骤比只写答案学得更扎实。第四,架构本身是通用的。这一点常被忽略:BEV token、object query、track query,本来就是 Transformer 生态里的东西。自动驾驶行业过去五年其实一直在给"接入大模型"铺路——数据早就 token 化了,只是当年没意识到。
六、VLA vs BEV 端到端:一张诚实的对比表
把 VLA 和成熟的 BEV 端到端方案放在一起,优劣都要说透。零样本泛化:没见过的长尾场景,靠常识兜底。两轮车突然横穿时,BEV 端到端只能依赖训练分布里类似样本的"肌肉记忆";VLA 额外多一层语义判断——"外卖骑手在赶时间,抢行概率高"。可解释、可交互:能用语言说明决策理由,也能接受语言指令("前方靠右停车"),为人机共驾和责任认定留了接口。数据闭环升级:hard case mining 从"人工看视频捞坏例"变成"用 VLM 对全量数据做语义检索"——直接搜"雨夜 + 行人 + 遮挡后重现",自动标注也能附带场景描述。数据引擎的效率是量级提升。延迟。BEV 端到端方案在车端(inference)可以压到几十毫秒一帧;一个几十亿参数的 VLA,自回归地逐 token 生成推理和动作,百毫秒级起步。高速 cut-in场景,旁车切入到必须响应的窗口可能只有 300 毫秒,慢一拍就是事故。显存与算力。车端芯片的 memory 预算是以 GB 计的,大模型的 KV cache 都可能塞不下,量化、蒸馏、剪枝一个都不能少。几何精度。语言空间擅长"懂",不擅长"量"。泊车场景里 5 厘米级的近距离障碍物距离,BEV + occupancy 的几何表征依然碾压 VLA 的语义表征。幻觉与评测。LLM 会一本正经地胡说,VLA 也会一本正经地开错车。而且它的行为空间是开放的,传统"检测 AP、规划碰撞率"那套评测体系罩不住它,评测本身成了新的技术难题。所以工程上的真实答案不是"VLA 取代 BEV",而是分层共存:快系统(BEV 端到端,10 Hz,管本能反应)+ 慢系统(VLA,1–2 Hz,管语义理解和长时决策),类似人类的"脊髓反射 + 大脑皮层"。业内常说的双系统架构,就是这个思路。
七、UniDriveVLA 们为什么出现:从"外挂大脑"到"一个大脑"
双系统听起来很美,但跑起来会发现新问题:两个系统打架怎么办?VLA 说"施工区应该借道左侧",快系统的 BEV 规划器却因为压实线的规则约束不敢执行;或者 VLA 的语义建议以文字形式传给快系统,又回到了"离散接口丢信息"的老路——我们绕了十年,难道又造出了一个新的模块化?这就是 UniDriveVLA 这一类统一驾驶 VLA 架构出现的背景。它们的共同目标是:不要"VLM 外挂一个驾驶头",也不要"两个脑子投票",而是把感知、预测、规划真正装进同一个模型、同一套 token 空间里:输入端,image token、BEV token、导航指令、自车状态统一编码进同一个序列,多传感器融合发生在 token 层面而非结果层面;中间层,模型内部隐式地完成检测、跟踪、预测——遮挡后目标重现不再依赖跟踪模块的 track query 生命周期管理,而是靠模型对场景的时序记忆:"刚才有个行人走进了公交车后面,他还在那儿";输出端,动作(轨迹)和语言(推理链)由同一套参数生成,预测的多模态轨迹(prediction 多模态:路口对向车可能直行也可能左转)与规划的博弈在模型内部一次完成,而不是"预测撒手不管、规划独自硬扛";训练上,配合世界模型做闭环 simulation——让模型在想象中预演"无保护左转时我先探半个车身,对向车会不会减速让行",用想象数据补足真实数据里危险场景的稀缺。一句话:从"给驾驶系统装一个会说话的外脑",走向"训练一个本来就会开车的大脑"。这条路线成不成,取决于本文第六节列的那几个工程债——延迟、显存、几何精度、评测——能否逐一还清。这也是本系列后续文章要深挖的主题:MoE 如何用稀疏专家(expert + routing)压推理成本,MoT 如何做多模态 token 的高效组织,世界模型如何撑起评测和数据闭环。
八、总结:接口的融化史
自动驾驶架构的十年,是一部"人为接口不断融化"的历史:后融合 → BEV 特征融合 → 端到端梯度贯通 → VLA 语义贯通。每次融化,都是因为上一个接口装不下真实世界的复杂性。LLM 迁移到驾驶的本质,不是语言能力,而是压缩在语言里的世界常识。驾驶的瓶颈早已从"看清"变成"看懂",而"懂"恰好是大模型最便宜的能力。VLA 不是终点,是新债务的开始:延迟、显存、幻觉、评测,每一项都是硬骨头。快慢双系统是当下的务实解,统一驾驶大脑是正在逼近的答案。模块化时代,我们教机器"按流程开车";端到端时代,我们教机器"模仿人开车";VLA 时代,我们终于开始教机器"理解为什么这么开"。