
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 融入小型多模态草稿模型中时,加速效果并未显著提升,主要原因包括:
- 图像信息冗余较高:大量重复或低信息密度的视觉块(patch)对小模型造成干扰;
- 多模态处理复杂性高:视觉 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):
模块最终生成:- 一组压缩后的视觉 token $C_{1:m}$,数量远小于原始视觉 token;
- 一个全局视觉特征向量 $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):
-
准备输入:
- $Q$:可学习 Query 向量;
- $V_{1:r}$:视觉特征序列(同时为 Key 和 Value)。
-
计算注意力分布:
每个 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}$ 为注意力权重矩阵。
-
信息聚合:
Query 通过注意力分布从所有视觉 patch 中聚合特征:$$ C = A (V W_v) $$
得到一组压缩后的视觉 token 表示 $C_{1:m}$。
-
全局视觉特征提取(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)

图示流程如下:
-
左侧:输入图像经视觉编码器得到一系列 patch 特征 $(v_0, v_1, v_2, \ldots, v_r)$。
-
中间:少量 learnable queries $(q_0, q_1, \ldots, q_m)$ 进入 transformer encoder,与 $(v_i)$ 执行 cross-attention。
-
右侧输出:
- 压缩视觉 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) 模式以增强鲁棒性。该机制打破了目标与草稿模型隐藏状态之间的一一对应关系,防止“偷看”问题,并让草稿模型学习自纠错。

该图是论文中的训练机制示意,对比了 EAGLE、Greedy-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) 的基础上提出更鲁棒的训练策略:
-
加入随机采样 (Temperature Sampling)
在数据合成阶段改变采样温度,使目标模型输出多样化,打破 $(f)$ 与输出 token 的一一对应关系; -
引入 Multi-Token Prediction (MTP)
Draft 模型一次预测多个后续 token,模拟 speculative decoding 的多步验证过程,提高泛化; -
引入 Draft 自身状态 ($f′$)
ViSpec 在训练时不仅参考目标模型的隐藏状态 $(f)$,还引入 Draft 模型自己的隐藏状态 $(f′)$,使其学会自我纠错; -
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× 的推理加速,同时保持生成质量不变。