记忆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

OptimizerDuck:开源Windows优化工具,一夜之间挑战付费巨头OptimizerDuck,托管于GitHub仓库itsfatduck/optimizerduck,迅速成为开源社区中最受瞩目的Windows实用工具之一。该工具设计用于执行三大核心功能:系统性能优化(清理临时文件、管理启动程序、禁用不必要OCSF 架构:统一安全数据湖的开放标准安全团队长期以来一直受困于不同供应商的日志格式混乱——防火墙、端点检测与响应(EDR)系统、云服务提供商和 SIEM 工具各自使用不同的语言。开放网络安全架构框架(OCSF)旨在成为通用翻译器。OCSF 由 AWS、Splunk 等公司合作SimpleX:彻底摧毁元数据的消息网络——深度解析SimpleX 是一个去中心化的消息网络,实现了任何主流平台都不敢尝试的目标:完全消除用户标识符。与 Signal、Telegram 或 Matrix 不同——它们都依赖某种形式的用户 ID(手机号、用户名或与身份绑定的加密密钥)——Sim查看来源专题页GitHub 已收录 3128 篇文章

时间归档

May 20263028 篇已发布文章

延伸阅读

Imagen-PyTorch:一位开发者如何将谷歌的“秘密”文生图模型推向开源民主化一位化名 lucidrains 的独立开发者,完成了谷歌未曾做到的事:发布了科技巨头最先进文生图模型 Imagen 的完整开源 PyTorch 实现。该项目已获超 8400 颗 GitHub 星标,正悄然重塑生成式 AI 研究的格局。DALL-E 2 开源复刻深度解析:Lucidrains 的 PyTorch 实现如何成为文本生成图像研究的黄金标准Lucidrains 基于 PyTorch 的 DALL-E 2 实现已成为开源文本到图像研究领域的标杆。本文深入剖析其架构设计、技术取舍,以及该项目在推动先进生成式 AI 民主化进程中的关键角色。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代码,该项目极大地降低了研究与构建这一尖端文本生成音乐模型

常见问题

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,这说明它在开源社区具有较强讨论度和扩散能力。