PAPER DEEP DIVE
自动驾驶仿真测试综述
综述自动驾驶仿真测试方法,涵盖仿真平台、测试策略和有效性评估。
论文:Think at 5 Hz, Act at 20 Hz: Asynchronous Fast-Slow Vision-Language-Action Inference for Closed-Loop Driving
作者:Yun Li, Jiachen Gong, Simon Thompson, Ehsan Javanmardi, Qunli Zhang, Zifan Zeng, Shiming Liu, Peng Wang, Zixuan Guo, Manabu Tsukada(东京大学等)
来源:arXiv:2607.15621
1. 研究背景与动机
基于大视觉-语言模型(VLM)的语言条件驾驶智能体可以遵循自然语言导航指令、解释决策并继承互联网规模预训练的世界知识。然而这些能力的代价是推理延迟:一个 7B 骨干在每个控制步重新读取完整视觉历史,无法跟上 20 Hz 的闭环仿真器 tick 速率,更不用说真实车辆。开源标杆 LMDrive 通过隔 tick 调用模型、中间重放旧命令来妥协——一半时间车辆基于忽略最近 50–100 ms 观测的决策行动。
图1:一秒控制对比。跳帧智能体每次调用 89 ms,因此每两 tick 才产生一次新控制,中间重放旧命令;本文专家每 tick 读取骨干缓存并在 32 ms 内发出新控制,外加每 K=4 tick 一次 21 ms 缓存追加。
本文论证延迟问题是架构性的:指令理解和时序场景聚合变化缓慢,而当前帧到轨迹的映射必须快但计算量轻。这一观察提示一种快慢分解(fast-slow decomposition),灵感来自驾驶领域的 DriveVLM 双过程设计和操作领域的 $\pi_0$。
VLM的推理延迟 $t_{\mathrm{vlm}}$ 和控制频率 $f_{\mathrm{ctrl}}$ 之间存在根本矛盾。设 VLM 推理需要 $n=4$ 次前向传播,每次 $\sim$50 ms,则:
$$ t_{\mathrm{vlm}}=n \times t_{\mathrm{forward}} \approx 4 \times 50 = 200\text{ ms} $$
而车辆控制需要 20 Hz(50 ms/tick)的更新频率。传统方法在 VLM 推理期间重放上一步动作,导致一半的控制输出忽略最新观测。快慢架构通过冻结 VLM 并使用轻量动作专家在缓存上推理,将控制延迟降至 32 ms。
2. 快慢架构总览
图2:异步快慢推理。冻结骨干(左)每 K tick 消化指令和历史,通过增量前向传播每帧追加四个 token 到逐层 KV 缓存;动作专家(右)在每个仿真 tick 运行:其十个 token 在 32 层每层交叉注意力到缓存键值并回归五个航点。骨干从不注意专家 token,因此缓存有无专家完全相同。
系统构建于 LMDrive 之上:冻结感知编码器将多视角摄像头和 LiDAR 转为逐帧特征,Q-Former 将每帧压缩为 $n=4$ 个视觉 token,冻结的 LLaMA-7B 骨干消费 token 序列。本文附加一个 337M 参数动作专家——一个 32 层 transformer,隐藏宽度 $d_{\mathrm{ae}}=512$,与骨干层一一对应。
3. 动作专家:逐层缓存注意力
在层 $\ell$,专家通过矩形投影 $W^{\ell}_{q,k,v}\in\mathbb{R}^{4096\times 512}$ 将自己的 token 投影到骨干的 32 头、128 维注意力几何中,拼接骨干同层的缓存键值,执行单次注意力操作:
$$\mathrm{Attn}\!\left(Q_{\mathrm{ae}}^{\ell},\;[K_{\mathrm{vlm}}^{\ell};K_{\mathrm{ae}}^{\ell}],\;[V_{\mathrm{vlm}}^{\ell};V_{\mathrm{ae}}^{\ell}}]\right)$$后接输出投影回 $d_{\mathrm{ae}}$ 和 SwiGLU 前馈块。骨干从不注意专家 token,因此缓存的 $K_{\mathrm{vlm}},V_{\mathrm{vlm}}$ 无论专家是否运行都相同——这是允许缓存的关键属性。
每帧专家消费十个 token:一个状态 token(编码前次预测航点、前次控制三元组、当前速度和目标点)、当前帧的四个视觉 token(由骨干相同的 Q-Former 管线产生)和五个可学习航点查询,经两层头解码为五个 $(x,y)$ 航点,在 L1 监督下训练。
动作专家的逐层缓存注意力将VLM的键值缓存 $K_{\mathrm{vlm}}^\ell, V_{\mathrm{vlm}}^\ell$ 与动作专家自身的 $K_{\mathrm{ae}}^\ell, V_{\mathrm{ae}}^\ell$ 拼接:
$$ \mathrm{Attn}\left(Q_{\mathrm{ae}}^\ell,\;[K_{\mathrm{vlm}}^\ell;K_{\mathrm{ae}}^\ell],\;[V_{\mathrm{vlm}}^\ell;V_{\mathrm{ae}}^\ell]\right) $$
动作专家的注意力权重矩阵 $W_{q,k,v}^\ell \in \mathbb{R}^{4096 \times 512}$,嵌入维度 $d_{\mathrm{ae}}=512$。
4. 延迟增强训练
部署时缓存落后当前帧最多 $K$ 个 tick。训练时通过为每个样本抽取 $\delta\sim\mathcal{U}\{0,\ldots,\delta_{\max}\}$ 来复制这一差距,掩码骨干前缀使第 $j$ 帧的专家块可见性截止到第 $j-\delta$ 帧,或 $j<\delta$ 时仅指令文本。专家因此学会融合过时的场景摘要与新鲜的逐 tick 证据。状态 token 在高斯噪声和随机 dropout 下进行教师强制前次航点训练,限制暴露偏差。
延迟增强训练中,每个时间步的延迟 $\delta$ 从均匀分布采样:
$$ \delta \sim \mathcal{U}\{0,\dots,\delta_{\max}\} $$
训练时将 $\delta$ 步前的观测作为输入,模拟部署时的陈旧性。当 $\delta=0$ 时对应无延迟的理想情况。
5. 异步部署
智能体将骨干缓存作为可变状态维护。每 $K=4$ 个 tick(20 Hz 下 0.2 s,匹配训练帧网格),通过增量前向传播追加当前帧的四个 token,其代价与历史长度无关。缓存仅在指令变更、通知到达、episode 结束或缓存历史达到训练窗口上限时从头重建。每 tick 专家原样读取缓存,因此测试时 staleness 以 $K-1$ tick 为界并保持在训练分布内。旋转相位使仅追加缓存精确——golden test 对比单体与增量预填充确认航点差异在 fp16 噪声底限 4 mm 以下。
快慢架构中,VLM以 $K=4$ 个tick(约200ms)为周期运行,动作专家在每个tick(32ms)读取缓存上下文并输出控制。VLM缓存追加每 $K$ 个tick执行一次(21ms),形成5Hz思考、20Hz执行的异步模式。
6. 方法架构流程
flowchart TD
CAM["多视角摄像头 + LiDAR"] --> ENC["冻结感知编码器"]
ENC --> QF["Q-Former\n4 visual tokens/frame"]
QF --> APPEND["每 K=4 tick\n增量追加到 KV 缓存\n(21 ms)"]
INSTR["导航指令"] --> BB["冻结 LLaMA-7B 骨干"]
APPEND --> BB
BB --> CACHE["逐层 KV 缓存\n(K_vlm, V_vlm)"]
CACHE --> EXP["337M 动作专家\n32层, d=512"]
CURR["当前帧 4 tokens"] --> EXP
STATE["状态 token\n(prev waypoints, control, speed)"] --> EXP
EXP --> WP["5 个 (x,y) 航点\n(L1 监督)"]
WP --> PID["PID 控制器\n→ 车辆控制"]
EXP -.- NOTE["骨干从不注意专家 token\n→ 缓存有无专家相同"]
7. 实验结果
7.1 开环航点精度
| 方法 | L1 (m) ↓ | 训练参数 |
|---|---|---|
| 骨干动作头(冻结) | 0.123 | — |
| 动作专家,仅 $\delta=0$ | 0.037 | 337M |
| 动作专家,随机 $\delta$(本文) | 0.031 | 337M |
随机延迟专家即使测试无 staleness 也优于其 $\delta=0$ 孪生体,说明增强在 staleness 出现前就起到了正则化作用。
7.2 闭环驾驶(town05, LangAuto-Short)
图4:town05 闭环驾驶。每面板显示前视与侧视、导航指令、运行时通知和预测航点;右下面板在通知标记的红灯前刹车。
| 智能体 | 控制率 | DS ↑ | RC ↑ | IS ↑ |
|---|---|---|---|---|
| LMDrive(重放 tick) | 10 Hz | 28.8 ± 0.8 | 37.0 ± 0.4 | 0.80 ± 0.04 |
| FastSlow-LMDrive,跳帧 | 10 Hz | 34.0 | 82.1 | 0.45 |
| FastSlow-LMDrive(本文) | 20 Hz | 32.9 ± 0.7 | 94.0 ± 2.6 | 0.37 ± 0.02 |
路线完成率差距主导对比:基线每公里累积 25.0 次路线偏移和 2.9 次超时,本文仅 4.3 和 0.08。跳帧中间行分离两个因素——相同训练专家在 10 Hz 下已达 DS 34.0(专家贡献),而从 10 Hz 升至 20 Hz 将完成率从 82.1 提至 94.0、路线偏移从 11.3 降至 4.3、红灯违规从 10.4 降至 6.9(新鲜度贡献)。
7.3 延迟
图5:左:逐步模型延迟 vs 历史长度。传统路径每步重新编码全部历史,在任何历史长度下都超出 50 ms tick 预算;本文逐 tick 代价平坦在 32 ms。右:验证航点 L1 随训练 epoch;随机延迟专家在每个 epoch 都领先。
| 阶段 | 传统逐步 | 本文每 tick | 本文每 K=4 tick |
|---|---|---|---|
| 感知 + Q-Former | 26.9 | 24.8 (29.2) | — |
| 骨干全重计算 | 61.6 | — | — |
| 增量追加 | — | — | 21.1 (10.7) |
| 动作专家 | — | 7.5 (9.3) | — |
| 总模型计算 | 88.6 | 32.4 | 5.3 摊销 |
传统代价随历史增长(10 帧 59 ms 到 100 帧 169 ms),这是公开智能体跳帧的原因。本文逐 tick 模型代价平坦——专家通过注意力读取缓存,由自身十个 token 主导,7–9 ms 与历史长度无关;缓存维护摊销 5 ms/tick。模型计算保持低于 50 ms tick 预算约 18 ms。闭环内端到端 agent 步中位数 58 ms,差异来自传感器格式化和评估工具开销,CARLA 同步模式下车辆每 tick 仍获得新控制,墙钟率约 17 Hz。
7.4 零样本城镇迁移
图3:四个评估城镇。专家仅在 town05 短路线训练;town01、02、03 在专家训练中从未出现。
| 城镇 | 智能体 | 控制率 | DS ↑ | RC ↑ | IS ↑ |
|---|---|---|---|---|---|
| town01 (23 路线) | LMDrive | 10 Hz | 20.5 | 40.5 | 0.56 |
| FastSlow-LMDrive | 20 Hz | 23.2 | 84.3 | 0.26 | |
| town02 (15 路线) | LMDrive | 10 Hz | 11.6 | 30.7 | 0.38 |
| FastSlow-LMDrive | 20 Hz | 28.3 | 94.4 | 0.29 |
路线完成率几乎完整迁移——town02 达 94.4、town01 达 84.3(域内 94.0),表明专家学会了读取骨干缓存和当前帧而非记忆特定城镇几何。基线在最不熟悉场景退化最大处优势最大——town02 上驾驶分数 2.4 倍、完成率 3.1 倍于基线。旧控制在场景不熟悉时伤害最大。
8. 局限性
- 这是仿真研究,仅在单城镇短路线上训练。长路线危险协商不迁移——town03 八条长路线上完成率 85.4% 但车辆碰撞和红灯违规足够多,惩罚因子降至 0.04,驾驶分数仅 2.96。
- 每公里车辆碰撞随完成率增加(3.2→11.2),专家完成了它未学会安全协商的交通。
- 底层 PID 控制器继承为较慢基线调优的增益,未重新调参。
- 主对比仅两次运行/配置,跳帧消融和迁移行为单次运行,观察到的运行间 DS 偏差达 1.6。
- 驾驶系统需要远超仿真基准的安全验证,本文不构成道路就绪的证据。
9. 总结
本文将语言引导驾驶智能体沿"理解慢、反应快"的界线分解:冻结 7B 骨干低频维护增量缓存的指令与历史表示,337M 动作专家每仿真 tick 通过逐层注意力读取该缓存回归航点。随机延迟训练使专家与部署时遇到的异步缓存对齐。CARLA 闭环评估表明两个分解部分各自贡献——专家提升驾驶分数,而逐 tick 新鲜度(仅因缓存使模型代价与历史长度无关而可负担)将路线完成率提升至跳帧基线的 2.5 倍(37.0→94.0)。零样本迁移到两个未见城镇保持 84–94% 完成率(基线 31–41%),逐 tick 模型代价 32 ms 与历史长度无关。缓存接口还开启了从世界模型预训练骨干以丰富缓存编码、到利用快慢分歧作为免训练运行时安全监督触发器的方向。



