视觉 Token 剪枝有什么收益和风险?
简化版
视觉 Token 剪枝通过删除、合并或池化低价值区域,减少视觉编码器和 LLM 的计算、显存及首 Token 延迟。最大风险是相关性判断发生在真正推理之前:面积很小的文字、关系参照物或背景线索一旦被丢弃,后续模型无法恢复,所以应采用任务感知的动态保留、全局摘要与局部细节并存,并按困难切片验证质量。
详细版
收益取决于剪枝位置。在视觉编码器早层把 1024 个 Token 剪到 256 个,可减少后续视觉层开销;进入 LLM 前压缩则主要减少 projector、prefill 和上下文占用。若自注意力占主导,序列长度降为四分之一,相关二次项理论上可降到十六分之一,但端到端加速还受卷积、内存传输和文本解码限制。
方法包括固定池化、相似 Token 合并、基于注意力/显著性的 Top-k、按文本查询选择区域,以及分阶段剪枝。方案要保留 CLS/全局摘要和空间位置信息,设置最小 Token 与关键区域保护;评测除平均准确率外,还需看 OCR、小目标、计数、空间关系、延迟、显存和剪枝稳定性。
| 方法 | 是否看问题 | 主要风险 |
|---|---|---|
| 网格池化 | 否 | 小目标被平均掉 |
| 相似度合并 | 否或弱 | 相似外观但语义不同 |
| 注意力 Top-k | 可选 | 早期注意力不可靠 |
| 查询感知选择 | 是 | 每个问题需重新计算 |
完整版教学
一、为什么视觉 Token 容易成为瓶颈
高分辨率图像会被切成大量 patch。若 448×448 输入使用 14×14 patch,就有 32×32=1024 个基础 Token;多张图或多个视频帧会线性叠加。它们不仅经过视觉编码器,还可能作为长前缀进入语言模型,消耗 prefill 计算和上下文窗口。
很多区域却包含天空、墙面或相似背景,信息高度冗余。剪枝的目标是在保留回答所需证据的前提下减少序列,而不是单纯追求更高删除比例。评价任何算法时,都要先问“它省掉的是哪一段计算”。
二、剪枝位置决定收益上限
在视觉 Transformer 第 2 层剪掉 Token,后面 20 层都能受益,但此时语义尚浅,容易误删。在最后一层后压缩更安全,却已经支付大部分视觉编码成本,只能节省 projector 与 LLM。渐进式剪枝通常在准确性与收益之间更平滑。
patch 1024
-> 视觉浅层 1024
-> 第一次选择 512
-> 视觉深层 512
-> 查询感知选择 256
-> projector / LLM 256
若注意力计算近似 O(N²d),N:1024→512 的该部分理论量变为 25%。但真实推理还包含 MLP、固定开销和文本生成,因此不能宣称端到端必然加速 4 倍,必须用目标硬件实测。
记忆钩子:剪得越早,收益越大、判断越盲;剪得越晚,语义越准、已经花掉的计算越多。
三、怎样判断 Token 是否重要
无查询方法依据视觉显著性、CLS 注意力、Token 范数或相似度,适合一图多问和缓存。查询感知方法让文字问题与视觉 Token 交互,例如问“钟表显示几点”时优先保留表盘,而问“墙是什么颜色”时关注背景。后者质量通常更好,却无法复用同一份压缩结果。
注意力权重不是可靠因果解释,高权重不一定代表删除后损失最大。更稳的做法可结合多个信号:局部独特性、空间覆盖、文本相关度和跨层一致性。训练时加入预算约束或蒸馏,让选择器学习在固定 Token 数下维持任务输出。
四、删除、合并与池化的差别
硬删除最省计算,但信息不可逆;合并把相近 Token 加权聚合,能保留总量信息,却可能模糊位置;规则池化稳定且无需学习,但不理解语义。实际系统还可保留一组“全局摘要 Token”,再搭配少量原始高分辨率 Token。
| 操作 | 输出长度 | 空间细节 | 实现特点 |
|---|---|---|---|
| Top-k 删除 | 固定 k | 被删区域完全丢失 | 稀疏、直接 |
| 相似 Token 合并 | 可调 | 位置可能混合 | 需维护聚合权重 |
2×2 池化 | 原来 1/4 | 细节均匀下降 | 规则简单 |
| 全局+局部保留 | 可调 | 重点区域较好 | 依赖选择器 |
位置编码也要同步处理。合并四个 patch 后,应保存其中心、范围或多尺度标记;否则语言模型只收到内容向量,不知道它覆盖原图哪一片区域,定位能力会明显下降。
五、最容易被误删的证据
小字、标点、细线、远处目标和用于空间关系的参照物面积小,却可能决定答案。计数任务还要求保留每个实例,按相似度合并会把十个相同物体压成一个表示。安全相关的小标识同样不能仅凭视觉面积判定不重要。
例如 1024 个 Token 中,路牌只覆盖 4 个。保留 25% Token 的全局 Top-k 即使总体召回 98%,也可能恰好删除这 4 个,导致路牌文字完全不可读。因此应设置多尺度覆盖、文本区域保护或每个网格至少保留一个 Token,不能只依赖全局排名。
六、如何训练和控制预算
可以直接按规则剪枝,也可训练轻量打分器输出保留概率。可微训练常用软门控、Gumbel-Softmax 或稀疏正则,并把任务损失与预算损失组合:
L = L_task + λ × max(0, N_kept - B) / B
其中 B 是预算。λ 太小会导致模型几乎不剪,太大则为满足预算牺牲质量。上线时还要设置硬上限和最小保留数;根据图片复杂度动态选择 128、256、512 档位,比所有图片同一比例更合理。
七、评测必须看 Pareto 前沿
实验应固定模型、输入分辨率和批大小,扫描多个保留率,报告准确率、P95 延迟、峰值显存、吞吐和视觉 Token。任务集要单列 OCR、小目标、计数、空间关系、图表与普通问答。平均 VQA 分数基本不变,不代表高风险切片没有退化。
若保留率从 100% 降到 50%,准确率仅从 80.0% 到 79.8%、P95 从 1.8 秒到 1.2 秒,是可取点;降到 25% 后准确率 77.5%、OCR 子集从 75% 跌到 54%,就可能越过拐点。还应多次运行选择器,检查同一输入是否因随机性产生不同保留区域。
八、常见误区与追问
- 误区:Token 减少 50%,端到端延迟必然减半。 解码、固定算子和访存可能占据大量时间,需要真实 profiling。
- 误区:注意力低的 Token 都不重要。 注意力不是因果贡献,关系参照物可能在早层权重很低。
- 误区:平均准确率不降就可以上线。 OCR、计数与小目标可能严重退化,必须分桶。
- 追问:剪枝和降低分辨率有什么区别? 降分辨率均匀损失细节,剪枝尝试非均匀地保留有用区域,但引入选择错误。
- 追问:一图多问怎么缓存? 可先做查询无关压缩并保留较宽证据,再在每个问题下二次选择。
- 追问:如何避免空间信息丢失? 保留原坐标、区域范围与多尺度标记,并对定位任务施加辅助监督。
九、加强记忆
视觉 Token 剪枝可记成“位置、依据、动作、保护、实测”:先判断在哪层剪,再决定用显著性还是查询相关性;区分删除、合并与池化;保护小字、小目标、计数实例和空间坐标;最后用质量—延迟—显存曲线找拐点。回答清楚“早剪收益大但风险高”这组矛盾,就抓住了题目核心。