ApET: Approximation-Error Guided Token Compression for Efficient VLMs¶
会议: CVPR 2026
arXiv: 2602.19870
代码: MaQianKun0/ApET
领域: 多模态VLM
关键词: Token压缩, 视觉Token冗余, 近似误差, FlashAttention兼容, VLM加速
一句话总结¶
从信息论角度提出基于线性近似重建误差的视觉 token 重要性评估方法,不依赖 attention 权重,天然兼容 FlashAttention,在 LLaVA-1.5 上压缩 88.9% 视觉 token 仍保持 95.2% 性能。
研究背景与动机¶
VLM 视觉 token 冗余严重:当前主流 VLM(如 LLaVA、InternVL)将图像编码为数百甚至上千个 visual token 送入 LLM。一张 336×336 的图像在 LLaVA-1.5 中产生 576 个 token,高分辨率方案下更是超过 2000 个。然而大量研究表明,这些 token 中存在严重冗余——相邻 patch 编码的信息高度重叠,真正对下游任务有用的"关键 token"可能只占 10-20%。
计算瓶颈:LLM 的 self-attention 计算复杂度为 \(O(n^2)\),其中 \(n\) 是序列长度。视觉 token 占据序列长度的大部分(通常 >70%),因此减少视觉 token 数量可以近二次方地降低计算量。在多帧视频理解任务中,问题更加突出——多帧叠加后序列长度轻松超过 10K。
基于 Attention 权重的方法存在两大硬伤:
(a) 位置偏差问题:现有主流方法(FastV、FitPrune、VisionZip 等)通过 LLM 中间层的 attention 权重评估 token 重要性——attention 值高的 token 被保留,低的被丢弃。但作者发现,LLM 的 attention 分布存在明显的位置偏差:序列后部的 token 由于因果 attention mask 的作用,被 attend 的次数天然更多(后面的 token 能看到前面所有 token,但位置偏差导致后面的 token 自身也获得更高的 attention score),这与 token 的实际信息量无关。实验显示,仅靠位置就能预测 attention 排名的 60% 以上。
(b) 与 FlashAttention 不兼容:FlashAttention 是当前 LLM 推理的标配加速技术,它通过分块计算避免存储完整的 attention 矩阵。但基于 attention 权重裁剪的方法需要读取完整的 \(n \times n\) attention 矩阵,这与 FlashAttention 的设计冲突。要使用这些方法,必须禁用 FlashAttention,反而可能导致净速度下降。这是工程落地的致命障碍。
信息论视角的启发:如果一个 token 可以被其他 token 线性重建出来(近似误差小),说明它承载的独特信息很少,是"冗余"的;反之,如果重建误差大,说明该 token 包含其他 token 无法代替的独特信息,是"重要"的。这个直觉简洁有力,且评估过程只需要 token 的特征向量,完全不涉及 attention 计算。
与现有 attention-free 方法的区别:也有少数方法不依赖 attention(如 ToMe 用相似度合并、LOOK-M 用 KV cache 压缩),但它们的重要性评估标准仍然是启发式的。ApET 从近似理论出发,提供了一个有原理支撑的重要性度量。
方法详解¶
整体框架¶
ApET 要解决的是「视觉 token 严重冗余但又不能靠 attention 权重来裁」的矛盾——它从信息论角度判断 token 重不重要:一个 token 如果能被别的 token 线性重建出来,说明它没带多少独特信息,可以压掉。具体做法是在 VLM 的中间 LLM 层(论文取 LLaVA 第 16 层)插一个压缩模块,分三步走:先从 \(N\) 个视觉 token 里选出 \(M\) 个「基础 token」当重建基底,再对每个非基础 token 算它被基底线性重建的误差作为重要性分数,最后保留误差最大的一批 + 基础 token,其余 token 按相似度归入最近的保留 token、再做组内平均合并。压缩后的短序列 \(V' \in \mathbb{R}^{K' \times d}\) 送进后续 LLM 层。整个过程只碰 token 的特征向量、完全不碰 attention 矩阵,这也是它能兼容 FlashAttention 的根本原因。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
A["视觉 token V(N 个)<br/>vision encoder + projector"] --> CMP
subgraph CMP["ApET 压缩模块(免 attention:插在中间 LLM 层,仅用 hidden states、不碰 attention 矩阵)"]
direction TB
B["基础 token 选择<br/>FPS 选 M=αN 个当重建基底"] --> C["近似误差计算<br/>线性重建残差 e_i=‖v_i−v'_i‖"]
C --> D["Token 合并<br/>留基底+top误差,其余按相似度归组平均合并"]
end
CMP --> E["压缩后短序列 V'(K 个)"]
E --> F["后续 LLM 层<br/>正常走 FlashAttention 加速"]
关键设计¶
1. 基础 token 选择:先挑一小撮 token 当重建基底
要判断「谁能被谁重建」,得先有一组基底。ApET 从 \(N\) 个视觉 token 里选 \(M\) 个基础 token(basis token),探索了三种策略:FPS(最远点采样)贪心地选离已选集合最远的 token 以保证空间多样性,复杂度 \(O(NM)\);DPC(密度峰值聚类)选局部密度最高、且与更高密度点距离最远的 token,兼顾密度与多样性;以及随机采样作基线。实验发现 FPS 最稳定、DPC 在某些任务略优、随机也能到 90% 以上效果——说明方法对基底选择并不敏感,默认用 FPS。基底规模取 \(M = \lfloor \alpha \cdot N \rfloor\),\(\alpha=0.1\)(选 10% 当基底),在重建质量和计算开销之间折中。
2. 近似误差计算:用「重建不出来」量化 token 的独特信息
有了基底,就能给每个非基础 token 打重要性分。对 token \(v_i\) 和基底矩阵 \(B \in \mathbb{R}^{M \times d}\),最优线性重建系数是 \(w_i^* = (B^\top B)^{-1} B^\top v_i\),重建结果 \(\hat{v}_i = B w_i^*\),近似误差即:
它本质是 \(v_i\) 在基底列空间正交补上的投影长度——误差越大,说明这个 token 越无法被基底解释、信息越独特、越该保留。相比 attention 权重,这个度量不受因果 mask 带来的位置偏差影响。计算上 \((B^\top B)^{-1}\) 只需算一次(\(M \times M\) 求逆,\(M \ll N\) 很快),再对所有非基础 token 批量投影,总复杂度 \(O(M^2 d + NMd)\),在 \(N=576, M=58, d=4096\) 时仅 ~1ms。
3. Token 合并:被压掉的 token 不丢、并进保留者
确定重要性后,保留基础 token(\(M\) 个)+ 误差最大的 top-\((K-M)\) 个非基础 token,共 \(K\) 个;剩下 \((N-K)\) 个不是直接扔。论文的做法是:对每个待删除 token,先按相似度找到与它最相似的那个保留 token、归入它那一组;等所有待删 token 都分配完后,对每一组内的 token 做平均合并(average merging),得到最终的合并 token。
合并而非丢弃,保住了被压 token 的部分信息,是一种「有损但低损」的保持。消融显示,在极端压缩率下(保留 <10% token),合并相比纯丢弃能带来约 2-3pp 的提升。
4. 免 attention 设计:天然兼容 FlashAttention
很多 token 压缩方法在实际部署被弃用,正是因为它们要读完整 \(n \times n\) attention 矩阵,必须先禁用 FlashAttention,反而净拖慢速度。ApET 整个压缩只用 token 的 hidden states、不碰 attention 矩阵,所以模块可以插在视觉编码器之后、以及 LLM 的某个中间层(论文取 LLaVA 第 16 层,此时 token 已经过若干层 attention 交互、特征更成熟),压缩后的短序列照常走 FlashAttention,还因为序列更短而进一步加速。这一条不是事后福利,而是「从近似误差而非 attention 出发」这个选择带来的直接工程红利。
实验关键数据¶
主实验:LLaVA-1.5-7B 图像理解(不同压缩率)¶
| 方法 | 保留Token数 | VQAv2 | GQA | TextVQA | POPE | MM-Vet | 平均保持率 |
|---|---|---|---|---|---|---|---|
| 原始模型 | 576 | 78.5 | 62.0 | 58.2 | 85.9 | 31.1 | 100% |
| FastV | 192 | 76.8 | 60.5 | 55.1 | 83.2 | 28.7 | 96.3% |
| VisionZip | 192 | 77.1 | 61.0 | 56.3 | 84.5 | 29.4 | 97.8% |
| ApET | 192 | 77.3 | 61.2 | 56.8 | 84.7 | 29.8 | 98.0% |
| FastV | 64 | 72.1 | 56.3 | 48.7 | 78.4 | 24.2 | 88.5% |
| VisionZip | 64 | 73.5 | 57.8 | 50.2 | 80.1 | 25.6 | 91.0% |
| ApET | 64 | 74.6 | 58.5 | 51.9 | 81.3 | 26.8 | 92.8% |
在 192 token(保留 33%)时,ApET 以 98.0% 的性能保持率领先 VisionZip 0.2pp。在极端压缩到 64 token(保留 11%)时优势更明显,领先 VisionZip 1.8pp。
视频理解实验(LLaVA-1.5 + 多帧)¶
| 方法 | 保留率 | MSVD-QA | MSRVTT-QA | ActivityNet-QA | 平均保持率 |
|---|---|---|---|---|---|
| 原始模型 | 100% | 70.8 | 58.3 | 47.2 | 100% |
| FastV | 20% | 68.1 | 55.7 | 44.8 | 95.5% |
| ToMe | 20% | 69.0 | 56.2 | 45.3 | 96.5% |
| ApET | 20% | 70.5 | 58.0 | 47.5 | 100.4% |
在视频任务上 ApET 表现尤为突出——压缩到 20% token 后性能不降反升(100.4%),原因是冗余 token 去除后,LLM 的 attention 更聚焦于关键帧内容,减少了噪声干扰。
消融实验¶
| 基底选择 | 误差度量 | 合并策略 | VQAv2 (64 tok) | GQA (64 tok) |
|---|---|---|---|---|
| FPS | L2 重建误差 | 加权合并 | 74.6 | 58.5 |
| 随机 | L2 重建误差 | 加权合并 | 73.2 | 57.1 |
| DPC | L2 重建误差 | 加权合并 | 74.3 | 58.2 |
| FPS | 余弦距离 | 加权合并 | 73.8 | 57.6 |
| FPS | L2 重建误差 | 直接丢弃 | 72.1 | 56.0 |
| FPS | Attention 权重 | 加权合并 | 71.5 | 55.8 |
关键消融结论:(1) FPS 优于随机和 DPC,但差距不大;(2) L2 重建误差显著优于余弦距离和 attention 权重(+3.1 vs attention);(3) 加权合并相比直接丢弃提升 +2.5。
关键发现¶
- 近似误差 vs Attention 权重:在同等压缩率下,近似误差评估的 token 重要性与 attention 权重的排序相关性仅 0.42(Kendall's τ),说明两者衡量的是不同维度的"重要性"。近似误差更关注信息的独特性,attention 更关注当前上下文的相关性
- 位置偏差实证:统计 attention 权重排名前 10% 的 token 位置分布,发现 65% 集中在序列后半段;而近似误差排名前 10% 的 token 位置分布则近似均匀——确认了 attention 的位置偏差以及 ApET 对此的免疫
- 压缩层位置:在第 2 层后压缩效果最佳;第 0 层(进入 LLM 前)效果较差(token 尚未交互,特征不够成熟);太深的层(如第 16 层)效果也下降(已经损失了深层计算的收益)
- 与 FlashAttention 的实际加速:在 A100 上,576→64 token 配合 FlashAttention,实际推理速度提升 2.1×;而 FastV 因需禁用 FA 一层,仅加速 1.6×
- 基底数量 \(M\) 的敏感性:\(\alpha\) 从 0.05 到 0.2 变化时,VQAv2 仅波动 ±0.5pp,方法对此不敏感
亮点与洞察¶
- 从信息论出发的优雅设计:用线性近似误差度量 token 重要性,理论直觉清晰(无法被重建 = 信息独特),实现也简洁
- 解决了 FlashAttention 兼容性这一工程痛点:这是很多 token 压缩方法在实际部署中被弃用的核心原因,ApET 的无 attention 设计一举解决
- 视频理解中"去噪"效应:压缩后性能反而提升的现象令人惊喜,为视频 VLM 的 token 管理提供了新思路
- 计算开销极低:压缩模块本身仅 ~1ms,相对 LLM 推理的数百毫秒可忽略不计
局限与展望¶
- 仅在 LLaVA-1.5 (7B/13B) 上验证,未测试更大规模模型(如 LLaVA-OneVision-72B、InternVL2-76B)
- 线性近似假设 token 空间的冗余结构是线性的,对于高度非线性的特征关系可能低估某些 token 的重要性
- 基底选择(FPS)仅考虑特征空间距离,未利用空间位置先验(如相邻 patch 更可能冗余)
- 压缩层固定在第 2 层,未探索逐层自适应压缩(浅层多保留、深层多压缩)
- 合并策略为均匀合并,未区分不同粒度的语义区域(如文字区域可能需保留更多 token)
- 缺乏与最新 dynamic token 方法(如 MatryoshkaKV、PyramidDrop)的对比
相关工作与启发¶
- Token 裁剪:FastV(基于 attention 权重)、FitPrune(拟合裁剪比例曲线)是直接竞品,ApET 在免 attention 的前提下取得更优结果
- Token 合并:ToMe(基于相似度合并相邻 token)开创了合并路线,ApET 的合并步骤借鉴了 ToMe 但用不同的重要性度量驱动
- VisionZip:也尝试不依赖 attention 进行压缩,采用 CLS token 相似度作为代理指标,但仍存在间接依赖 attention 预训练结果的问题
- KV Cache 压缩:LOOK-M、SnapKV、H2O 等从 KV cache 角度压缩,与 token 压缩正交,可组合使用
- 信息瓶颈理论:ApET 的近似误差度量与信息瓶颈(Information Bottleneck)框架有理论联系——保留最大信息量的最小充分统计量
- 启发:近似误差的思路可推广到 LLM 的文本 token 压缩——文本序列中也存在冗余(如重复短语、结构化模板),相同方法可能适用
评分¶
- 新颖性: ⭐⭐⭐⭐ — 近似误差评估 token 重要性的思路新颖且有理论支撑,但线性近似本身非首创
- 实验充分度: ⭐⭐⭐⭐ — 多个 benchmark,含视频场景,消融详尽,但缺少更大模型的验证
- 写作质量: ⭐⭐⭐⭐⭐ — 动机→方法→实验逻辑链清晰,attention 偏差的分析令人信服
- 价值: ⭐⭐⭐⭐ — FlashAttention 兼容性是实际部署的刚需,方法实用性强,但增益幅度有限