论文阅读——PACT: Pruning and Clustering-Based Token Reduction for Faster Visual Language Models
论文概况
题目:PACT: Pruning and Clustering-Based Token Reduction for Faster Visual Language Models
通讯作者:Aymen Shabou:aymen.shabou@credit-agricole-sa.fr
作者院校:Ecole Polytechnique,Universite Sorbonne Paris Nord,Credit Agricole S.A
发表于:CVPR 2025
代码仓库:PACT: Pruning and Clustering-Based Token Reduction for Faster Visual Language Models
arxiv版论文:arxiv.org/pdf/2504.08966
论文内容
摘要
视觉语言模型由于需要额外输入token来表示视觉信息,在推理阶段需消耗大量计算资源。然而这些视觉token常包含冗余且次要的内容,导致token数量不必要地膨胀。
为解决该问题,我们提出PACT方法,通过在语言模型的早期层修剪无关token并合并视觉冗余token,显著降低推理时间与内存占用。我们的方案采用新型重要性度量指标识别无关token(不依赖注意力分数机制),确保与FlashAttention兼容;同时提出名为”距离有界的密度峰值聚类”的创新算法,该算法在预定义距离阈值的约束下,可高效聚类视觉token。通过大量实验,我们验证了PACT的有效性。
方法
PACT包含三个实施步骤:首先,定位无关紧要的token并删除;随后,对筛选后的token进行聚类;最终,将各聚类簇中的token与距离阈值范围内先前被丢弃的token重新融合。
PACT在语言模型的选定层L中运行,适用于将视觉token输入语言模型的场景,且不受视觉编码器或连接器架构的限制。
1 删除低重要性token
token重要性定义旧方法:该标记从所有其他标记接收到的总注意力分数。
- 问题1:现有VLM使用 FlashAttention,不支持输出注意力分数;
- 问题2:注意力分数计算时有掩码,引入前后位置的偏见,靠后的token倾向于收到更少的注意力。
- 问题3:因为每个自注意力层会聚焦于视觉标记的不同特征维度,所以仅依靠单一层的Q、K来确定重要性指标可能无法全面捕捉显著性
Efficient Unimportant Tokens Identification (EUTI):利用隐藏层积累的信息与特定层的Q、K信息来判断。
Step1——计算全局query:该向量表征了视觉标记在层L上通过所有注意力头请求的全局查询信息。
Step2——计算每个视觉标记的重要性分数:首先计算其键向量与全局query的点积,然后在每个注意力头内对视觉标记进行softmax归一化,最后跨注意力头取平均值。最终分数通过将结果与隐藏状态范数相乘得到。
Step3——控制不重要标记的比例:设定参数λ∈[0,1]将视觉标记划分为重要标记与不重要标记两类。
2 聚类重要token
- Distance Bounded Density Peaks Clustering (DBDPC):
- 本聚类算法特点为计算时间少,并避免将特征不相似的点聚到同一类
- 保证每个向量到其聚类中心的距离均小于d_c,簇间距离上限为2d_c×(2−d_c)
- 使用注意力机制里的K来计算
3 重新融合token
将距离簇中心点足够近的被删除的点重新加回簇内:
合并各个簇内的隐藏层状态:
更新新隐藏状态H’的位置ID:
为保持与常规推理过程的低统计差异度,将H′中每个向量的位置ID设为其对应聚类中心的ID。
比例注意力: 为防止合并词元降低影响力,采用比例注意力机制利用各词元的权重让模型能有效将每个视觉词元视为多个词元的集合。其中,矩阵W表示各词元的权重,B为注意力掩码。

实验
复现
研究lmms_eval.models.llava_onevision.py的generate_until函数(386行)
研究ConfigurableTask.doc_to_visual
在lmms_eval.models.llava_onevision.py的process_images(458行)将PIL图像visual转换为tensor