将受操作系统启发的架构与通过内存分页的LLM结合,实现无限上下文。
project site: https://memgpt.ai/
github: https://github.com/cpacker/MemGPT
paper: https://arxiv.org/abs/2310.08560
像GPT-3这样的大型语言模型通过在自然语言任务上取得卓越的表现而推动了人工智能的革命。然而,它们在本质上受到其固定上下文窗口的限制 - 它们可以接收的最大标记数量。这严重限制了它们执行需要长期推理或记忆的任务的能力,例如分析冗长的文档或进行跨多个会话的连贯、一致的对话。
加州大学伯克利分校的研究人员开发了一种名为MemGPT的新技术,为LLM提供了智能管理其有限内存的能力,从操作系统中汲取灵感。 MemGPT允许LLM有选择地将信息分页进出其受限上下文窗口,提供更大容量的幻象。这使得MemGPT能够使用固定上下文LLM处理涉及基本无限上下文的任务。
在这篇博文中,我们首先会解释MemGPT的技术细节。然后我们将讨论研究人员在对话代理和文档分析方面使用MemGPT取得的结果。最后,我们将考虑这项工作的重要意义以及它如何代表了克服LLMs基本限制的重要一步。准备好了吗?我们开始吧!
MemGPT受传统操作系统(OS)中使用的分层内存系统的启发,通过虚拟内存分页为应用程序提供丰富内存资源的外观。它实现了类似的原则,使LLMs能够处理远远超出其有限输入容量的上下文。
分层内存架构
MemGPT将LLM内存划分为两个主要组件:
- 主要上下文-类似于操作系统的主内存或RAM。它是LLM在推理期间作为输入采取的标准固定长度上下文窗口。
- 外部上下文-类似于操作系统中的磁盘或SSD内存的辅助存储器。它包含可以通过显式函数调用选择性地复制到主上下文中的上下文外信息。
内存管理函数
MemGPT允许LLM通过自己生成的函数调用来管理主上下文和外部上下文之间的数据移动。LLM根据其当前的目标和上下文学习何时利用这些函数。
控制流
MemGPT实现了类似操作系统的事件循环和中断处理:
- 事件 - 用户消息、文档上传等触发LLM推理周期。
- 让步 - 如果LLM输出不请求控制,则执行暂停直到下一个事件。
- 函数链接 - LLM可以在返回之前链接多个函数。
这允许平滑地交错LLM处理、内存管理和用户交互。
研究人员在两个领域评估了MemGPT,这两个领域中有限的LLM上下文严重限制了性能:对话代理和文档分析。
对话代理
MemGPT在多个会话聊天(MSC)数据集上进行了测试,该数据集由5个对话会话组成,涉及一致的人物角色。它在以下方面明显优于固定上下文基线:
- 一致性-回答需要从早期会话中推断信息的问题
- 参与度-制作个性化的对话开场白,利用长期知识
这证明了MemGPT可以实现虚拟伴侣等代理所需的连贯、长期对话。
文档分析
MemGPT在文档分析任务上取得了强大的结果,例如:
- 问答-回答基于冗长的维基百科文档的查询
- 键值检索-在大型键值存储上进行多跳查找。
它可以有效地处理和推理比基线LLMs输入容量更大得多的文档。
MemGPT代表了克服LLMs有限上下文问题的重要里程碑。关键的见解是:
- 分层内存系统允许虚拟化基本上无限的上下文。
- 像分页和中断这样的操作系统技术使信息在内存层之间无缝流动。
- 自主内存管理消除了人类参与的需求。
与盲目地扩展模型大小和计算能力不同,MemGPT表明我们可以通过软件和系统设计在LLMs的基本约束条件下释放它们的潜力。
MemGPT目前通过依赖GPT-4等专有模型实现了强大的结果。使类似的内存管理能力与开源LLMs稳健地工作是未来工作的一个方向。 还有许多令人兴奋的方向可以扩展MemGPT的操作系统启发技术:
- 探索不同的内存分层架构和缓存策略
- 扩展更复杂控制的函数词汇表
- 将该范例应用于其他长上下文领域,如游戏和模拟
- 将MemGPT与检索增强方法集成
- 随着LLMs变得更加复杂,改进内存管理策略
总的来说,MemGPT表明将操作系统原理引入人工智能中可以在现有模型限制内释放强大的新功能。它为开发更有能力、有用、可扩展和经济的人工智能系统开辟了有前途的途径。
