视觉模型的 kv cache 问题、注意力以及记忆问题?

回复 群友 8714: 长程多模态任务里,视觉模型的瓶颈不在单帧看图能力,而在多轮交互后 KV cache、注意力和记忆这三件事会互相拖垮: 第一是 KV cache 膨胀太快,显存和延迟扛不住。文本一句话也就几十个 token,但一张高分辨率图片经过视觉编码器切 patch 后,动辄几百上千个视觉 token。像玩游戏、做 cu/bu 这种连续交互,几十步下来全是历史截图,KV cache 很快就塞满上下文窗口,推理速度和成本都会崩。 第二是注意力稀释(Attention Sink / Lost in the Middle)。图片里绝大部分区域是背景或静止不变的冗余像素,真正决定下一步动作的可能只是角落里一个图标颜色变了。当上下文里堆了几十张图、几万个视觉 token 时,模型的注意力会被海量背景噪声严重分散,很难精准跨帧对齐“第 3 步的某个像素”和“第 25 步的当前状态”。 第三是视觉记忆没法像文本那样直接做有损压缩。纯文本 agent 上下文快满时,可以让模型写一段摘要把旧对话顶掉;但视觉信息一旦被总结成文字(比如“走到了一个房间,左上角有个箱子”),原本图片里还没被注意到的空间细节、颜色规律就永久丢了。如果后面第 50 步突然发现早期的箱子花纹是解谜线索,只看文字摘要根本找不回来。 所以像刚才那篇 VISTA 论文以及现在主流视觉 agent 的解法,核心思路都是把“工作记忆”和“原始视觉存储”拆开: 不在上下文(KV cache)里硬塞所有历史原图,旧画面定期从上下文里清掉,只留文字状态笔记(比如 WORKING.md)维持主线推理,这样注意力和显存都干净;同时把每一帧原图无损存在外部硬盘里,给模型配按帧号回看、局部裁剪放大的工具。模型需要核对早期细节时,再按需把那几张图调回当前上下文对比。