做端到端自动驾驶的人,今年绕不开三个词:世界模型、VLA、闭环评测。VLA(Vision-Language-Action)把视觉、语言、决策压缩进同一个网络,听起来很优雅,但真正把它往车端送的时候,问题就来了——动作维度太高、动作分布太杂、推理延迟太敏感。最近某前沿自动驾驶研究团队和某头部新能源车企联合放出的LatentVLA,直接把城市驾驶场景仿真评估榜刷新了SOTA,而且思路跟主流VLA完全不同:不直接预测轨迹点,先预测一个“潜在动作”,再拿去解码。这篇文章我把整个方案掰开揉碎,讲清楚它到底解决了什么、怎么做到的、有哪些值得抄作业的设计,以及上车时要避的坑。
1. 城市驾驶场景仿真评估榜上,VLA的真实处境
先把这个榜单是什么说清楚。业内聊VLA效果,一般不是拿实车数据硬碰,而是先在标准化的城市驾驶场景仿真评估框架里测。这套框架基于真实驾驶日志重建交通流,让被测模型在相同情景下反复开,统计碰撞率、驾驶分数、规则违反次数这类指标。因为场景、对手车、交通流全部固定,结果可复现,所以它成了端到端模型对比的主战场。
但要注意一个细节:这个评估体系跟传统闭环仿真不是一回事。传统闭环仿真往往在游戏引擎里跑,场景是美术和脚本搭出来的,跟真实路况相差很远;而城市驾驶场景仿真评估框架直接复用真实路采数据,规定了从感知结果到决策输出的一整套接口,开出来的每一条路径都能回溯到真实日志比对。所以它更像“开放环路仿真+驾驶风格打分”,既能快速批量测模型,又不至于完全脱离真实世界。
在这个框架下,VLA模型天然吃亏。为什么?因为VLA的输入比普通端到端模型多了一个语言指令(比如“前方路口右转”),输出往往是一串连续轨迹点,而评估框架更看重多模态行为的一致性和对周围车辆的长尾响应。语言指令和连续轨迹之间,隔着一条很难跨过去的表示鸿沟。很多团队的做法是让大模型去backbone上做特征融合,但行为头还是走原来的MLP或Transformer解码器,本质上是“VLM做感知增强,决策模块还是老一套”。
我一直觉得这条路走不长,因为VLA的价值本来就应该体现在“同一个网络既懂语义又做决策”上。LatentVLA踩的正是这个点:它不把语言当作旁路输入,而是把动作也塞到跟视觉语言共享的潜在空间里去预测。先去理解“在什么语义环境下该干什么”,再在这个语义空间中找动作。这一步走通了,VLA才算真正跟传统的“感知+规划”模块化路线拉开了代差。
2. 自驾VLA的三个硬约束:高维动作、分布复杂、延迟敏感
要理解LatentVLA的取舍,必须先理解自驾VLA为什么难做。很多人以为VLA无非是“大模型加几个输出头”,但真实情况远没有这么简单。
第一个硬约束是动作表示维度高。车辆控制需要的不只是方向盘转角,而是一段未来轨迹——通常需要输出未来若干秒内、以一定频率采样的路径点,每个点包含横纵坐标和航向角,再叠加速度或加速度。算下来动作向量维度动辄几十到上百。维度高带来的直接后果是解码器变重,而解码器一重,推理时序就拉长。
第二个硬约束是动作分布多模态且高度不均衡。同样的“前方路口直行”指令,跟车场景下的合理轨迹和借道超车场景下的合理轨迹,在分布上完全不是一回事。更麻烦的是,安全驾驶样本在数据集中占绝对多数,激进换道、紧急刹停这类关键样本极少。模型如果直接回归轨迹点,很容易被“平均化”带偏——学的其实是所有场景下的中庸行为,而不是针对当前语义的最优行为。
第三个硬约束是延迟预算极其苛刻。端到端模型从传感器输入到控制指令的时间线,业界普遍希望压在100毫秒左右甚至更低。而VLA模型动辄几十亿参数,视觉编码、语言指令编码、自回归解码环环相扣。如果动作解码还要跑一遍Transformer自回归生成,延迟很容易翻倍。这也是很多VLA只能“离线刷榜、上线降级”的根本原因。
LatentVLA的聪明之处,在于把高维连续动作先压缩成一个低维的离散或连续潜在变量,让模型的主干不需要直接解码轨迹,只需要负责“决策潜在动作是什么”。潜在动作维度远低于轨迹点维度,但保留了关于“意图”的核心信息。判断语义、给出意图还是在VLM的能力范畴内,但把大量低层次几何计算交给了后置解码器。这个分工,把上面三个硬约束同时松了一个口子。
3. LatentVLA解题思路:先预测“潜在动作”,再反解轨迹
这部分是整个方案的核心,我尽量用通识语言讲。
LatentVLA的设计可以拆成三个子模块来看。第一个是感知-语言编码器,把多视角图像、历史帧状态、导航指令统一编码成一组语义特征。第二个是潜在动作预测头,它不像传统方法那样直接输出轨迹点,而是输出一个“潜在动作变量”——一个经过特定预训练空间对齐的向量。第三个是动作解码器,负责把潜在动作变量映射回真实的车辆控制空间,变成可以让规划模块直接使用的轨迹。
这里最关键的,是潜在动作变量到底被定义成什么。很多做动作表征的团队会自己训一个VAE或者量化编码器,把轨迹压成离散token。LatentVLA没有走这条路,它借用一个预训练好的视觉语言模型的语义特征空间来做对齐。具体来说,不是让网络去预测自定义的隐向量,而是把“行为头”和“语言头”对齐到同一个语义空间中。这样一来,潜在动作天然带有语义可解释性——比如“缓慢跟车”和“向左变道”,在潜在空间中的距离可以是有意义的。
到了训练阶段,整个网络遵循两步走。第一步是“语义对齐预训练”:冻结大部分视觉语言骨干,只训练潜在动作预测头,让预测出的潜在动作在语义空间里靠近真实轨迹对应的表征。这一步不追求行为完全准确,只求“语义意图先对齐”。第二步是“行为微调”:放开部分骨干参数,把动作解码器也纳入训练,用真实的轨迹回归损失、碰撞损失做端到端精调。两步加起来,本质上是先让模型“想明白”,再让它“开得准”。
我特别欣赏这个对齐设计的一点是:它把粗细粒度分得很清楚。粗略的语义理解交给大模型预训练阶段已经学到的大量开放性知识,细粒度的操控精度交给解码器和后续微调。相比直接让大模型输出轨迹点,这种做法的训练稳定性要高得多——做过轨迹回归的朋友都知道,直接回归高维轨迹的损失面非常崎岖,动辄爆loss,而潜在空间相对平滑。
4. 关键设计细节:从采样策略到训练损失,逐一复述
纸上谈兵没用,我挑三个值得单独拆解的设计细节来写。
第一个细节是潜在动作的分布假设。LatentVLA没有把潜在动作当成一个确定值去回归,而是把它建模成条件分布进行采样。这跟自动驾驶行为本身的多样性有关:同一个场景,老司机和新手司机的处理方式都合法但不同。确定性回归只能学到折中方案,而在潜在空间做采样,配合评估时多次采样后取最优或取平均,能显著提升应对长尾场景的稳定性。
第二个细节是动作解码器的输入构成。解码器光吃到潜在动作还不够,它还会把原始感知特征的top-k区域特征叠加进去。为什么这样设计?因为潜在动作是高度抽象的东西,它告诉你“我要向左变道”,却不告诉你“左侧车道有一辆大车正在逼近”。后一个信息还得去原始特征里找。所以解码器本质上是一个“意图+细节”的融合器,而不是一个单纯的坐标映射网络。
第三个细节是训练损失的组合权重。从公开信息和很多类似方案的实践来看,损失大致由轨迹回归损失、碰撞或安全距离惩罚项、以及潜在空间的对齐损失组成。后者的存在感特别强,因为在行为微调阶段,如果完全丢掉对齐损失,潜在空间会被轨迹回归任务带跑偏,最终又退化成传统的黑盒动作回归。避免这种做法,靠的就是在微调阶段持续束缚语义空间不发生形变。
这三个细节合到一起去理解,LatentVLA其实在干一件事:让网络自己决定“分多少精力做语义理解、分多少精力做动作精修”,而不是像传统两段式系统那样硬切一刀。表面上看只是换了个预测目标,实际上是把整个系统的归纳偏置都改了。
5. 效率与SOTA两手抓:延迟降在哪,分数涨在哪
一个榜单跑到SOTA不稀奇,关键是它是怎么同时解决效率问题的。我去年测过不少VLA模型,很多在GPU上跑得动,一部署到车端芯片就开始喘。LatentVLA既然敢把“高效”摆在标题里,就必须在架构上有真实账可算。
延迟节省主要来自三个方面。第一,潜在动作预测头的输出维度远小于直接输出轨迹点,这直接砍掉了行为解码器的参数规模。第二,语义对齐让主干网络不需要为了动作精度做额外的自回归迭代——传统方法要在每个时间步重新跑一遍Transformer解码器,LatentVLA在大量测试场景下只需要一次前向就能给出潜在动作,相当于把解码环从“逐个token生成”变成了“单步预测”。第三,潜在空间采样之后,轨迹解码可以在一个轻量MLP内完成,省下的显存给感知和语义推理留出了余量。
SOTA分数的来源则更值得品味。城市驾驶场景仿真评估框架的打分细项包括驾驶得分、碰撞率、行驶位移等。潜在动作方案一个很直接的好处是跟评估框架的“打分偏好”天然契合——它保留了多样化的行为候选,评估时能挑出最合规的轨迹,而不是像确定性模型那样只能硬交一个答案。碰撞率的下降尤其明显,因为在潜在空间采样后可以做到“安全穿越检查”:采样多个潜在动作,分别解码轨迹,筛选出无碰撞且最符合交规的候选。这在传统直接回归模型里很难低成本实现。
我知道很多人看到榜单SOTA会下意识怀疑“是不是过拟合评估集了”。从架构上看,潜在动作方案的SOTA不是死记硬背场景拼出来的,它更多得益于语义空间的泛化能力。训练时见过“前车急刹”的场景,测试时遇到类似的潜在语义,模型自然能给出安全响应,而不是靠记忆某个特定坐标。
6. 从论文走向车端:可复现要点与部署避坑
最后这部分写给真正想复现或者做工程落地的朋友。
先说复现层面的建议。如果你想在自己的数据上试这套思路,第一优先级是找到一个稳定的预训练视觉语言模型作为特征空间基准。不用特别大的模型,关键是它具备良好的车辆驾驶场景语义理解能力。接着,动作解码器建议先在合成数据上预训练,让网络学会“潜在动作到轨迹”的映射,再接入真实驾驶数据。我的经验是这一步千万不能省,否则对齐训练一开始就发散。
训练资源方面,整个框架如果采用适度大小的视觉主干和语言编码器,在8卡机器上是可以跑通的。真正吃显存的不是主干,而是轨迹回归时用到的大尺寸特征图。推荐做法是在回归前把特征图做空间池化,牺牲一点定位精度换来整体可训性。LatentVLA的思路本来就是“语义意图为主、几何精修为辅”,所以这种妥协是符合设计哲学的。
上车部署时最值得注意的坑有两个。第一个是潜在空间在超边界场景会变得不可控,毕竟潜在动作是在训练分布内对齐的,遇到极端车辆动力学情景,解码器可能输出激进轨迹。建议在解码器之后加一道基于运动学的轨迹合理性过滤,必要时直接退回安全跟车策略。第二个是采样策略在车端上的随机性,批量采样多条轨迹再筛选虽然效果最好,但对算力要求偏高,实车建议折中成“双候选采样+快速筛选”,既保留多样性又不至于把决策周期拉爆。
另外说一句题外话,潜在动作方案跟车路协同、多模交互这类场景意外地合拍。因为潜在动作是语义化的,它很容易跟V2X信息里的语义标签(比如“前方施工”“路口行人密集”)做交叉注意力融合,而不用像传统轨迹模型那样专门设计外部信息接入接口。我判断未来两三年内,这种“语义为纲、动作为目”的架构会成为端到端自驾的主流方向之一。
最后分享一个我个人的体会:做VLA最怕跟风刷参数,同样重要的是先把动作表示想清楚。LatentVLA这波能冲上城市驾驶仿真评估榜SOTA,本质上是“表示设计”的胜利,而不是堆参数堆出来的。如果你正准备从传统模块化架构切到VLA,不妨先在动作表示这一步多花时间,想清楚“网络输出的到底是一个坐标,还是一个意图”,这件事比选哪个大模型底座重要得多。