让视频 VLM 从「 quadratic 」到「 linear 」:StateKV 的双缓存记忆术
你正在看一部两小时的电影,然后有人问你:「第 37 分钟那个穿红衣服的人后来怎么样了?」
人类大脑处理这个问题的方式很自然:你不会从头重新看一遍电影,而是从记忆中提取关键信息——那个红衣服的人在第 37 分钟做了什么,之后又出现了几次,最后的结局是什么。你的大脑有一个压缩的长期记忆(关键情节)和一个详细的短期记忆(最近几分钟的细节),两者配合工作。
视频视觉语言模型(Video VLM)处理长视频时,面临的是完全相同的问题,但它们的解决方案远不如人类大脑优雅。大多数视频 VLM 使用时空自注意力机制,计算量随帧数二次增长——处理 1000 帧需要的计算量是 100 帧的 100 倍。这意味着长视频理解要么极其昂贵,要么必须牺牲精度。
斯坦福大学的 Cristóbal Eyzaguirre 提出了 StateKV,一种推理时方法,让预训练的视频 VLM 在不修改架构、不需要微调的情况下,将视频预填充的计算复杂度从二次降到线性。
两个核心假设:为什么压缩是可行的?
StateKV 的设计基于两个经过实证验证的假设:
假设 1:注意力集中性。 对于当前帧来说,跨帧注意力集中在历史帧中相对较少的 token 上。也就是说,不是所有历史帧都同等重要——大部分计算花在了不重要的 token 上。
团队用 InternVL3-1B/2B/8B 在 16 个长视频上做了直接验证。他们计算了每一层、每一帧的注意力分数,然后问:如果只保留 top-B 个最重要的历史 token,能覆盖多少「真正重要」的信息?结果显示,即使 B=16(只保留 16 个 token),加权召回率就已经很高。这意味着大部分跨帧注意力计算是浪费的。
假设 2:时序状态的慢演化。 有用的时序状态在帧间缓慢变化。也就是说,下一帧需要的历史信息,大部分可以从「上一帧的状态 + 当前帧」中恢复,而不需要回溯更早的帧。
团队用「候选池召回率」和「状态保留率」来验证这个假设。在 B=16 时,1B/2B/8B 模型的加权候选池召回率分别达到 0.90/0.95/0.92;在 B=1 时,状态保留率就已经达到 0.81/0.89/0.85。这意味着即使只保留 1 个 token 的状态,下一帧 85% 的重要信息仍然可以恢复。
这两个假设的验证是 StateKV 最扎实的部分——它不是凭直觉设计,而是先用量化分析证明「压缩是安全的」,然后再设计压缩方法。
双缓存架构:压缩状态 + 详细缓存
StateKV 的核心设计是一个双缓存系统:
压缩状态(Compressed State):固定容量的循环记忆,存储跨帧的上下文信息。容量为 B 个 token(B 是超参数,通常 16-256)。这个状态通过注意力驱动的选择机制更新——每一帧处理完后,模型计算当前帧与压缩状态中每个 token 的注意力分数,保留最重要的 B 个。
详细缓存(Detailed Cache):完整的每帧 KV 缓存,用于解码阶段。当用户提出问题时,模型使用详细缓存来生成回答,确保输出质量不受压缩影响。
这个设计的关键洞察是:预填充(编码视频)和生成(回答问题)的需求不同。预填充需要高效处理大量帧,可以容忍信息损失;生成需要精确的局部上下文,不能有信息损失。StateKV 把这两个需求分开处理,各取所需。
具体工作流程
StateKV 的推理过程分为两个阶段:
阶段 1:流式预填充(Streaming Prefill)
- 视频帧逐帧输入
- 每处理一帧,模型计算当前帧 token 与压缩状态中所有 token 的注意力分数
- 将当前帧的 token 与压缩状态合并,通过重要性选择保留 top-B 个 token 作为新的压缩状态
- 同时保留当前帧的完整 KV 缓存(用于后续解码)
阶段 2:解码(Decoding)
- 用户提出问题后,将问题的 token 与所有帧的详细缓存拼接
- 用标准自注意力生成回答
- 压缩状态不参与解码,确保生成质量
这个设计的优雅之处在于:它完全在推理时工作,不需要修改模型架构或重新训练。你可以拿任何预训练好的视频 VLM,直接用 StateKV 的方式处理长视频,就能获得线性时间的预填充。
RoPE 缩放的一致性
一个技术细节值得注意:StateKV 需要确保压缩状态中的 token 位置编码与原始帧的位置编码一致。由于压缩状态中的 token 来自不同帧,它们的原始位置编码不同。StateKV 通过一致的 RoPE(Rotary Position Embedding)缩放来解决这个问题——在缓存构建和生成阶段使用相同的缩放策略,确保位置信息不被破坏。
实验结果:接近完整注意力,远超滑动窗口
StateKV 在三个长视频基准(VideoMME、LongVideoBench、MLVU)和七个模型(InternVL3、Qwen2.5-VL、LLaVA-NeXT-Video 等,跨三个家族和多个规模)上进行了评估。
核心发现:
1. 接近完整自注意力的性能。 在固定视频长度下,StateKV 的性能与完整自注意力非常接近,差距通常在 1-2 个百分点以内。考虑到计算量减少了数倍,这个精度损失完全可以接受。
2. 持续优于滑动窗口和近因基线。 滑动窗口(只保留最近 N 帧)和近因基线(优先保留最近的 token)是当前主流的长视频近似方法。StateKV 在所有设置下都优于这些方法,有时差距显著。这是因为滑动窗口会丢失早期的重要信息,而 StateKV 的基于重要性的选择能保留真正关键的历史 token。
3. FLOPs 减少允许使用更大的模型。 这是 StateKV 最实用的价值:在固定计算预算下,你可以用 StateKV 处理更多帧,或者用省下的计算量运行更大的模型。实验显示,使用 StateKV 的 8B 模型在相同 FLOPs 下可以超越不使用 StateKV 的 2B 模型。
4. 滑动窗口的不稳定性。 一个有趣的发现是,滑动窗口方法在不同设置下的性能波动很大——有时候表现不错,有时候突然崩溃。这是因为滑动窗口的有效性高度依赖于「重要信息是否恰好在窗口内」,这是一个不可控的因素。StateKV 的基于重要性的选择则更加稳定。
与认知科学的同构
StateKV 的双缓存设计与认知科学中的工作记忆模型高度同构:
- 压缩状态 ≈ 长期工作记忆:存储经过筛选的关键信息,容量有限但持久
- 详细缓存 ≈ 感觉记忆/短时记忆:保留最近输入的完整细节,容量大但短暂
- 注意力驱动的选择 ≈ 注意力分配:根据任务相关性决定哪些信息进入长期记忆
这种同构不是巧合——人类大脑处理长序列信息时,同样面临「容量有限 vs 信息完整」的矛盾,同样采用「压缩+详细」的双轨策略。StateKV 可以看作是这种认知策略在计算系统中的工程实现。
局限与展望
StateKV 的主要局限在于:压缩状态容量 B 需要手动设定,不同视频的最优 B 可能不同。此外,StateKV 只优化了预填充阶段,解码阶段仍然需要访问所有帧的详细缓存——对于极长视频(数万帧),详细缓存本身的内存占用也可能成为瓶颈。
但作为一个零成本推理时优化(不需要训练、不需要改架构),StateKV 的性价比极高。它让现有的视频 VLM 能够处理更长的视频,在实时视频分析、视频监控、自动驾驶等场景中有直接的应用价值。
论文信息:Linear Scaling Video VLMs for Long Video Understanding
作者:Cristóbal Eyzaguirre, Jiajun Wu, Juan Carlos Niebles(斯坦福大学)
arXiv:2605.31598
项目页:https://ceyzaguirre4.github.io/StateKV