AI技术
Key Takeaway
- 上下文长度是大模型应用的关键限制,提升其难度高。
- MemGPT将大模型视为操作系统,通过分级内存管理(Main Context + External Context)来解决上下文限制问题。
- Main Context包含系统指令、对话上下文和工作上下文,External Context包含事件记忆和事实记录。
- MemGPT能够自主进行上下文信息的检索和编辑,并具备“觉知”能力。
- MemGPT支持多种后端模型,并可与AutoGen等Agent系统整合,对Multi-Agent System有重要意义。
Full Content
上下文长度是大模型要跨过的第一道槛。
长度太短,就无法开启很多领域的应用,比如医疗GPT。想象一下,医患20轮对话之后,医生就不记得病人的基本情况了,这怎么搞?
所以,上下文长度约等于大模型的内存,是衡量大模型能力的基本指标之一。
但是要提升大模型的上下文长度,难度很高。
一是训练方面。需要更高的算力和显存,还需要更多的长序列数据。
二是推理方面。Transformer模型的自注意力机制(Self-Attention)要求对序列中的每个元素去计算它与其它元素的相关性。这种机制天然决定了上下文长度不可能太长。于是大家又提出了一系列处理长序列的解决方案,这是另一个超大话题,此处不展开。
MemGPT找到了一个天才解法。
LLM = OS
大模型是什么?
MemGPT认为,大模型本质上就是操作系统。所以,上下文就是内存,上下文长度管理就是内存管理。
操作系统是怎么管理内存的?
等级制。CPU缓存(L1、L2和L3)离核心最近,速度最快,但容量最小。按这个逻辑往外推,其次是内存,最后是硬盘。
根据需要,操作系统会在这三个层级之间调配数据:最着急用的,放CPU缓存;暂时用不着的,放硬盘。
既然大模型是操作系统,那采用相同的内存管理方法,没毛病。
MemGPT就是这么干的。
Main Context + External Context
这是MemGPT的运行逻辑:
当有事件发生时,事件信息通过解析器(Parser)进入虚拟“内存”(Virtual Context)。
大模型作为处理器(Processor),对内存中的数据进行调用、确认,然后再通过解析器输出,变成一个行为。
关键点就在Virtual Context上。它分为两个部分:
一、Main Context:就是有原本有长度限制的上下文。Main Context由三部分组成:
- System Instructions,系统指令。简单理解就是每次我们在system message里写的“you are a helpful assistant”。这部分只读,并且每次都会被调用,因为它是底层设定。
- Conversational Context,对话上下文。采用“先进先出”(FIFO)规则——超过一定长度后,最旧的对话会被抛弃。
- Working Context,工作上下文。简单理解就是大模型的笔记本,上边记录着当前的注意事项。
下图就充分说明了Working Context是怎么一回事。
当用户提到了“今天生日”和“最爱的巧克力熔岩蛋糕”两个关键信息时,大模型迅速在笔记本上写下这两点,然后在回复中应用起来。
二、External Context:就是存储在外部的上下文信息,比如存在硬盘里。External Context由两部分组成: