文章目录
- 摘要
- Abstract
- 一、复现问题解决
-
- [1. 模型加载](#1. 模型加载)
- [2. 显存不够](#2. 显存不够)
- [二、《When Tokens Talk Too Much: A Survey of Multimodal Long‑Context Token Compression across Images, Videos, and Audios》](#二、《When Tokens Talk Too Much: A Survey of Multimodal Long‑Context Token Compression across Images, Videos, and Audios》)
-
- [1. 摘要](#1. 摘要)
- [2. 主要贡献](#2. 主要贡献)
- [3. 相关工作](#3. 相关工作)
- [4. 方法](#4. 方法)
-
- [4.1 维度一:按模态分类](#4.1 维度一:按模态分类)
- [4.2 维度二:按压缩机制分类](#4.2 维度二:按压缩机制分类)
- [5. 实验](#5. 实验)
- 总结
摘要
本周开始第二个评估实验,由于数据量较大,运行时间较长,运行间隙阅读了论文《When Tokens Talk Too Much: A Survey of Multimodal Long‑Context Token Compression across Images, Videos, and Audios》,论文是第一个系统性地对多模态长上下文 token 压缩领域进行梳理的综述。
Abstract
This week, I launched the second evaluation experiment. Given the large volume of data, the experiment requires a long runtime. During the interval, I read the paper When Tokens Talk Too Much: A Survey of Multimodal Long-Context Token Compression across Images, Videos, and Audios. As the first systematic review, this paper comprehensively summarizes the research in the field of multimodal long-context token compression.
一、复现问题解决
1. 模型加载
源代码中使用云端api连接模型,而此时模型已经下载到本地,此时可以启动本地 API 服务,操作方法如下:
**方法1:**使用 vLLM 将本地模型包装成 OpenAI 兼容的 API 服务,输入
vllm serve 模型路径 --api-key [key值] --port 端口
然后修改脚本中的 --api_url 参数为 http://localhost:端口号/v1/chat/completions
对于端口号的补充:
- 端口号可以随意指定,只要在 1024-65535 范围内且未被占用。
- 默认 8000 是 vLLM 的标准默认值,可以直接使用。
- 遇到冲突时,要么换个端口,要么关掉占用的进程。
- 修改端口:在 vLLM 启动命令中用 --port 参数即可。
**方法二:**直接代码修改为加载本地模型版本
2. 显存不够
**方法一:**设置环境变量缓解碎片化
在终端输入,它能缓解显存碎片化:
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
**方法二:**降低 max_new_tokens
限制生成最大序列的长度
**方法三:**开启4-bit量化加载
方法能将显存占用从18GB降至5-9GB
在加载模型的代码中添加:
python
if model is None:
# 配置4-bit量化
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForImageTextToText.from_pretrained(
model_path,
quantization_config=quantization_config,
device_map="auto"
)
注:需要先安装 bitsandbytes 库
二、《When Tokens Talk Too Much: A Survey of Multimodal Long‑Context Token Compression across Images, Videos, and Audios》
1. 摘要
论文的核心问题是:多模态大语言模型(MLLM)处理长上下文时,输入 token 数量太多,导致计算开销巨大。高分辨率图像、长视频、长音频都会生成海量 token,而 Transformer 的自注意力机制复杂度随 token 数的平方增长(即 O(n²)),因此这个问题尤其突出。
为了解决这一计算瓶颈,token 压缩成为关键手段。这篇论文是第一个系统性地对多模态长上下文 token 压缩领域进行梳理的综述。
它的分类有两个维度:
- 按模态:图像、视频、音频;
- 按压缩原理:基于变换、基于相似度、基于注意力、基于查询。
通过这种双重分类,帮助研究者快速定位自己领域的方法,并展望了未来发展方向。论文还维护了一个公开的 GitHub 仓库,持续更新该领域的最新进展。
通俗理解:可以想象 MLLM 同时处理高清照片、几分钟的电影片段和一段音频时,每个像素/每帧/每个声波点都会转换成成百上千个"token"(模型内部的基本单位),导致计算量爆炸。这篇论文的任务就是帮大家梳理已经有哪些"让 token 变少"的办法,并给它们分门别类。
2. 主要贡献
贡献1:首次系统性综述
这是多模态大模型长上下文 token 压缩领域的首篇系统性综述,填补了这一领域综述层面的空白。
贡献2:基于模态特性的分类体系
不同于以往按压缩位置或机制分类的方法,该综述强调压缩策略必须与模态本身的冗余特性深度绑定:
- 图像 → 处理空间冗余
- 视频 → 处理时空冗余
- 音频 → 处理时谱冗余
作者团队基于这一理念构建了分类体系,为不同模态的研究者提供了对应的方法工具箱。
贡献3:双重分类框架
在模态分类之上,进一步按底层压缩机制将方法分为四类:
- 基于变换
- 基于相似度
- 基于注意力
- 基于查询
使研究者既能按"要压缩什么数据"查找,也能按"采用什么压缩思路"查找。
贡献4:完整的研究路线图与公共资源
总结当前研究进展、识别关键挑战、激发未来研究方向,并提供持续更新的 GitHub 仓库作为公共资源。
通俗理解:这篇论文的贡献可以概括为"一张地图"。以前的 token 压缩方法研究得很零散,各做各的,作者团队把这些方法仔细梳理出来,按"对付什么模态"和"用什么手法"画了两套分类。你想了解某个方向的进展,照着这张地图查就行。
3. 相关工作
在论文中,"相关工作"部分其实是现有 token 压缩研究的"碎片化现状"的展示。
从单一模型到多模态模型
早期 token 压缩主要面向纯文本大语言模型,其核心问题是超长文本输入(例如整本书)导致上下文窗口溢出。研究者探索了上下文重排、外部记忆、渐进式对话压缩等方法。但随着多模态模型兴起,输入从"文本"扩展到"视觉+音频"等多通道数据,token 数量远远超过纯文本场景,且不同模态的内在冗余各不相同,问题变得更加复杂。
从视觉编码器到多模态大模型
视觉 token 压缩最早在 Vision Transformer(ViT)中深入探索------ViT 处理高分辨率图像时 token 数量大,计算重。多模态大模型继承了这一难题,但挑战更大:模型既要理解视觉特征,还要处理视觉特征和文本指令之间的跨模态交互。此外,多模态大模型输入图像分辨率越来越高、视频越来越长,视觉 token 数量远超纯图像模型。因此,这篇综述聚焦于多模态大模型这一更复杂且更紧迫的场景。
通俗理解:看相关工作时可以发现,token 压缩的问题以前就有人研究过------文本太长了怎么办?ViT 图像 token 太多了怎么办?但把这些单独的问题放在一起,加上"又是图又是视频又是声音"的多模态大模型,情况就复杂得不是一星半点。这篇论文正是在这些工作的基础上,往前跨了一大步。
4. 方法
方法的分类体系是这篇论文的核心,双重分类体现在两个维度:
4.1 维度一:按模态分类
| 模态 | 压缩重点 | 还原的核心冗余类型 |
|---|---|---|
| 图像 | 空间冗余 | 图像相邻像素/区域在空间上高度相似,大量 token 携带视觉上重复的信息 |
| 视频 | 时空冗余 | 视频在空间冗余之上增加了时间维度:相邻帧之间内容高度重叠 |
| 音频 | 时谱冗余 | 音频信号的时域和频域存在大量规律性重复,以及不必要的高精度采样点 |
4.2 维度二:按压缩机制分类
| 方法类别 | 核心思路 | 通俗解释 |
|---|---|---|
| 基于变换 | 用卷积或线性变换将 token 映射到更低维的空间,例如通过空间降采样减少图像 token 数量 | 把一张大图压缩成小图,保留重要信息但尺寸变小 |
| 基于相似度 | 比较 token 之间的相似程度,把"长得像"的 token 归并或聚合成一个 token | 识别出图像里颜色相近、语义相似的块,把它们合并成一个代表性的块 |
| 基于注意力 | 分析 MLLM 内部的注意力权重,保留对当前任务最重要(注意力得分高)的 token | 模型给你"打分",得分高的 token 留下,得分低的淘汰掉 |
| 基于查询 | 设置一组可学习的"查询 token",它们主动从原始视觉 token 中聚合信息,用更少的查询 token 表示整个视觉输入 | 派几个"代表"去"采访"所有视觉 token,然后把信息汇总回来,只需记住这几个代表就行了 |
通俗理解:方法部分的核心思想是:不同模态的数据(图像/视频/音频)冗余来源不同,所以要用不同策略去压缩。而压缩这件事又有很多种"手艺":你可以做"压缩",把 token 数量整体减少(变换);也可以做"合并",把相似的 token 合在一起(相似度);还可以做"筛选",挑出最重要的留下(注意力);或者让模型自己学习怎么高效表示(查询)。
5. 实验
这是一篇综述,不是提出一个新方法的原创论文,因此不包含本文作者自己设计的实验。但这不代表论文没有"实验相关"的内容------相反,综述在梳理方法时,会大量介绍和总结现有方法在各类基准上的实验表现。
具体包括:
- 图像任务实验:不同压缩方法在图像理解、视觉问答等任务上的性能对比------压缩比例、精度损失、推理加速等指标的汇总
- 视频任务实验:各类方法在视频理解、动作识别等长视频任务上的表现,重点考察在大量视觉 token 下的压缩效果
- 音频任务实验:语音识别、音频事件检测等任务上压缩方法的表现,关注时域和频域冗余的去除效果
将这些分散在大量原始论文中的实验数据进行系统整理和对比。
总结
模型复现:本地模型可通过 vLLM 部署 API 或直接修改代码加载;显存不足可通过环境变量、降低生成长度、4-bit 量化解决。
论文核心:聚焦多模态大模型 Token 过多的计算瓶颈,为首篇相关综述,按「模态 + 压缩机制」双重分类,梳理现有方法、实验对比,给出研究方向。