Conference: NeurIPS'25

GitHub: https://github.com/KangJialiang/ViSpec


My Thoughts

个人感觉这篇工作是将Eagle应用于VLM, 并针对VLM带来的问题进行了解决。

但这篇工作也是需要training,构造数据集和进行训练花销还是挺大的, 好奇能否有更efficient甚至是training-free的method来实现Vision-Aware Speculative Decoding。


1. Motivation

Speculative Decoding(推测解码)是一种在大型语言模型(LLM)中被广泛采用的推理加速技术。然而,其在视觉语言模型(Vision-Language Models, VLMs)中的应用仍然非常有限,已有方法的加速收益通常不足 1.5×
随着多模态能力逐渐成为大规模模型的核心能力,这一加速差距变得愈发显著。

ViSpec 的核心动机在于突破当前 VLM 加速的瓶颈:现有推测式解码方法主要针对纯文本推理设计,在视觉输入冗余较高的多模态场景下,小型草稿(draft)模型在生成过程中难以高效处理图像特征,从而限制了整体加速效率。


2. Challenge

目前针对 Vision-Language Models 的 Speculative Decoding 工作非常少。仅有的尝试[7] 在 LLaVA-7B 上应用了一个小型仅语言模型的 draft 模型,获得了大约 1.5× 的加速。当他们将 image encoder 融入小型多模态草稿模型中时,加速效果并未显著提升,主要原因包括:

  1. 图像信息冗余较高:大量重复或低信息密度的视觉块(patch)对小模型造成干扰;
  2. 多模态处理复杂性高:视觉 token 的嵌入维度高、数量多,导致 draft 模型计算成本上升而收益有限。

这些问题说明:在现有的 speculative decoding 框架中,草稿模型无法充分理解和整合图像特征信息。因此,作者需要一个 能高效处理视觉与语言双模态特征并保持高预测精度 的专门框架。ViSpec 即是在此背景下提出。


3. Contribution

ViSpec 旨在解决小型 draft 模型在视觉冗余与上下文一致性方面的弱点。作者观察到,大型 VLM 能逐层过滤图像中冗余信息而保持语义理解,但小模型无法做到这一点。
为解决这一问题,ViSpec 提出了 Vision-Aware Speculative Decoding 框架,核心贡献如下:

  • 提出 ViSpec 框架:首个为视觉语言模型专门设计的 speculative decoding 结构,结合视觉感知机制进行加速。
  • 双重集成机制(Dual Integration Mechanisms)
    • Attention Integration:将压缩后的视觉表示融入 draft 模型的注意力层;
    • Feature Augmentation:将全局视觉特征向量注入所有文本 token,增强多模态一致性。
  • 多阶段训练策略(Two-Stage Training Strategy):扩展现有多模态数据集以包含长响应(long-response)任务,结合 multi-token prediction 提升 draft 模型泛化。
  • 实证验证:在四个主流 VLM(LLaVA-1.6 7B/13B, Qwen2.5-VL 3B/7B)上进行实验,首次实现 显著加速(最高 3.22×) 的 VLM speculative decoding。

4. Method

4.1 Overcoming Redundancy — Image Embedding Compression

在 speculative decoding 框架中,小型 draft 模型通常较浅(如单层 Transformer)。然而,这种浅模型难以处理包含成千上万个冗余图像 patch 的长输入序列。
首先作者形式化地说明这一现象:

设输入为包含 $R + 1$ 个嵌入的序列 $e_1, e_2, …, e_{R+1} \in \mathbb{R}^d$,其中 $R$ 个是冗余图像 token(即 $e_{r_1} = e_{r_2} = … = e_{r_R} = s$),仅一个是真实有效的不同 token $e_u = t$。
在单层自注意力模型中,若忽略位置编码,输出为:

$$ y_i = \sum_{j=1}^{R+1} \alpha_{ij} v_j, \quad \alpha_{ij} = \frac{\exp(q_i k_j^\top)}{\sum_{k=1}^{R+1} \exp(q_i k_k^\top)} $$

当 $R \to \infty$ 时,冗余 token 的加权项主导分母,真实 token 的注意力权重 $\alpha_{iu} \to 0$, 导致输出近似为冗余特征的平均:

$$ y_i \approx W_v s $$

因此 draft 模型在大量冗余视觉输入下几乎无法感知有用信息。理论上,一个深度为 $(K + 1)$ 的网络才能处理复杂度为 $(K)$ 的嵌套特征层级 [28],意味着浅层 draft 模型无法提取有效视觉语义。


Vision Adaptor 模块详解(Q-Former-Inspired)

ViSpec 的核心创新之一是 Vision Adaptor 模块,其灵感来源于 BLIP-2 中的 Q-Former 架构。 该模块的目标是:在保证视觉语义完整的前提下,将上千视觉 token 压缩成少量高信息量的 token 表示, 从而显著提升 speculative decoding 的推理效率,使草稿模型(draft model)既“轻”又“懂图像”。


模块总体结构说明

该模块由一个轻量级的 Transformer Encoder 组成,包含固定数量的可学习 query 向量(learnable queries),其运行流程如下:

  • 输入(Input)
    主模型视觉编码器(Vision Encoder)提取的原始视觉嵌入序列

    $$ V_{1:r} = E_v(I) \in \mathbb{R}^{r\times d} $$

    其中:

    • $I$:输入图像;
    • $r$:图像 patch 数量(通常上千个);
    • $d$:每个 patch 的嵌入维度。
  • 查询(Q)
    一组固定可学习参数矩阵

    $$ Q = [q_1, q_2, \ldots, q_m] \in \mathbb{R}^{m\times d} $$

    每个 query 相当于模型学习到的“视觉聚焦点(visual query)”,用于主动捕捉图像的不同语义区域。

  • 键值(K, V)
    均来自视觉编码器输出的特征序列 $V_{1:r}$。

  • 输出(Output)
    模块最终生成:

    1. 一组压缩后的视觉 token $C_{1:m}$,数量远小于原始视觉 token;
    2. 一个全局视觉特征向量 $g$,作为全图语义摘要(Global Visual Feature)。

数学表达式

整个压缩过程可形式化地写为:

$$ C, g = \text{VisionAdaptor}(V_{1:r}) = \text{TransformerEncoder}(Q, K = V, V = V) $$

该式揭示了 Vision Adaptor 的计算核心: 查询 Q 主动“检索” Key/Value(即视觉特征 V)中的关键信息,通过自注意力机制生成紧凑的高层视觉表示。


Query-Based Selective Attention 机制

整个压缩机制基于交叉注意力(Cross-Attention):

  1. 准备输入

    • $Q$:可学习 Query 向量;
    • $V_{1:r}$:视觉特征序列(同时为 Key 和 Value)。
  2. 计算注意力分布
    每个 Query 对所有视觉 patch 执行加权聚合:

    $$ A = \text{softmax}\left(\frac{QW_q (VW_k)^\top}{\sqrt{d}}\right) $$

    其中:

    • $W_q, W_k, W_v$ 为线性投影矩阵;
    • $A \in \mathbb{R}^{m \times r}$ 为注意力权重矩阵。
  3. 信息聚合
    Query 通过注意力分布从所有视觉 patch 中聚合特征:

    $$ C = A (V W_v) $$

    得到一组压缩后的视觉 token 表示 $C_{1:m}$。

  4. 全局视觉特征提取(Global Feature)

    $$ g = \text{MLP}\left(\text{mean}(C_{1:m})\right) $$


模块功能总结

模块阶段 输入 处理方式 输出
Vision Encoder 图像 (I) 转换为高维嵌入序列 (V_{1:r}) (r×d) 的视觉 token
Vision Adaptor Learnable Queries (Q)、Key/Value (V) Attention 聚合 压缩视觉 token (C_{1:m}) + 全局特征 (g)
Integration 将 (C_{1:m}, g) 融入 Draft 模型注意力与隐藏状态 全模态融合 多模态输入草稿模型,供 speculative decoding 用

图示解读(Figure 3)

图示流程如下:

  1. 左侧:输入图像经视觉编码器得到一系列 patch 特征 $(v_0, v_1, v_2, \ldots, v_r)$。

  2. 中间:少量 learnable queries $(q_0, q_1, \ldots, q_m)$ 进入 transformer encoder,与 $(v_i)$ 执行 cross-attention。

  3. 右侧输出

    • 压缩视觉 token $(c_0, c_1, \ldots, c_m)$:输入至 Draft Model 解码器注意力层;
    • 全局视觉特征 $(g_v)$:注入到每一个生成 token 的隐藏状态中,用于增强视觉一致性。

4.2 Addressing Lost-in-the-Middle — Global Visual Feature Integration

虽然压缩视觉 token 能确实缩短序列,但在长文本生成任务中会导致“Lost in the Middle”问题 [21]:浅层模型在长上下文中难以保持视觉一致性,尤其图像信息被文本 token 掩盖时。

为解决这个问题,ViSpec 引入 Global Visual Feature Injection(全局视觉特征注入) 机制,使 draft 模型在整个生成过程中持续访问视觉上下文。

作者从 Vision Adaptor 输出中提取全局视觉特征向量 $g$,并将其加入到每个文本 token 的隐藏状态中:

$$ f^{aug}_t = f_t + W_g g $$

其中:

  • $f_t$:原始文本隐藏状态;
  • $g$:全局视觉特征;
  • $W_g$:可学习线性变换矩阵。

此机制确保模型始终在全局视觉语义下进行 token 预测,从而提升草稿模型在长响应中的一致性与语义粘性。


4.3 Dataset Generation and Training

由于公开的多模态数据集很少包含带长响应的样本,作者提出了一个高效的数据生成策略:

  • 数据扩展:在传统任务(如 VQA、Image Captioning)中修改提示词(prompt)以诱导目标 VLM 生成更长的回答,例如:

    • “请详细解释你的答案。”
    • “描述图像时,请给出完整细节描述。”
  • 自动合成数据:通过目标模型生成高质量长响应,不需要人工标注。

此外,ViSpec 引入采样(sampling)与 multi-token prediction (MTP) 模式以增强鲁棒性。该机制打破了目标与草稿模型隐藏状态之间的一一对应关系,防止“偷看”问题,并让草稿模型学习自纠错。

该图是论文中的训练机制示意,对比了 EAGLEGreedy-based 训练ViSpec 的多 token 预测训练 三种方案,分为 (a)、(b)、(c) 三部分。


(a) EAGLE Training:Text-only 模式

EAGLE 框架在纯文本任务中使用目标模型(target LLM)的隐藏状态 $f$ 来指导草稿模型的输出 $\hat{f}$。 其监督信号依赖目标模型在教师强制(teacher forcing)下的确定性 token 生成。

例如,当目标句子为 “How can I help you?” 时:

  • 若目标模型生成的 token 为 “may” 而非 “can”,则隐藏状态 $f_{How}$ 含有噪声。
  • 草稿模型可以通过 $(f_{How}, e_{can})$ 的联合建模学习“纠错性”预测,这种随机噪声反而起到了 regularization 作用。

(b) Greedy Target-only 训练(无 Multi-Token Prediction)

若使用目标模型的确定性(greedy)输出并仅用单步预测训练,草稿模型就无法纠错。
此时草稿模型的输入隐藏状态与监督目标一一对应:

$$ (f_{How}, e_{may}) \rightarrow f_{may} $$

这种 one-to-one 关系会导致草稿模型陷入“shortcut 学习”——它只需模仿目标模型输出,而不学习上下文动态。
实际上,这相当于单步版 Medusa,没有考虑多 token 预测结构。


(c) ViSpec Training:Vision-Aware + Multi-Token Prediction

ViSpec 在 (a)、(b) 的基础上提出更鲁棒的训练策略:

  1. 加入随机采样 (Temperature Sampling)
    在数据合成阶段改变采样温度,使目标模型输出多样化,打破 $(f)$ 与输出 token 的一一对应关系;

  2. 引入 Multi-Token Prediction (MTP)
    Draft 模型一次预测多个后续 token,模拟 speculative decoding 的多步验证过程,提高泛化;

  3. 引入 Draft 自身状态 ($f′$)
    ViSpec 在训练时不仅参考目标模型的隐藏状态 $(f)$,还引入 Draft 模型自己的隐藏状态 $(f′)$,使其学会自我纠错;

  4. Loss 函数

    $$ \mathcal{L} = \text{CrossEntropy}(p_i, \hat{p}_i) $$

    其中:

    • $p_i$:目标模型预测分布;
    • $\hat{p}_i$:ViSpec draft 模型预测分布;
    • 损失通过多 token 同时累积,使 draft 学习长依赖关系。

三种训练方式对比详细解释

(a) EAGLE 的 text-only 训练

  • 做法: EAGLE 的目标模型(target model)只用文本训练。 有时目标模型会犯错,比如:

    • 真实答案(ground truth):“can”
    • 模型输出:“may”
  • 含义: 模型的隐藏状态 $f_{\text{How}}$(对应“how”这个词)会被当作带噪声的数据增强。 因为 draft 模型看到的输入是: $[f_{\text{How}}, e_{\text{can}}]$ 其中 $f_{\text{How}}$ 来自目标模型、带有误差; $e_{\text{can}}$ 是正确 token 的 embedding。 所以 draft 模型通过这种“错中带对”的训练,可以学会纠错能力(corrective behavior)。

直观理解:

模型有时猜错了词(may vs can),draft 模型看到这种错误配对后学会“哦,原来这种隐藏状态其实应该是 can”,从而学会在推理时自我修正。

(b) 贪心(greedy)训练 + 没有多 token 预测

  • 做法: 在这种训练方式里,target model 用贪心策略(每次只选最高概率的 token)生成序列。 draft model 的输入是: $[f_{\text{How}}, e_{\text{may}}]$ 输出监督是: $[f_{\text{may}}]$

  • 结果: 因为生成过程是确定性的,输入和输出是一一对应的(one-to-one)。 同时,隐藏状态 $f_{\text{may}}$ 已经包含了几乎全部信息,所以监督信号不依赖之前的输入。

  • 问题: 这会让训练过程退化为“单步预测”(single-step),相当于只是在学一个 token 的 Medusa(参考 [2])。

缺点:

draft 模型无法学习上下文间的复杂纠错关系,也不会形成鲁棒的预测能力。

(c) ViSpec 的训练方式

  • 改进 1:随机采样打破一一对应关系 ViSpec 在训练时采用 采样(sampling),而不是贪心生成。 这样不同的 token(及其隐藏状态)就不再严格一一对应,打破了 (b) 的单一映射问题。

  • 改进 2:引入 draft 模型自己的隐藏状态 除了 target model 的隐藏状态 $f$,ViSpec 还把 draft model 自己的隐藏状态 $f′$ 也作为输入。 当 target model 偏离 ground truth 时,$f′$ 能像 (a) 的带噪声特征一样,帮助 draft model 学会纠错。

效果:

draft 模型通过这种方式自我学习如何纠错(self-correction),而不需要额外的人造纠错数据集。

总结对比表:

方法 输入来源 是否打破一一对应 是否有纠错信号 训练效果
(a) EAGLE text-only $ ( f_{\text{target}}, e_{\text{GT}} ) $ ✅ 是 ✅ 来自噪声 $ f $ 学会纠错
(b) Greedy (no MTP) $ ( f_{\text{target}}, e_{\text{pred}} ) $ ❌ 否 ❌ 无纠错 退化为单步预测
(c) ViSpec $ ( f_{\text{target}}, f′{\text{draft}}, e{\text{sample}} ) $ ✅ 是 ✅ 自监督纠错 学会自纠错

一句话总结:

EAGLE 依靠目标模型的错误隐状态来“教” draft 模型纠错; 贪心训练退化成死记单步预测; ViSpec 通过采样+自隐藏状态输入,让 draft 模型在训练中自然学会纠错,无需人工干预。


5. Evaluation

作者在四个主流 Vision-Language Models 上进行了全面实验:

  • LLaVA-v1.6-Vicuna-7B
  • LLaVA-v1.6-Vicuna-13B
  • Qwen2.5-VL-3B-Instruct
  • Qwen2.5-VL-7B-Instruct

并与两种主流基线方法进行比较:Medusa [2]EAGLE-2 [16]

实验配置

  • 环境:单机 GPU(80GB 显存),训练阶段使用 8×GPU 并行。
  • 优化器:AdamW,学习率分别为 $3\times10^{-6}$,batch size = 8。
  • 最大序列长度:2048。

评估指标

  • Average Acceptance Length (τ) :每次推测阶段接受的平均 token 数;
  • Speedup Ratio:标准自回归解码与推测解码的推理时间比值。

Benchmark 任务

包括八个多模态任务:

  • ScienceQA (SQA)
  • MM-Vet
  • TextVQA
  • MME
  • COCO Captions
  • VizWiz
  • GQA
  • SEED-Bench

主要结果

ViSpec 显著优于 Medusa 与 EAGLE-2:

  • 在 LLaVA-7B(T=0)下,ViSpec 在 TextVQA 上实现 2.90× 加速
  • 在 LLaVA-13B 上获得 平均 2.38× 加速
  • 在 Qwen2.5-VL 系列上,仍稳定保持 约 1.8× 加速
  • 最高达 3.22×(COCO Captions)

6. Conclusion

ViSpec 是首个成功实现 视觉语言模型 speculative decoding 显著加速 的框架。
通过结合:

  • 压缩视觉嵌入(vision embedding compression);
  • 全局视觉信息注入(global feature injection);
  • 长响应数据生成(long-response dataset generation);

ViSpec 在多种模型上实现高达 3.22× 的推理加速,同时保持生成质量不变。