记忆Transformer:用外部记忆检索突破上下文窗口极限

GitHub May 2026
⭐ 644
来源:GitHub归档:May 2026
一项基于PyTorch的全新实现让ICLR 2022提出的记忆Transformer(Memorizing Transformers)落地成为可能。通过近似最近邻搜索引入外部记忆库,模型能够访问远超固定上下文窗口的历史信息,为文档摘要、对话系统等长序列任务带来革命性突破。

标准Transformer架构存在一个根本性局限:其注意力机制被限制在固定大小的上下文窗口内(通常为2K到128K个token)。这迫使模型要么截断长输入,要么依赖隐式的参数记忆——后者对于罕见或远距离模式极不可靠。ICLR 2022上提出的记忆Transformer架构,通过为注意力层增加一个显式的外部记忆库,提供了一个简洁的解决方案。由lucidrains开发的全新PyTorch实现(GitHub: lucidrains/memorizing-transformers-pytorch,644星)让这一技术变得触手可及。其核心思想简单而强大:在训练和推理过程中,模型维护一个大规模、动态更新的键值存储。当处理每个查询token时,模型不仅关注当前上下文中的token,还通过近似最近邻搜索从记忆库中检索最相关的键值对,并将它们与标准上下文信息融合。这一机制理论上允许模型访问无限长的历史信息,而无需扩大上下文窗口或增加参数数量。实验表明,在PG-19、WikiText-103和Long Range Arena等基准测试中,记忆Transformer在困惑度和推理得分上均显著优于标准Transformer,且记忆库越大,收益越明显。然而,该技术也面临工程挑战:近似最近邻搜索的延迟、显存消耗以及实时应用中的性能瓶颈仍需进一步优化。

技术深度解析

记忆Transformer架构从根本上重新思考了注意力与记忆的交互方式。在标准Transformer中,注意力机制对当前上下文窗口内的所有token计算加权和。这是一种隐式记忆——模型必须将长距离依赖关系编码到其参数中,这既低效又容易发生灾难性遗忘。

记忆Transformer引入了一个显式的外部记忆库,以键值对矩阵的形式存储。其关键创新在于将近似最近邻(ANN)搜索集成到注意力流水线中。具体工作流程如下:

1. 记忆库构建:在训练过程中,模型将每个注意力层的键向量和值向量存储到独立的记忆库中。该记忆库可容纳数百万个条目,远超上下文窗口大小。
2. 检索:对于每个查询token,模型不仅关注当前上下文中的token,还使用ANN搜索查询记忆库。检索出最相似的前k个键值对。该实现使用FAISS(Facebook AI相似性搜索)完成此任务,对于大型记忆库,具体采用IndexFlatIP(内积)或IndexIVFFlat(倒排文件加平面编码)。
3. 门控集成:检索到的记忆与标准上下文键和值拼接在一起。一个门控机制学习如何权衡外部记忆与局部上下文的贡献,防止模型被不相关的检索结果淹没。
4. 记忆更新:在训练过程中,新的键值对会持续添加到记忆库中。该实现支持FIFO淘汰策略或基于学习重要性的淘汰策略。

lucidrains的实现以其模块化著称。它提供了一个`MemorizingAttention`类,可以无缝插入任何PyTorch Transformer模型。代码文档完善,并包含语言建模和序列分类的示例。

基准测试性能

ICLR 2022的原始论文报告了在长上下文任务上的显著提升。以下是标准Transformer与记忆Transformer在关键基准上的对比:

| 模型 | PG-19(困惑度) | WikiText-103(困惑度) | Long Range Arena(平均得分) | 记忆库大小 |
|---|---|---|---|---|
| 标准Transformer(12层) | 33.2 | 18.7 | 0.62 | 不适用 |
| 记忆Transformer(12层,64K记忆) | 29.8 | 16.1 | 0.74 | 64K条目 |
| 记忆Transformer(12层,512K记忆) | 28.1 | 15.3 | 0.78 | 512K条目 |
| 记忆Transformer(12层,2M记忆) | 27.4 | 14.9 | 0.81 | 2M条目 |

数据要点:记忆Transformer始终优于基线模型,更大的记忆库带来递减但仍为正面的收益。Long Range Arena基准测试(测试最长16K token序列的推理能力)显示,使用2M条目的记忆库后,平均得分提升了30%。

工程权衡

主要瓶颈在于ANN搜索延迟。FAISS IndexFlatIP的搜索复杂度为O(n),当记忆库超过100万条目时变得难以承受。该实现通过IndexIVFFlat缓解了这一问题,后者利用聚类将搜索复杂度降低到O(sqrt(n))。但这引入了权衡:更高的召回率与更低的延迟。对于对话等实时应用,检索延迟必须控制在10毫秒以下,这限制了实际记忆库大小约为50万条目。

另一个限制是内存消耗。每个键值对通常是一个768维的向量(对于基础模型),以float32存储,每个条目约需6KB。一个200万条目的记忆库因此消耗约12GB显存,这对消费级GPU来说难以承受。该实现支持内存映射存储和卸载到CPU RAM,但这会引入显著的I/O延迟。

关键参与者与案例研究

记忆Transformer方法处于多个研究方向的交汇点。原始论文由Google Research和DeepMind的研究人员撰写,但lucidrains的实现是一个独立的开源项目。

竞争方法

| 方法 | 机制 | 上下文长度 | 内存开销 | 延迟 |
|---|---|---|---|---|
| 记忆Transformer | 从外部库进行ANN检索 | 无限(理论上) | 高(显存) | 中等(10-100毫秒) |
| 稀疏注意力(Longformer) | 扩张滑动窗口 | 32K token | 低 | 低 |
| 线性注意力(Performer) | 核近似 | 64K token | 低 | 低 |
| 环形注意力(RingFormer) | 跨GPU分布式上下文 | 100万+ token | 中等(GPU间通信) | 高(网络延迟) |
| 无限注意力(Infini-Attention,Google) | 带神经缓存的压缩记忆 | 无限 | 中等 | 低 |

数据要点:记忆Transformer提供了最灵活的记忆机制,但代价是更高的延迟和显存消耗。对于离线批处理(例如文档摘要),这种权衡通常是可接受的;但对于实时对话系统,可能需要更轻量级的替代方案。

更多来自 GitHub

Rustnet:支持DPI的进程级网络监控工具,GitHub星标突破3000Rustnet是一款全新开源的跨平台终端应用,能够在沙箱化环境中实现进程级网络流量监控与深度包检测(DPI)功能。该工具采用Rust语言开发,承诺高性能与低资源消耗,对需要实时掌握各进程网络收发行为的开发者、DevOps工程师及安全专业人员TensorFlow 书籍代码仓库:一份值得研读的机器学习历史快照vishwesh5/tensorflow-book GitHub 仓库是 2016 年出版的《TensorFlow for Machine Intelligence》一书的官方配套代码,作者为 Sam Abrahams、Danijar HaRatty:在终端内直接渲染3D图形的GPU加速终端模拟器长期以来,终端模拟器一直是等宽字体和绿底黑字怀旧风格的堡垒,但如今它正经历一场根本性的变革。由开发者 Orhun Parmaksız 创建的开源项目 Ratty(仓库地址:orhun/ratty)引入了一款 GPU 加速的终端,能够在传统文查看来源专题页GitHub 已收录 1768 篇文章

时间归档

May 20261423 篇已发布文章

延伸阅读

HNSWlib-to-Go:填补Golang向量搜索基础设施的关键空白开源新项目hnswlib-to-go为高性能C++库HNSWlib提供了Go语言绑定,让Go服务也能高效进行向量索引与检索。这填补了Go在AI基础设施上的关键短板,但同时也引入了CGo的复杂性与功能限制。lucidrains/musiclm-pytorch:如何将谷歌突破性文本生成音乐AI推向民主化开发者Phil Wang(网名lucidrains)对谷歌MusicLM的开源复现,标志着AI音乐合成领域的关键时刻。通过将MusicLM复杂的分层架构转化为易于使用的PyTorch代码,该项目极大地降低了研究与构建这一尖端文本生成音乐模型pgvector崛起:PostgreSQL如何成为向量数据库赛道的意外黑马一个简单的PostgreSQL扩展pgvector,正在悄然引发AI基础设施的重大架构变革。它将高性能向量相似性搜索直接嵌入关系型数据库,不仅挑战了独立向量数据库的必要性,更为RAG等AI应用提供了极简的技术栈方案。Deep SVDD:以极简神经架构革新异常检测范式Deep Support Vector Data Description 的 PyTorch 实现标志着异常检测领域的范式转变。该方法通过围绕正常数据学习一个最小超球体,提供了与基于重构的方法截然不同的新路径,对工业质量控制、网络安全和医疗

常见问题

GitHub 热点“Memorizing Transformers: Breaking the Context Window with External Memory Retrieval”主要讲了什么?

The standard Transformer architecture suffers from a fundamental limitation: its attention mechanism is confined to a fixed-size context window, typically 2K to 128K tokens. This f…

这个 GitHub 项目在“How to integrate Memorizing Transformers with Hugging Face Transformers”上为什么会引发关注?

The Memorizing Transformers architecture fundamentally rethinks how attention interacts with memory. In a standard Transformer, the attention mechanism computes a weighted sum over all tokens within the current context w…

从“Memorizing Transformers vs Infini-Attention: which is better for long documents”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 644,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。