OneVL - 双模态隐式推理框架

来自小米具身智能团队,发表于 arXiv 2604.18486


摘要:先把故事讲清楚

想象你是一位经验丰富的老司机。遇到复杂路口时,你的大脑并不会真的在脑海里"逐字逐句"地默念"前方有红灯→行人正在过马路→我应该刹车"——你只是瞬间感知+立刻行动。然而,当前的自动驾驶AI在做决策时,往往要先把这段"内心独白"一字一字地写出来(也就是所谓的链式推理 Chain-of-Thought,CoT),这既慢又冗余。

OneVL 的目标,就是让AI也能像老司机那样:思考在心里,行动在当下——而且思考质量不降反升。


第一章:引言——三个核心矛盾

🚗 CoT推理为什么这么香?

近年来,视觉语言动作模型(VLA)已成为自动驾驶的核心基础设施。其中,链式推理(CoT) 是个大功臣:让模型在预测轨迹之前,先用自然语言描述场景、分析意图、推断行为——有了这个"思考过程",规划误差显著降低。

⏱️ 但它太慢了!

这里有个致命缺陷:传统CoT必须一个词一个词地生成推理链,再输出轨迹。推理链越长,等待时间越久。对于需要实时响应的自动驾驶系统,这个延迟完全不可接受。

💡 前人的尝试:隐式CoT,但踩坑了

有人想到"压缩"这条路:把冗长的推理链压缩成几个隐向量(latent tokens),推理在"向量空间里"偷偷发生,不用明着写出来——这叫隐式CoT。代表方法有 COCONUT、CODI、SIM-CoT。

但实验结果很尴尬:这些方法在自动驾驶上全军覆没,甚至比连推理都不做的"直接答题"还差。

🔍 为什么隐式CoT会失败?

论文给出了一个深刻的诊断:这些方法压缩的是语言描述,而语言本身已经是对物理世界的一层抽象——它只编码了语义标签,而不是"车会往哪儿走、路会怎么变"这类因果动力学

换句话说,把抽象再压缩一次,离真实世界就更远了。

✨ OneVL:双模态隐式推理

本文提出 OneVL(One-step latent reasoning and planning with Vision-Language explanations),有两大创新:

  1. 双辅助解码器:一个"语言解码器"负责从隐向量重建人类可读的CoT推理文本;一个"视觉解码器"(世界模型角色)负责预测未来帧——强迫隐向量真正学到场景的物理因果结构。
  2. 预填充推理机制:推理时,辅助解码器全部丢弃,隐向量作为固定前缀一次性并行输入,速度与"不推理直接答题"几乎相同。

结果:OneVL 是第一个在隐式CoT里超越显式CoT的方法。


第二章:相关工作——站在巨人的肩膀上

2.1 隐式与隐式链式推理

从 COCONUT 到 CODI,再到 SIM-CoT,这些方法都在同一条路上探索:用更紧凑的表示替代冗长的推理 token。但它们都是为纯文本任务设计的,遇到自动驾驶这种高度视觉化、空间化的任务就"水土不服"。

2.2 VLM与VLA在自动驾驶中的应用

这一领域近年来异常活跃。从 AdaThinkDrive(自适应CoT)、LaST-VLA(大型VLA)到 Alpamayo-R1(用推理链对抗长尾场景),都在证明"让模型先想再开"是有效的——代价就是慢。

2.3 世界模型在自动驾驶中的角色

世界模型的核心思想来自强化学习:让AI能预测"我这样做之后,世界会变成什么样"。GAIA-1、Cosmos、DriveVLA-W0 等工作分别在数据生成闭环评估表示学习三个维度上利用世界模型。

OneVL 的独特之处在于:把世界模型当作一个训练时的辅助监督信号,而不是独立的大系统——训练完就丢,推理时零开销。


第三章:模型架构——“三合一"的精妙设计

3.1 主干:视觉语言模型

OneVL 的主干是 Qwen3-VL-4B-Instruct,一个视觉编码器(ViT)+ 视觉投影层(MLP)+ 大语言模型(LLM)的标准三件套。输入是前视摄像头图像 + 结构化文本(ego状态、历史轨迹、行驶指令)。

3.2 隐向量设计——两种"特殊占位符”

这是整个框架最有趣的部分。OneVL 在助手回复里插入两类特殊 token:

  • 视觉隐向量(Zv):4个视觉潜在token,负责编码空间-时间视觉推理(“未来场景长什么样”)。在实现中用35个词表token表示。
  • 语言隐向量(Zl):2个语言潜在token,负责编码语义推理(“我应该怎么想这件事”)。用20个词表token表示。

💡 有个有趣的工程细节:直接往词表里加新special token会掉点,所以他们用原有词表的token来表示隐向量——模型在训练中自然学会赋予这些位置特殊含义。

理论与工程的精妙博弈

理论上的 $C_t = 2$ 探讨的是隐式推理通道的逻辑概念深度。为了强迫模型不偷懒、不进行无用的信息死记硬背,信息论里的 信息瓶颈(Information Bottleneck) 要求这个通道必须窄到极致。在理论推导中,作者认为:

  • 2 个逻辑单位(Logical Tokens) 的语义表达能力,就已经足够在高度抽象的隐藏空间里编码一个驾驶意图(比如"减速让行")
  • 4 个逻辑单位 就可以在物理维度上编码 $+0.5$ 秒和 $+1.0$ 秒的未来路况预测

工程上的 20 / 35 个 Token 解决的是:如何在保护大模型预训练能力、对抗词表语义干扰的前提下,为这 2 个逻辑深度提供充足的物理表征带宽。

为什么不直接添加新的特殊Token?向已经预训练好的多模态大模型(如 Qwen3-VL)中添加全新的特殊 Token,会导致明显的性能退化

  1. 冷启动难题:新加入的特殊 Token,其 Embedding 权重完全是随机初始化的,没有任何预训练的知识
  2. 破坏预训练对齐:大模型的 Attention 机制非常敏感,在中途强行插入没有任何语义的全新 Token,会干扰预训练模型原本极其丝滑的上下文注意力分配

解决方案:完全不新增特殊 Token,直接复用大模型原始词表中已有的 Token。这样大模型对这些 Token 的 Embedding 已经有了极好的预训练初始化。

那为什么要用 20 个(和 35 个)词表 Token?如果只用 2 个已有的词来充当隐式推理的瓶颈,会产生两个致命缺陷:

  1. 原语义的干扰(Semantic Bias):当只有 1 到 2 个 Token 时,自注意力机制会极难克服它们原本固有的字面含义
  2. 表征容量的瓶颈:大模型(如 4B 大小)的一个隐藏层向量维度 $d$ 通常在 $3072$ 左右,仅靠 2 个 Token 提供的隐藏状态空间,信息容量极易发生溢出和丢失

增加到 20 个 Token 的妙处在于:

  • 稀释原始语义:当 20 个已有的词组合成一个固定的长序列时,它在自注意力机制中会形成一个相对独立的"语义盲区",有利于模型更容易地将其"重编程"为一个纯粹存放隐式推理的物理隐空间
  • 极佳的信息瓶颈:20 个语言 Token(加上 35 个视觉 Token)既给两个辅助解码器提供了足够宽、足够稳的输入维度来重建出复杂的思维链和未来路况图像,同时相比于直接自回归吐出几百个文字,它依然保持了极窄、极度压缩的特征瓶颈

3.3 语言辅助解码器

从语言隐向量的隐藏状态 Hl 出发,结合当前帧的视觉 patch 嵌入 V,拼接后输入一个独立的语言模型解码器,让它重建出完整的CoT推理文本

训练目标就是标准的交叉熵:预测的CoT要和标注的CoT尽量一致。这个损失(Ll)会反向传播到主模型,逼着隐向量"记住"语义推理内容。

3.4 视觉辅助解码器——世界模型之心

这是整篇论文最关键的创新。视觉解码器拿到视觉隐向量隐藏状态 Hv 和当前帧视觉嵌入,输出的目标是:预测未来 +0.5s 和 +1.0s 的视觉token序列

图像先通过 IBQ 视觉分词器(来自 Emu3.5,codebook 有 131,072 个离散视觉码)离散化;Qwen3 的词表也对应扩充了 131,072 个视觉token ID。

这一步的逻辑非常优雅:要预测"0.5秒后道路长什么样",模型就必须学会车辆运动规律、道路几何结构、障碍物动态——这正是轨迹预测所需要的因果动力学,而不是模糊的语言标签。

3.5 联合训练目标

$$\mathcal{L} = \mathcal{L}_c + \lambda_l \mathcal{L}_l + \lambda_v \mathcal{L}_v$$

其中:

  • Lc:主模型的轨迹预测交叉熵损失
  • Ll:语言解码器损失,权重 λl = 1.0
  • Lv:视觉解码器损失,权重 λv = 0.1(视觉重建更难,权重调小防止它"喧宾夺主")

3.6 预填充推理——速度魔法

推理时,辅助解码器全部抛弃。推理 prompt 构建为:

[System] + [User query] + <start-latent-vis> + Zv × 4 + <end-latent-vis>
         + <start-latent> + Zl × 2 + <end-latent>

这些隐向量 token 全部放入预填充阶段(prefill phase),现代 Transformer 会把整个前缀一次性并行处理——几乎零额外开销。之后只需自回归地生成轨迹 token。

推理结果可选输出三种东西:

  1. 轨迹预测(必须输出)
  2. 语言解释(可选,供事后人工审查)
  3. 视觉预测帧(可选,空间预览)

为什么变成"输入"后可以并行计算?

Transformer 底层最核心的物理机制——“读(预填充 Prefill)“与"写(解码 Decoding)“的本质区别。

可以把 GPU 想象成一个**“阅读速度极快、但写字速度极慢的超级打字员”**。

当隐式Token是"输出"时(自回归)

  • 因果关系限制:模型在写第 2 个字时,必须知道第 1 个字写了什么
  • 串行计算:GPU 哪怕算力再强,也无法"预知未来”,必须老老实实地运行 55 次完整的前向传播
  • 带宽瓶颈:每次只写一个字,GPU 都需要把大模型几十 GB 的权重从显存里完整读取一遍

当隐式Token变成"输入"后(预填充)

  • 信息完全已知:GPU 在启动前,已经拿到了全部的输入
  • 矩阵乘法的并行神话:Transformer 的自注意力机制可以一次性并行计算出所有 Token 之间的 Query、Key、Value 矩阵
  • 一次读取,全部算完:GPU 只需要将大模型权重从显存里读取一次,就能把这 55 个 Token 对应的 Hidden State 在 1 个 Step 内全部并行计算出来

训练建立的真正是什么能力?

训练建立的并不是"生成这些token"的能力,而是**“利用这些位置做推理"的习惯**。

在大模型的底层数学世界里,“自己吐出来的 Token"和"外部塞进去的 Token"是完全等价的。对于任何一个 Token 位置,它的计算只取决于三样东西:

  1. 这个 Token 的 ID 是什么(查 Embedding 词表得到初始向量)
  2. 它的位置编号是多少(加上位置编码)
  3. 它的左边都有哪些 Token(通过注意力机制计算相关性)

训练时模型一步步"写"出占位符;推理时占位符是外部一次性塞给它的输入——但当 GPU 计算到这些位置时,它所经历的数学矩阵乘法、注意力掩码、以及位置编码,与训练时完全一模一样

大模型学到的真正能力是**“注意力路由机制(Attention Routing)”**:

  1. “吸星大法”:当计算运行到这 55 个占位符的位置时,模型各层的 Attention 会把左侧"图像中行人的位置、前车的加速度、马路的边界"等关键特征,全部抽取并压缩存储在这 55 个 Token 对应的隐藏状态里
  2. “定向读取”:当计算运行到最后的 <answer> 轨迹预测位置时,注意力网络会直接去那 55 个中转站提取高度浓缩的’思想'

第四章:三阶段训练流程——“循序渐进"才能不崩溃

预备阶段:视觉解码器自监督预训练

在把视觉解码器接到主模型之前,先让它"独自练习”:只给当前帧,让它预测下两帧——不涉及任何隐向量。这相当于先让它学会"世界的一般运动规律”,再教它"按照驾驶意图来预测未来”。

Stage 0:主模型热身

把主模型+隐向量接在一起,只训练轨迹预测任务(没有辅助解码器)。目的是让隐向量位置自然地发展出对轨迹有用的内部表示,同时让注意力机制建立起"轨迹token→隐向量"的信息路由路径。

Stage 0 的隐式压力来源

Stage 0 唯一的压力来自因果注意力机制的结构:

输入tokens → 视觉隐向量位置 → 语言隐向量位置 → 轨迹tokens
                ↑                    ↑
         轨迹tokens可以attend到这些位置

如果模型发现"把一些中间计算结果存到隐向量位置,再从那里读取"比"直接从几千个图像 token 里检索"更高效,梯度下降就会朝这个方向推。

但问题是:模型完全可以绕过隐向量位置,直接让轨迹 token attend 图像 token,隐向量位置形同虚设。没有任何硬约束阻止这件事。

Stage 0 的真正作用是建立路径,不是充分利用路径。隐向量位置在 Stage 0 结束时,可能只编码了一些模糊的、局部的信息,远不是有意义的推理表示。但它为 Stage 1 的强监督创造了一个稳定的起点。

Stage 1:辅助解码器热身

冻结主模型,只训练两个辅助解码器。此时主模型输出的隐向量表示已经稳定,解码器可以专心学习"从固定的隐向量表示→语言/视觉输出"的映射。

为什么 Stage 1 不会崩溃?

有两个安全网:

  1. 视觉解码器有预训练兜底:即使 Hv 是弱信号,视觉解码器可以主要依赖 V(当前帧特征),把 Hv 的贡献压到接近零
  2. 两个解码器都能看到当前帧特征 V:解码器的输入是拼接的,V 是明确的、高质量的视觉信息

Stage 1 的真正作用是:

  • 学习解码器的基本结构
  • 给 Stage 2 提供初始化(解码器不是从随机开始)
  • 稳定梯度来源

Stage 2:端到端联合微调

三者同时训练,Ll 和 Lv 的梯度反流回主模型,形成良性循环:

  • 更好的隐向量 → 更准的轨迹预测
  • 解码器反馈 → 隐向量编码更丰富的信息

正因为 Stage 0 和 Stage 1 把所有组件都"预热"好了,Stage 2 才能稳定收敛。跳过三阶段训练的后果是灾难性的


第五章:实验——用数字说话

5.1 四个测试基准

  • NAVSIM:基于真实驾驶日志的大规模非反应式仿真规划基准,评价指标是 PDM-score(越高越好,综合安全/舒适/进度)。
  • ROADWork:专攻施工路段,有锥桶、临时标志、工人——所有让常规模型头大的场景,评价指标是 ADE/FDE(越低越好)。
  • Impromptu:从8个开放驾驶数据集蒸馏而来,专注四类非结构化边角场景,带规划导向Q&A标注。
  • APR1:引入"因果链"注释,对应复杂驾驶行为,强调可解释性和泛化性。

5.2 实验配置

所有方法都基于 Qwen3-VL-4B-Instruct,公平对比。对手包括:

  • AR Answer:直接输出轨迹,不推理,最快的基线
  • AR CoT+Answer:先生成完整推理链再输出,最慢但最准的显式CoT
  • COCONUT/CODI/SIM-CoT:三种隐式CoT对手
  • AdaThinkDrive(8B)、LaST-VLA(8B):文献最优方法

5.3 主要结果:OneVL全面碾压

基准 最优对手 OneVL 提升
NAVSIM PDM↑ 88.29(AR CoT) 88.84 +0.55 vs CoT
ROADWork ADE↓ 13.18(AR CoT) 12.49 -0.69
Impromptu ADE↓ 1.42(AR CoT) 1.34 -0.08
APR1 ADE↓ 2.99(AR CoT) 2.62 -0.37

延迟方面:OneVL 在 NAVSIM 上达到 4.46s,与 AR Answer(4.49s)几乎相同,比 AR CoT(6.58s)快 1.5倍;在 ROADWork 上甚至比 AR Answer 还要快(4.71s vs 4.74s)。

最重要的发现:三种隐式CoT对手(COCONUT、CODI、SIM-CoT)在几乎所有基准上都不如"直接答题”,充分证明纯语言隐式CoT用于驾驶是失败的。

5.4 解释质量评估

OneVL 不只是快,还要能讲清楚"为什么这么开”。在 NAVSIM 500个测试样本上,用三种维度评估语言解释:

  • 元动作准确率(高层驾驶决策的精确匹配):OneVL 71.0,优于 SIM-CoT 的 67.2
  • 语义相似度(STS):OneVL 78.26,接近 AR CoT 的 79.75
  • LLM-as-Judge 评分:OneVL 79.13,接近 AR CoT 的 81.86

AR CoT 的语言解释质量仍略胜一筹(毕竟它是直接生成文本的),但 OneVL 以"压缩隐向量还原文本"的方式已经非常接近——而速度快得多。

5.5 消融实验:每个组件都有贡献

模型变体 NAVSIM PDM ↑
去掉视觉解码器 87.97(-0.87)
去掉语言解码器 88.53(-0.31)
去掉三阶段训练 67.13(-21.71!)
完整 OneVL 88.84

几个关键发现:

🔥 去掉三阶段训练 → 直接崩溃。初始梯度范数爆炸到 378.22(正常版本是 0.28),轨迹预测损失高出 37%,最终 PDM 直接掉 21.71 分。这说明三阶段课程不是锦上添花,而是不可或缺的"稳定器"。

🔥 视觉解码器的贡献(+0.87)远大于语言解码器(+0.31)。因为轨迹预测本质上是空间预测任务,视觉未来帧预测是比语义描述更直接的因果监督信号。

可视化对比也很直观:用完整训练方案时,视觉解码器输出的未来帧与真实场景高度一致;去掉三阶段训练后,解码器退化成"背答案",输出与输入图像毫无关联的乱码图像。

5.6 迈向真实部署

对于需要极低延迟的车载系统,论文还探索了一个"轻量化"变体:在最后一个隐向量的隐藏状态上接一个MLP直接回归头,一次前向传播输出轨迹(不再自回归)。

变体 PDM ↑ 延迟 ↓
OneVL(AR解码) 88.84 4.46s
OneVL(MLP头) 86.83 0.24s(4.16 Hz)

0.24s 的延迟相当于 AR 模型延迟的 5.4%,满足车载"几赫兹"的预算,同时性能仍然优于之前的 SOTA 方法(如 LaST-VLA 的 87.30)。

5.7 深度分析:收益从哪里来?

为什么压缩反而更准? 论文给出信息瓶颈理论的视角:紧凑的隐向量强制模型只保留对轨迹预测真正有用的因果特征,过滤掉冗余的"正确废话"。而显式CoT链里可能充斥着与轨迹决策无关的描述,反而引入噪声。

为什么先前的隐式CoT在自动驾驶上失败? 两个根本原因:

  1. 缺少视觉世界模型监督——纯语言隐向量编码的是"世界的语义抽象",而不是"世界的物理规律"
  2. 没有分阶段训练——优化从一开始就处于混乱状态,各组件无法协同

第六章:结论与展望

核心洞见

OneVL 的核心命题是:压缩驱动泛化(compression drives generalization)。但压缩什么很关键——压缩语言描述(已经是抽象)只满足了"效率要求",没满足"智能要求"。必须压缩真实世界的因果动力学,才是真正有意义的压缩。

视觉世界模型解码器提供了这个"因果锚点":要预测出未来场景图像,模型就必须真正理解场景运动的物理规律。

局限性

  • 训练时需要同时保持三个4B参数模型在内存中,约为3倍训练显存,即使有 DeepSpeed ZeRO-2 也不轻松
  • 隐向量数量是经验性选择,如何系统性地权衡"隐向量数量 vs 表示容量"有待深入研究

未来方向

  1. 轨迹token并行解码:目前预填充阶段已经很快,瓶颈在于轨迹token仍需自回归——并行解码轨迹是下一步
  2. 多摄像头世界模型:扩展到360°全景未来帧预测,提供更全面的因果场景理解
  3. 人机交互界面:实时向驾驶员展示"视觉+语言双解释"——车为什么这样走,AI来给你说清楚,同时也能为强化学习提供更丰富的训练信号

附录一瞥

  • 数据格式示例:详细展示了CoT标注的格式,包括对场景感知、关键物体、驾驶意图的结构化描述
  • CoT标注构建:NAVSIM 使用 AdaThinkDrive 的公开标注;ROADWork 内部生成;Impromptu 基于Q&A对重建;APR1 使用"因果链"标注
  • 定性可视化:四个数据集各有详细的案例展示,包括未来预测帧和推理文本,充分展示了 OneVL 的可解释性

一句话总结:OneVL 找到了自动驾驶AI"既快又聪明"的正确姿势——把推理藏进向量,但用未来视觉图像来"考核"这个向量是否真的懂得了驾驶的物理规律。