清华大学与腾讯提出长上下文记忆方法CoMem。在单张96GB英伟达H20上处理128K上下文时,一组不使用适配器的效率测试显示,峰值显存由完整上下文方案的89.36GB降至18.26GB,预填充时间由15.014秒缩短到1.917秒,加速7.83倍。
论文标题使用了“无界上下文记忆”。这里的“无界”指模型读取时只取固定数量的相关片段,在线工作集不随外部存储的上下文总长度增长。外部存储仍会随文档增加,模型也不会在一次推理中查看全部内容。
论文图1:CoMem在中间层缓存上下文表示,再检索相关片段完成上层计算;右侧给出128K显存对照。
不保存每一层KV,改存中间层残差
Transformer处理长文本时,通常要为每个Token保存各层的键值缓存。上下文越长,预填充计算和显存占用越高。
CoMem利用模型不同深度的分工。研究团队认为,文本的语义信息在中低层已经可以读取,高层更多负责结合当前问题组织预测。系统因此把文档切成512 Token的小块,每块只运行到第12层,保存中间残差,不继续计算全部36层。
用户提问时,BM25检索器从外部存储中选择12个相关块,与问题一起组成约6500 Token的输入包,再从第12层继续计算到最后一层。Qwen3-8B中,每个Token的中间残差只占完整bf16键值缓存的十八分之一。
论文图4:文档按块写入中间层缓存,查询时只取固定数量的相关块,再恢复上层计算。
读得更深成本更低,信息损失也会增加
缓存位置越靠近模型后层,预先完成的计算越多,后续回答越便宜。但被缓存的表示在写入时没有看到用户问题,层数过深会让它更难根据新问题重新组织。
实验中,冻结模型的切分位置从第6层移到第12层后,LoCoMo分数由32.78降到24.52。团队训练了一个rank-32的LoRA适配器,让第12层缓存结果模仿从头计算的教师模型,分数回升13.75分。主模型权重保持冻结,适配训练使用PG-19文本,没有加入长上下文合成样本或基准答案。
最终版本在RULER取得97.05,在LoCoMo取得38.27;完整上下文KV-Direct在LoCoMo为34.59。CoMem在BABILong上的结果弱于完整上下文,说明检索和压缩会损失窗口内信息。
论文图2:缓存层越深,后续计算越少;超过可读边界后,召回质量会下降,轻量适配可部分修复。
7.83倍只对应128K预填充,生成阶段没有同等提升
显存和7.83倍加速来自单独的无适配器效率对照,不能与经过LoRA修复的主版本成绩混成一次实验。长度为8K时,CoMem预填充为0.223秒,完整上下文为0.217秒,反而略慢;文本增加到32K、64K和128K后,优势才逐渐扩大。
生成阶段的速度差异也小得多。到64K为止,CoMem每生成一个Token仍比完整方案慢约11%;128K时才达到1.07倍。它主要削减长输入的预处理和缓存成本,没有把整个推理过程都提高7.83倍。
检索不到,外部存再多内容也没有用
主实验采用固定top-12的BM25词法检索。如果问题与证据缺少相同词语,相关片段可能无法进入读取包。论文没有测量自然多跳任务中的检索延迟,也没有测试代码、多语言、长篇生成或多模态记忆。
论文图3:在单针检索测试中,BM25和理想选择器保持较高召回,近期片段与读者注意力策略随长度下降。
使用的Qwen3-8B原生窗口为40960 Token。超过该范围的完整上下文成绩属于没有开启YaRN扩展的压力对照,论文没有证明CoMem优于启用位置扩展的完整上下文模型。
CoMem给出的是一条长上下文工程路线:把“保存哪些Token”与“计算到模型哪一层”同时作为成本开关。它适合大量历史内容、每次只需读取少量证据的场景;需要完整审阅全部上下文的任务,仍可能更适合直接使用完整窗口。