SparseVLMs
基于ICML 2025的视觉Token稀疏化框架,通过文本引导动态剪枝VLM推理中的冗余视觉toke
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于ICML 2025的视觉Token稀疏化框架,通过文本引导动态剪枝VLM推理中的冗余视觉toke
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:SparseVLM 项目 Logo
想象一下:当你问 AI「图片里这只猫在做什么」时,传统 VLM 会把图片的每一个像素区域都塞进处理流程——哪怕画面里大部分是无关的背景。SparseVLM 的做法就像让模型拥有「选择性注意力」:它能自动判断哪些视觉区域才是回答问题的关键,只保留最重要的视觉 token,从而实现推理加速。
视觉语言模型(VLM)在处理图片时,通常需要将图片切分成大量视觉 token(VIT 编码后的 576 个 token)送入 LLM。问题在于:这些 token 的信息密度极不均衡——背景区域 token 往往与问题无关,却依然占用大量计算资源。研究数据显示,在某些 VQA 任务中,视觉 token 消耗了超过 60% 的推理算力。
针对这一瓶颈,学术界已有多种探索方向:
SparseVLM 的核心洞察在于:这些方法都忽视了语言模态对视觉选择的指导作用。人类的视觉注意力天然是任务驱动的——看不同问题时,关注的画面区域完全不同。
SparseVLM 提出了文本引导的视觉 token 稀疏化方法,这是该工作的核心创新点。方法分为两个版本:
核心思想:利用注意力权重矩阵中「文本 token → 视觉 token」的关联强度来判断每个视觉 token 的重要性。模型并非盲目丢弃一半的视觉 token,而是根据当前问题的语义,选择与文本最相关的视觉 patch。
具体步骤:
RETAIN_TOKN 环境变量控制)代码实现位于 llava/model/language_model/score.py,关键函数 attn_postprocess_topk 完成了 token 筛选的核心逻辑:
# 从注意力权重中提取文本→视觉的关联强度
relation_vis_text = self_attn_weights[:, t_token_idx, v_token_start: v_token_start+v_token_num]
relation_vis = relation_vis_text.mean(1) # B, L1
# 按阈值保留 top-k token
_, indices = torch.topk(relation_vis, min(sparse_token_list[layer_dict[layer_idx]], v_token_num - 1))
mask[0][indices] = 1
SparseVLM+ 在 v1.5 基础上改进了文本-视觉注意力模式,通过调整 USE_VERSION=2_0 环境变量即可无缝启用,无需修改代码。v2.0 在多个 benchmark 上取得了更强的性能表现。
从项目目录结构来看,SparseVLM 基于 LLaVA 框架构建,核心修改集中在:
| 目录/文件 | 作用 |
|---|---|
llava/model/language_model/score.py | 核心稀疏化算法实现 |
llava/model/ | 视觉编码器 + LLM + Projector |
llava/eval/ | 评估脚本(MME、TextVQA、SQA、MMBench 等) |
llava/serve/ | 服务部署模块 |
assests/ | 项目 Logo、架构图、动机图 |
依赖项包含:PyTorch 2.1.2、transformers 4.37.2、Flash Attention 2.3.3(LLaMA 加速核心)、Gradio(可选 Web UI)、PEFT 和 bitsandbytes(量化训练支持)。
SparseVLM 通过环境变量提供了开箱即用的 Token 保留量配置,开发者无需修改代码即可实验不同稀疏化程度:
| RETAIN_TOKN | 保留 Token 数 | 适用场景 |
|---|---|---|
| 192 | 192个(保留~33%) | 高精度场景 |
| 128 | 128个(保留~22%) | 平衡场景 |
| 96 | 96个(保留~17%) | 效率优先 |
| 64 | 64个(保留~11%) | 极致压缩 |
启用 SparseVLM+(v2.0)只需加一个 USE_VERSION=2_0 前缀,即可获得更好的性能提升。
该项目定位为研究代码,而非生产级部署工具,因此存在以下部署挑战:
环境依赖复杂:需要 conda 环境 + Python 3.10 + CUDA 11.8+,其中 flash-attn 必须从源码编译(pip install flash-attn --no-build-isolation),在部分 GPU 架构上编译失败率较高。
GPU 内存门槛高:vLLM 等推理优化框架目前尚未原生支持 SparseVLM 的 token 稀疏化接口,需在原生 PyTorch 上运行。测试表明,至少需要 16GB 以上显存才能运行 7B 规模的 LLaVA 模型。
无容器化支持:项目未提供 Dockerfile 或 docker-compose.yml,无法通过容器快速部署。cog.yaml 仅用于 Replicate 平台,不适合本地使用。
评测数据需要额外下载:LLaVA 评测基准(如 MME、TextVQA)需要按文档指引手动下载,数据集准备过程较为繁琐。
SparseVLM 被 ICML 2025 接收,说明学术界对视觉推理效率优化的持续关注。该工作的意义不仅在于单点技术突破,更在于验证了一种范式转变:VLM 的视觉 token 应该是有条件的、按需的,而非固定的全量输入。
从工程角度看,SparseVLM 的 text-guided 稀疏化思想也可以迁移到其他多模态场景(如视频理解、3D 点云)以及边缘部署场景。如果能与 vLLM、TGI 等推理引擎结合,有望在保证精度的前提下显著降低部署成本。
本分析基于项目 GitHub 仓库(v1.5 / main 分支)及 arXiv 论文(arXiv:2410.04417)生成。如需了解更详细的技术实现或 Benchmark 数据,请参考项目主页和论文。