当前位置:首页>自动驾驶>拆解自动驾驶VLA三条路:AR慢、扩散乱、分块才是正解?

拆解自动驾驶VLA三条路:AR慢、扩散乱、分块才是正解?

  • 2026-08-03 00:00:20
拆解自动驾驶VLA三条路:AR慢、扩散乱、分块才是正解?
点击上方
蓝字
带你起飞
端到端自动驾驶正在经历一场范式之争。

不是"要不要用大模型"的问题——这条路已经确定了。真正的问题是:用什么样的大模型,才能既跑得快、又跑得准。

NVIDIA最近发表的一份技术报告,罕见地对这个问题做了一个系统的"解剖"——它把当前主流的端到端自动驾驶VLA(Vision-Language-Action Model)分成三个类型,逐类分析问题所在,然后提出了自己的解法。

这是一篇难得的把"VLA技术路线之争"讲清楚的技术报告。

01
端到端VLA是什么?
简单说,VLA就是"看懂了、想明白了、然后开车"。

它不是传统的"感知-规划-控制"分模块系统,而是一个统一的神经网络,输入是摄像头画面+导航指令,输出是一整套结构化的驾驶决策——包括:

  • Objects detection:关键物体检测(前方有车吗?有行人吗?)

  • Reasoning:推理说明(为什么我要减速?)

  • Future behavior:行为决策(纵向:减速;横向:保持车道)

  • Trajectory:具体轨迹坐标(m秒内n个航迹点)

这四个段,有严格的因果顺序:先感知,再推理,最后输出动作。 任何违反这个顺序的生成,都是逻辑错误。

理解了这个结构,接下来看三条技术路线的各自问题。

02
三条路,各有各的麻烦
路线一:AR自回归——精度够,但跑不快

AR是当前最主流的方案——像人类说话一样,一个token一个token生成输出。

问题一:暴露偏差(Exposure Bias)。

每个航点的预测,都建立在前面已经生成的、可能存在误差的坐标之上。第一个点错了,后面的点会越错越离谱。5秒的规划,误差会随时间不断放大,最终输出物理上不可能的操作。

问题二:推理效率天花板。

在车端batch size为1的条件下,AR解码是"内存带宽受限"的——每生成一个token,都要重新从内存里加载一整套模型权重,而可用的并行计算单元大部分时间在空闲状态。这使得高效得车载部署变得极为困难。

路线二:扩散模型——全局视野好,但两条支路各有各的病

扩散模型是针对AR的暴露偏差问题发展出来的——不逐token生成,而是一次性对整个输出序列做去噪,每一步都能看到完整上下文,误差不会在生成过程中累积。

这个思路在图像生成领域已经非常成熟,迁移到自动驾驶规划上也确实有效。

但具体实现方式不同,问题也不同。

支路A:全序列扩散——逻辑上有bug

全序列扩散让所有位置都能看到所有位置的信息,数学上是"全局最优上下文",但逻辑上有一个隐蔽的错误:

端到端自动驾驶的输出有四个语义段,有严格的因果顺序——先感知,再推理,最后输出动作。

但全序列扩散里,规划得轨迹可能回溯性地影响模型所宣称得感知结果。这就产生了一个诡异的可能性:规划出来的轨迹,可能反过来"修正"前面的推理内容。

感知被行动"逆向修正",这叫"逻辑泄漏"(Logical Leakage)——在数学上看似合理,在逻辑上是因果倒置。

此外,全序列扩散无法重用KV-cache,每步去噪都要从零重新计算全部上下文,延迟远高于AR基线,几乎无法上车。

支路B:分块扩散——改进了效率,但还不够彻底

针对全序列扩散的KV-cache失效问题,学术界提出了分块扩散(Block Diffusion)——把输出分成固定大小的块,块内双向,块间单向。块与块之间保留了因果关系,KV-cache可以复用。

这个改进是有效的:KV-cache回来了,推理速度也上去了。

但分块扩散还有一个问题没有解决: 框架token没有预填,仍需参与去噪——既浪费算力,又可能生成结构错误的内容。

同时,固定大小的分块和语义段边界无关,无法利用"先感知、后决策"这一因果结构来进一步提升效率。

03
Fast-dDrive的方法论:从分块扩散到结构感知

如下部分由AI整理,不喜欢深入技术的同学可跳过,直接到第4部分!!!!

3.1 基础:分块掩码扩散的工作原理

Fast-dDrive建立在**分块掩码扩散语言模型(Block-Causal Masked Diffusion)**的基础架构上,并针对端到端自动驾驶的结构化输出做了深度适配。

掩码扩散语言模型(Masked Diffusion Language Model,MDM) 的核心不同于传统的连续扩散——它操作的是离散token序列 x₀ = (x₁, …, xₗ)。前向过程按噪声调度 {λₜ}ᵀ 将token随机替换为 [MASK],逆向过程由参数化策略 pθ 预测被掩码位置的原始token,训练目标是最小化被掩码位置上的交叉熵损失。

分块因果注意力(Block-Causal Attention) 在此基础上引入了结构化约束:输出被划分为B个固定大小的块 [b₁, …, b_B],块内使用双向注意力(能看到块内所有位置),块间使用单向因果注意力(只能看到前面的块)。

这个设计的核心价值是恢复了KV-cache的兼容性:前面的块计算完成后,其Key-Value状态可以被后面的块直接复用,不需要每次去噪都从零计算完整上下文。

同时,全序列扩散的"逻辑泄漏"问题也随之消解——trajectory块永远只能看到前面块的最终输出,不能反向影响explanation块的内容,因果顺序在注意力机制层面就被保证了。

3.2 Structure-Aware Scaffold Diffusion

框架构建:冻结已知,专注未知

端到端自动驾驶VLA的输出是一个JSON schema,包含四个语义段:

critical_objects    → 关键物体检测(12个二元判断)

explanation        → 自由文本推理说明

future_meta_behavior → 行为决策(纵向/横向枚举)

trajectory         → 5秒轨迹坐标(20个航点)

Fast-dDrive的关键洞察是:这个JSON里约30%的token是纯结构性的——键名、引号、括号、逗号。这些token的内容完全由schema决定,没有任何不确定性。

框架(Scaffold)的构建方法: 将所有结构token预填为 x̂ₜ,只对Editable位置 ℰ(即值token)施加掩码和去噪。这一步直接带来两个收益:

  • 结构100%合法:JSON永远不会出现缺括号、少逗号的问题

  • 去噪工作量减少约30%:模型只处理真正需要预测的token

语义段

Editable值token

Scaffold框架token

分块数

critical_objects

12

80

1

explanation

192

6

6

future_meta_behavior

6

18

1

trajectory

70

20

3

语义对齐的分块策略

Fast-dDrive将块边界与语义段边界严格对齐:每个语义段 s 包含 |ℰₛ| 个Editable token,被划分为 nₛ = ⌈|ℰₛ|/d⌉ 个扩散块。

语义段按因果顺序 CO → Expl → FMB → Traj 依次生成,每个块都能完全看到同一语义段内其他块的双向上下文,而跨语义段只能看到前面段全部完成后的输出。

这一设计与端到端自动驾驶"先感知、后推理、再决策"的业务逻辑完全一致——从架构层面消灭了逻辑泄漏。

安全优先的训练机制

四个语义段对驾驶安全的影响天差地别:trajectory一个错误坐标可能导致碰撞;explanation一句话不准确,毫无后果。

Fast-dDrive引入两项互补的训练时机制:

段落加权损失(Section-Weighted Loss): 每个语义段 s 分配一个正标量权重 wₛ,缩放其被掩码位置的交叉熵。论文中四段权重为 {wₛ} = {3.0, 2.0, 1.5, 1.0}(分别对应 trajectory、future_meta_behavior、critical_objects、explanation),梯度更新时,高权重段落的难样本主导学习方向。

段落自适应噪声调度(Section-Adaptive Beta Noise Schedule): 噪声调度从全局统一分布替换为各段独立的Beta分布:tₛ ~ Beta(αₛ, βₛ})。四段参数 {(αₛ, βₛ)} = {(2,1), (1,1.5), (1,2), (1,1)},使trajectory段在更难去噪的高噪声区间训练,explanation段在低噪声区间训练——因段施教,不浪费模型容量。

两项机制仅存在于训练阶段,推理时零额外开销。

联合AR+Diffusion双流训练

Fast-dDrive继承了Fast-dVLM的双流训练目标,在同一组权重上同时优化两个分支:

{\text{train}}(\theta) + \beta\,\mathcal{L}$$\mathcal{L} = \alpha\,\mathcal{L}{\text{AR}}(\theta), \quad \alpha = \beta = 0.5$$

  • 扩散分支:在clean流上学习并行掩码去噪,受益于块内双向注意力

  • AR分支:在clean流上保留预训练的因果解码能力

这个设计是Fast-dDrive支持"同一模型、两种推理模式"的底层基础——不需要微调,权重自带两个解码头。

3.2 推理模式:Section Diffusion与Scaffold Speculative Decoding

模式一:Section Diffusion(分块迭代去噪)

Section Diffusion复用训练时的生成流程:从预填的框架 x̂ₜ 出发,MDM头在块级迭代去噪,按语义段顺序逐段生成。

每个语义段生成时,KV-cache从已完成的段复用(causal context reuse),无需重复计算前方内容。这已经是比全序列扩散高效得多的方案,但仍是纯扩散——每块需要多次去噪步迭代。

模式二:Scaffold Speculative Decoding(框架推测解码)

这是Fast-dDrive效率提升的核心大招,基于**自推测解码(Self-Speculative Decoding)**框架,并在块级引入了框架感知加速。

给定预填框架 x̂ₜ,每个语义块 bⱼ 的处理流程如下:

第一步:框架token自动通过(Auto-Accept)。

块 bⱼ 内的所有框架位置(属于集合 𝒜)直接接受,无需任何计算。只有Editable值位置 ℰⱼ = ℰ ∩ bⱼ 进入后续的推测解码流程。

第二步:MDM头并行草稿(Draft)。

扩散头对块内所有 |ℰⱼ| 个Editable位置执行单次前向传播,利用块内双向注意力,同时生成所有草稿 token {x̃ᵢ}ᵢ∈ℰⱼ。这一步是纯并行的,不是逐token生成。

第三步:AR头串行验证(Verify)。

因果头对完整块执行单次前向传播,计算每个位置 p_ARθ(·|x<i)。从左到右逐位置比较:若 argmax p_ARθ(·|x<i) = x̃ᵢ,则接受该token并继续;若不匹配,则拒绝,接受AR预测并丢弃该位置之后的所有草稿,同时额外接受一个bonus token(确保不倒退)。

每块固定消耗 2次前向传播(草稿+验证),与块内Editable token数量无关。相比纯AR逐token解码(每个token一次完整前向传播),效率提升来自两个维度:并行草稿(块内多token同时生成)和框架自动通过(结构性token零计算)。

3.3 低开销测试时推理扩展:共享前缀多轨迹Rollout

Scaffold Spec对同一输入总是输出同一条确定性轨迹。Fast-dDrive进一步引入了测试时计算扩展机制,将额外算力转化为精度提升。

设计原则一:仅在trajectory段引入随机性。

前三个语义段高度结构化,softmax分布极为尖锐,采样几乎不产生有用多样性,反而会劣化下游轨迹段的质量。因此,前三段保持greedy解码,只有进入trajectory段后才开启softmax采样。

设计原则二:共享前缀KV-cache,fork只发生在trajectory段。

前三段的KV-cache在所有rollout路径上完全相同——只需解码一次,然后在trajectory段fork出N条独立采样路径。每条路径的额外成本仅来自trajectory段本身(前约70个值token),而非整个280+token的完整输出序列。

设计原则三:多轨迹平均。

N条rollout轨迹 {τ⁽ⁱ⁾}ᵢ₌₁...N 经Jerk-Minimizing Trajectory(JMT)插值至20航点后取等权平均。按方差-均值原理,N条轨迹的均值的残差方差随N增大而按1/N衰减,而确定性偏差保持不变——这意味着更多rollout直接带来更低的预测误差。

实验验证:在WOD-E2E验证集上,ADE@5s随N增大单调递减(N=4时,L2误差从单rollout的1.64m降至1.36m),且额外算力成本远低于完整序列的N次解码。

框架的前三个段高度结构化,softmax分布非常集中,随机采样几乎没有意义。

NVIDIA只对trajectory段开启采样。但这里有一个关键设计:前三个段的KV-cache在所有采样路径上完全相同,解码一次,fork出N条轨迹,再取平均。

不是重新跑完整输出序列,而是只对trajectory那一段做N次采样和平均——额外算力成本只有全量的零头,但能将L2误差从1.64m压到1.36m。

3.4 实验结果

方法

范式

WOD-E2E ADE@5s ↓

WOD-E2E ADE@3s ↓

nuScenes平均L2 ↓

AR VLA代表

自回归

2.940m

1.270m

0.41m

dVLM-AD

全序列扩散

3.022m

1.285m

0.41m

Fast-dDrive

分块扩散(本文)

2.907m

1.254m

0.32m(↑22%)

精度全面超越AR和全序列扩散方案。

指标

AR基线

dVLM-AD

Fast-dDrive

吞吐量(tokens/秒)

51.6

35.2

210.4(4×↑)

单样本延迟

7.86s

—

0.67s(11.8×↑)

  • SGLang部署

7.86s

—

12×↑

在一块H100上,Fast-dDrive同时实现了精度更高 + 速度12倍提升,两条曲线同时向外推——这不是Trade-off,这是Pareto前沿的重新定义。

04
写在会后
这份报告最有价值的地方,不只是提出了一个新方法,而是把VLA的三条技术路线放在同一张桌子上比较,把每条路线的问题从原理上讲清楚了。

AR VLA的问题是效率天花板;全序列扩散的问题是逻辑泄漏;Fast-dDrive代表的分块扩散,核心贡献是把"结构性先验"(JSON schema、语义段因果)做进了架构里——而不是靠后处理来保证结构正确性。

这个思路其实指向了一个更底层的设计原则:对于有强结构约束的输出,与其让模型"学"出结构正确性,不如在架构层面就把结构的已知部分固定住,让模型把全部算力集中在真正需要预测的内容上。

对自动驾驶来说,这个原则的终点很清楚:高精度VLA与车端实时部署之间的效率鸿沟,最终要靠"尊重结构、利用结构"来弥合。

论文来源:arXiv:2605.23163v2 [cs.CL],2026年5月25日合作单位:NVIDIA、北京大学、香港大学、MIT

最新文章

随机文章