论文阅读_管理模型的记忆_MemGPT

news2024/12/25 23:55:41
1
2
3
4
5
6
7
8
9
英文名称: MemGPT: Towards LLMs as Operating Systems
中文名称: MemGPT:将LLMs打造成操作系统
链接: https://arxiv.org/abs/2310.08560
代码: https://github.com/cpacker/MemGPT
作者: Charles Packer, Sarah Wooders, Kevin Lin, Vivian Fang, Shishir G. Patil, Ion Stoica, Joseph E. Gonzalez
机构: 加州大学伯克利分校
日期: 2023-10-12
引用次数: 37

1 摘要

  • 目的:解决大型语言模型在处理长对话和文档分析等任务时受到有限上下文窗口限制的问题。
  • 方法:提出了一种名为虚拟上下文管理的新技术,该技术受到了传统操作系统中分层内存系统的启发,通过在物理内存和硬盘之间进行分页,提供了扩展虚拟内存的假象。
  • 结果:在文档分析和多次会话聊天这两个领域,证明了设计的有效性,MemGPT 能够分析远超过 LLM 上下文窗口的大型文档,并能创建能够记忆、反思并通过与用户的长期互动动态进化的对话代理。

2 读后感

作者提出了一种类似于管理计算机内存(内)和磁盘(外)的上下文管理方法。这种方法的核心在于,能够在无人为干预的情况下管理自己的上下文内存,解决了 LLM 每次只能思考一步和 token 限制的问题。

可以类比为把 Agent 看作一个记忆力有限的人,把常用的信息记在脑子里,不常用的信息则记在本上,需要时再从本上找。这里的关键技术在于,作者对于什么应该记在脑子里给出了明确的定义。简单来说,就是近期的具体内容,远期内容的摘要,关键事实,个人偏好和其他重要信息,以及与当前对话相关的从笔记本上找到的内容。此外,文中还给出了何时应该在笔记本上记录信息,以及何时应该从笔记本上查找信息的具体实现方式。

从用途的角度看,无论是在使用 LLM 聊天,阅读文献,还是编码时,都需要设计在主存储中应存储什么,以及何时应该在外部存储器中存储和查找信息。本文给出了很好的示例。

3 引言

图 -3 中 LLM 可接收的上下文窗口 LLM Finite Context 是有限的,比如 8k;LLM 的输入 Prompt Tokens 由系统指令、工作上下文和先进先出的队列组成;LLM 的输出 Completion Tokens 通过函数执行程序 Function Executor 解释成函数调用。MemGPT 使用函数调用在主上下文和外部上下文之间移动数据。

4 方法

MemGPT 划分了两种主要存储类型:主上下文(类似于主内存/RAM)和外部上下文(类似于磁盘存储)。主上下文由大型语言模型(LLM)的提示标记组成,LLM 在推理过程中可以访问主上下文中的任何内容。外部上下文是指任何存储在 LLM 固定上下文窗口之外的信息。MemGPT 提供了一些功能调用,使 LLM 处理器能够在无需用户干预的情况下管理自己的内存。

4.1 主上下文(Prompt tokens)

MemGPT 的提示标记分为三部分:系统指令(只读,包含控制流程和使用的指令)、工作上下文(非结构化固定大小的文本块,只能通过 MemGPT 函数调用来写入,存储关键信息和用户偏好)、FIFO 队列(记录历史消息,系统警告,函数调用的输入和输出,递归摘要等)。

4.2 队列管理器

队列管理器接收新消息时,将其添加到 FIFO 队列并触发 LLM 进行回应。这些消息和回应都会被保存在一个叫做 Recall Storage 的数据库里。当需要检索这些消息时,队列管理器会将它们重新放回队列,以便 LLM 可以再次访问它们。

队列管理器还负责控制上下文溢出。当队列快满时,它将一个系统消息插入队列,警告 LLM 即将进行队列驱逐,并允许 LLM 将重要信息移动到其他地方(工作上下文或存档存储)。当仓库完全满了(刷新标记计数),管理员会清空一部分仓库(驱逐消息),使用现有的递归摘要和被驱逐的消息生成一个新的递归摘要。被驱逐的消息虽然不能立即查看,但可以在 Recall Storage 中长期保存,并通过 MemGPT 函数调用进行读取。

4.3 函数执行器(Completion tokens)

MemGPT 通过 LLM 处理器生成的函数调用来操作主上下文和外部上下文之间的数据移动。内存编辑和检索完全是自我导向的:MemGPT 会根据当前上下文自主更新和搜索自己的内存。通过指令来实现自主编辑和检索,这些指令指导 LLM 如何与 MemGPT 内存系统交互。指令包括两个主要组件:内存层次结构及其各自实用程序的详细说明,以及系统可以调用以访问或修改其内存的函数模式

每个推理周期中,LLM 处理器将主上下文作为输入,并生成一个输出字符串。MemGPT 解析这个输出字符串以确保正确性,如果解析器验证了函数参数,那么就会执行该函数。然后,包括任何运行时错误在内的结果都会被 MemGPT 反馈给处理器。这个反馈循环使得系统能够从其行为中学习并相应地调整其行为。

4.4 控制流程和功能链

在 MemGPT 中,各种事件,如用户消息、系统消息、用户交互或定时事件,都能触发 LLM 进行推理。这些事件会被转换成可以添加到主上下文的纯文本消息。有些任务需要按顺序执行多个函数,比如浏览多页查询结果或整理多份文档的数据。MemGPT 能够连续执行多个函数调用,然后再将控制权返回给用户。

5 实验

5.1 用于聊天的 MemGPT

根据以下两个标准评估我们提出的系统 MemGPT:(1)MemGPT 是否利用其内存来提高对话一致性?它能否记住过去互动中的相关事实、偏好和事件以保持连贯性?(2)MemGPT 是否通过利用内存产生更引人入胜的对话?它是否自发地合并远程用户信息来个性化消息?

5.2 用于文档分析的 MemGPT

检索器根据 OpenAI 的 text-embedding-ada-002 嵌入上的相似性搜索(余弦距离)选择排名靠前的 𝐾 文档。我们使用 MemGPT 的默认存储设置,该设置使用 PostgreSQL 进行存档内存存储,并通过 pgvector 扩展启用矢量搜索。

QA 任务执行情况。MemGPT 的性能不受上下文长度增加的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐10款优秀的组件库(一)

1.Ant Desgin UI 网址: https://ant-design-mobile.antgroup.com/zh Ant Design - 一套企业级 UI 设计语言和 React 组件库 "Ant Design Mobile"是一个在线的移动端Web体验平台,让你探索移动端Web的体验极限。 添加图片注释,不…

安全设计 | 安全设计不得马虎!微软STRIDE威胁建模方法让你事半功倍,快速发现应用安全隐患!

STRIDE威胁建模方法最早发表于2006年11月的《MSDN杂志》,作者是微软的工程师Shawn Hernan、Scott Lambert 、Tomasz Ostwald 和 Adam Shostack。那我们为什么要进行威胁建模? 如何使用数据流图对系统进行威胁建模?如何减轻威胁?接…

STM32F1之OV7725摄像头

目录 1. 摄像头简介 2. OV7725 摄像头简介 3. OV7725 引脚 4. OV7725 功能框架图 5. SCCB时序 5.1 SCCB 的起始、停止信号及数据有效性 5.2 SCCB 数据读写过程 1. 摄像头简介 在各类信息中,图像含有最丰富的信息,作为机…

从0开始学统计-蒙彼利埃尔悖论与条件概率

1.什么叫均衡可比? "均衡可比"指的是在进行比较时,确保所比较的对象或情况具有相似的特征和条件,以保持比较的公正性和准确性。这个概念通常应用于研究设计和数据分析中,以确保比较结果的可信度和有效性。 在研究中&a…

HTML静态网页成品作业(HTML+CSS)——企业酒店官网网页(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…

SpringCloud系列(26)--OpenFeign超时控制

前言:在上一章节中我们简单的介绍了如何使用OprnFeign去调用微服务,因为消费侧和服务侧是两个不同的微服务,这样可能会出现超时的现象,例如服务侧需要3秒处理任何才能返回结果,但消费侧可能2秒就断开连接了&#xff0c…

C++代码错误解决1(函数模板)

1、代码如下 //示例函数模板的使用 #include <iostream> #include <string> using namespace std; template <typename T>//函数模板 T max(T a,T b) {return a>b?a:b; } int main() {int a,b;cout<<"input two integers to a&b:"…

文章解读与仿真程序复现思路——电力系统保护与控制EI\CSCD\北大核心《计及温控厌氧发酵和阶梯碳交易的农村综合能源低碳经济调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

如何处理时间序列的缺失数据

您是否应该删除、插入或估算&#xff1f; 世界上没有完美的数据集。每个数据科学家在数据探索过程中都会有这样的感觉&#xff1a; df.info()看到类似这样的内容&#xff1a; 大多数 ML 模型无法处理 NaN 或空值&#xff0c;因此如果您的特征或目标包含这些值&#xff0c;则在…

自己手写一个单向链表【C风格】

//单链表 #include <iostream> #define MAX_SIZE 20 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0typedef int ElemType;//元素的类型 typedef int Status;//返回状态typedef struct Node {ElemType data;//链表中保存的数据struct Node* next;//指向下…

【字典树(前缀树) 异或 离线查询】1707. 与数组中元素的最大异或值

本文涉及知识点 字典树&#xff08;前缀树&#xff09; 位运算 异或 离线查询 LeetCode1707. 与数组中元素的最大异或值 给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries &#xff0c;其中 queries[i] [xi, mi] 。 第 i 个查询的答案是 xi 和任何 nums 数组…

自定义一个复杂的React Table表格组件-06

前面基本了解了组件的基本用法&#xff0c;在本节会实现一个更高级的例子。另外需要注意本节代码是采用V15版本的createClass()、React.DOM和JSX实现的&#xff0c;有时间的同学可以改成类实现的方式。 html的世界中最复杂的UI控制就是表格了&#xff0c;原因是table它依赖本地…

Vitis HLS 学习笔记--控制驱动TLP-处理deadlock

目录 1. 简介 2. 代码解析 2.1 HLS kernel代码 2.2 查看接口报告 2.3 TestBench 2.4 Dataflow 报告 3. Takeaways 4. 总结 1. 简介 本文是对《Hardware Acceleration Tutorials: FIFO Sizing for Performance and Avoiding Deadlocks》实验内容的详细解释。 首先需要…

AI视频教程下载:用提示工程在GPT商店构建10个GPTs

你将学到什么&#xff1f; 深入了解ChatGPT平台和GPT商店的生态系统。 开发为多样化应用定制GPT模型的专业知识。 掌握高效内容生成的AI自动化技术。 学习高级提示工程以优化ChatGPT输出。 获取构建AI驱动的数字营销和广告解决方案的技能。 了解如何为SEO写作和优化创建专…

从0开始学统计-多个婴儿连续夭折是谋杀吗?

1.什么是小概率事件&#xff1f; 小概率事件是指在一次随机试验中发生概率非常低的事件。一般来说&#xff0c;小概率事件的发生概率远低于一定的阈值&#xff0c;通常取0.05或0.01。在统计学中&#xff0c;这些阈值被称为显著性水平&#xff08;significance level&#xff0…

CIC滤波器

CIC滤波器结构简单&#xff0c;没有乘法器&#xff0c;只有加法器、积分器和寄存器&#xff0c;适合工作在高抽样率条件下&#xff0c;而且CIC滤波器是一种基于零点相消的FIR滤波器。 CIC滤波器分为单级和多级滤波器。 1.在单极滤波器中&#xff1a; 当CIC滤波器的长度M远大于…

【css3】04-css3转换

目录 1 2D转换 2 3D转换 3 案例&#xff1a;旋转的魔方 1 2D转换 ## 2D转换 ☞ 位移 transform: translate(100px,100px); 备注&#xff1a; 位移是相对元素自身的位置发生位置改变 ☞ 旋转 transform: rotate(60deg); 备注&am…

LabVIEW虚拟测试实验室开发

LabVIEW虚拟测试实验室开发 在当代的科技和工业进步中&#xff0c;测试与测量扮演着至关重要的角色。随着技术的发展&#xff0c;测试系统也变得日益复杂和成本昂贵&#xff0c;同时对测试结果的准确性和测试过程的效率要求越来越高。开发了一种基于LabVIEW的虚拟测试实验室的…

新能源汽车的电驱热管理

前言 新能源汽车的电驱热管理是指维持电动汽车电池、电机和电控系统在适宜的工作温度范围内&#xff0c;保障车辆高效、安全、稳定运行的技术方案。随着新能源汽车的快速发展和普及&#xff0c;电驱热管理技术也日益成为关注焦点。本文将从电池、电机和电控系统三个方面介绍新…

k8s集群的声明式管理资源

一 声明式管理方法 1 适合于对资源的修改操作&#xff08;陈述式方式修改资源非常不方便&#xff09; 2 声明式资源管理方法依赖于yaml资源配置清单文件对资源进行管理 资源配置清单文件有两种格式&#xff1a;yaml&#xff08;人性化&#xff0c;易读&#xff09;&#xff…