1.提出问题?
2024 年初的 Video-LLaMA、VideoChat 等模型把所有帧的视觉 token 沿时间轴拼接后一次性喂给 LLM,撞上 LLaMA 2048 上下文硬上限;100 帧时 GPU 显存已经冲到 40GB 以上;Video-LLaMA 额外训了一个 video Q-Former 处理时序,参数多、无法在线处理实时视频。社区需要一种既能让 LLM 看到完整长视频历史、又不撑爆上下文和显存的方案。
2.解决问题?
整体沿用视觉编码器 —Q-Former—LLM 三段式,把创新点放在 Q-Former 里加两个记忆库。视觉记忆库存过去每一帧的原始视觉特征,作为 cross-attention 的 K/V,让当前 query 能直接 attend 到所有历史帧;query 记忆库存过去每一帧输出的 32 个 query,作为 self-attention 的 K/V,让当前 query 回看模型之前对每帧的高层理解。视频按时间 t=1,2,3… 逐帧流入,处理完一帧就把它的 f_t 和 z_t 追加进两个 bank。为避免 bank 随视频无限增长,每加一帧就算相邻帧余弦相似度,找到最相似的一对做平均合并,保持 bank 长度恒定(实验显示 10–20 条就饱和)。最后只有最后一帧的 32 个 token 进入 LLM,因为这一帧的 query 已经通过 attention 看过整个记忆库,浓缩了全部历史信息。
3.成果
在长视频理解上,LVU 7 任务平均 63.0(前 SOTA S5 为 59.2)、Breakfast 93.0(S5 90.7)、COIN 93.2(S5 90.8);在视频 QA 上 MSRVTT-QA 48.5、MSVD-QA 60.6、ActivityNet-QA 49.8,全面超过 Video-LLaMA;视频字幕 MSVD CIDEr 179.1。消融显示两个记忆库都不加只有 48.3,两个都加涨到 63.0;visual bank 比 query bank 更重要;对比 Concat(1920 token、49.2 分)、Avg Pool(32 token、57.6)、ToMe(200 token、61.5)、FIFO(32 token、61.3),MA-LMM 用 32 token 做到 63.0,效率和效果双赢;即便 off-the-shelf 不训练直接用,ActivityNet-QA 也能从 29.9 涨到 37.2。
4.启发
这篇是 "记忆 bank" 路线的开山之作之一,比 MovieChat 的 sparse memory、MemDreamer 的层级图记忆都早。它证明了三件事:一是逐帧在线处理 + 缓存历史 + 最后只送少量 token 给 LLM,能同时绕过上下文长度和显存两个硬约束;二是长视频里时间冗余极大,相邻帧合并就能把记忆压到 10–20 条不损失性能,这一思想后来被 MovieChat、ReTaKe 等反复沿用;三是它的局限也指明了后面的方向 —— 记忆是隐式塞在 attention K/V 里的,无法被显式检索、没法回答 "第几分钟发生了什么",这正是后来 MovieChat 显式存摘要 token、MemDreamer 建图加 agentic 工具调用要补的缺口。对你做 token 压缩 / 长视频方向的直接借鉴是:相邻帧相似度合并是一种极简但有效的 token 压缩先验,和 ReTaKe 的 PivotKV 压 KV Cache、PyraTok 的动态 token 分配可以对照着看。