[论文笔记]AIOS: LLM Agent Operating System

引言

这是一篇有意思的论文AIOS: LLM Agent Operating System,把LLM智能体(代理)看成是操作系统。

基于大语言模型(LLMs)的智能代理的集成和部署过程中存在着许多挑战,其中问题包括代理请求在LLM上的次优调度和资源分配,代理和LLM之间在交互过程中保持上下文的困难,以及集成具有不同能力和专业化的异构代理时固有的复杂性。代理数量和复杂性的迅速增加进一步加剧了这些问题,通常导致资源的瓶颈和次优利用。

受到这些挑战的启发,本篇工作提出了AIOS,一种LLM代理操作系统,将大语言模型嵌入操作系统(OS)作为OS的大脑。具体而言,AIOS旨在优化资源分配,促进代理之间的上下文切换,实现代理的并发执行,为代理提供工具服务,并维护代理的访问。

项目开源在:https://github.com/agiresearch/AIOS

1. 总体介绍

在自主代理领域,人们致力于开发能够独立运行、做出决策并执行任务的系统,无需或只需最小限度的人类干预。这些代理被设计为理解指令、处理信息、做出决策并采取行动以实现自主状态。大语言模型的出现为代理开发带来了新的可能性。当前的LLMs已经展现出在理解指令、推理和解决问题、与人类用户以及外部环境进行交互方面的强大能力。建立在这些强大的LLMs之上,新兴的基于LLM的代理在各种环境中展现出强大的任务完成能力,从虚拟助手到涉及复杂和创造性问题解决、规划和推理的更复杂系统。

image-20240606155700921

一个引人注目的例子是基于LLM的代理如何解决真实世界任务,如图1所示。在用户提出旅行组织请求后,旅行代理将任务分解为可执行步骤。然后,它按顺序执行这些步骤以预订航班、预订酒店、处理付款,并根据用户的喜好更新日历。在计划执行过程中,代理展现出推理和决策能力,使其与仅受制于预定义功能或工作流程的传统软件应用区分开来。要实现这一旅行场景,代理需要与LLM服务(例如,检索和理解用户喜好、决定调用哪种工具API、生成评论和响应)以及传统操作系统(OS)服务(例如,访问磁盘驱动器和执行软件)进行交互。

随着代理数量和复杂性的指数增长,LLM和OS的功能面临越来越大的压力。例如,在有限的LLM资源中安排和优先处理代理请求是一个重要的挑战。此外,处理具有庞大上下文的情况时,LLM的生成过程可能需要很长时间,有时会导致调度程序挂起生成。这带来了一个问题,即制定一种快照机制来记录LLM当前的生成结果,从而即使在LLM尚未完成对当前请求的响应生成时也能实现暂停/继续行为。此外,一旦一个代理获得可调用工具列表,确定调用这些工具的最佳顺序又带来了另一个挑战,因为多个代理可能需要调用相同的工具。此外,多个代理的并发操作需要一个强大的内存管理系统,跨不同代理进行管理,同时确保对隐私和访问控制措施的严格执行。

image-20240606160152768

为了解决上述挑战,作者提出了AIOS,一种LLM代理操作系统(图2),旨在提供LLM和OS功能的模块隔离和聚合。为了解决与LLM相关的任务和与LLM无关的任务之间可能出现的冲突,作者提出了设计LLM特定内核的方案。这个内核分离了类似操作系统的职责,特别是与LLM代理、它们对应的资源和开发工具包相关的职责。通过这种分离,LLM内核旨在增强LLM相关活动的管理和协调。在所提出的LLM内核中,设计了一套模块,每个模块专门应对与LLM操作相关的独特功能。下面概述了这些模块及其各自的功能:

  • 代理调度器(Agent Scheduler):优先处理和安排代理请求,以优化LLM的利用。
  • 上下文管理器(Context Manager):支持在LLM中快照和恢复中间生成状态以及LLM上下文窗口的管理。
  • 记忆管理器(Memory Manager):为每个代理的交互日志提供短期记忆。
  • 存储管理器(Storage Manager):将代理的交互日志持久化到长期存储,以便未来检索。
  • 工具管理器(Tool Manager):管理代理调用外部API工具(例如搜索、科学计算)。
  • 访问管理器(Access Manager):在代理之间执行隐私和访问控制策略。

除了这些模块,内核通过LLM系统调用接口公开了一个接口,代理可以透明地利用这些服务。此外,设计了AIOS SDK来进一步封装LLM系统调用,为代理开发人员提供更方便的代理库函数。利用AIOS架构,像旅行规划器这样的代理可以将其任务分解成步骤,流畅地结合LLM推理(例如计划生成和工具调用决策)和OS级别的操作(例如访问存储和执行软件服务)。这种能力的协同组合使多个LLM代理能够处理越来越复杂、多模态的任务,这些任务需要推理、执行和与物理世界的交互。

2. 相关工作

2.2 大型语言模型代理

基于大型语言模型的自主代理将自然语言指令作为复杂任务求解的输入。关于基于LLM代理的研究通常可以分为单代理系统和多代理系统。

基于LLM的单代理系统 基于LLM的单代理系统(single-agent systems,SAS)使用单个LLM代理进行复杂任务求解,如旅行规划、个性化推荐和艺术设计。该代理接收用户的自然语言指令作为输入,并将任务分解为一个多步计划以完成任务求解,其中每个步骤可能调用外部工具完成,例如收集信息、执行专业模型或与外部世界进行交互。

基于LLM的多代理系统 基于LLM的多代理系统(multi-agent systems,MAS)利用多个代理之间的交互来解决问题。多个代理之间的关系可能是合作的、竞争的,或是合作和竞争的混合。在合作的多代理系统中,每个代理接收并评估其他代理提供的信息,从而共同合作解决复杂任务,如角色扮演、社会模拟和软件开发。在竞争性多代理系统中,代理可能在游戏环境中进行辩论、谈判和竞争以实现自己的目标。一些多代理系统可能在代理之间同时表现出合作和竞争。

3. AIOS层

如图2所示,AIOS架构分为三个独立的层级:应用层(application layer)、内核层(kernel layer)和硬件层(hardware layer)。这种分层架构确保了系统各个部分的职责清晰划分。每个更高级别的层次都会对其下层的复杂性进行抽象,通过接口或特定模块促进交互,从而增强模块化并简化跨不同层级的系统交互。

应用层 在应用层,代理应用程序被开发和部署,如旅行代理或数学代理。在这一层,AIOS提供了AIOS SDK,通过更高级别的系统调用抽象简化了代理开发人员的开发过程。该SDK通过提供一个丰富的工具包来为代理应用程序的开发提供便利,该工具包抽象化了更低层次系统功能的复杂性。这使开发人员能够专注于代理的基本逻辑和功能,促进更高效的开发过程。

内核层 内核层分为两个主要组件:操作系统内核和LLM内核,分别满足非LLM和LLM特定操作的独特需求。这种区别使得LLM内核能够专注于LLM特定任务,例如上下文管理和代理调度,这些任务对处理LLM相关活动至关重要,通常不属于标准操作系统内核功能的范围。本工作主要集中于增强LLM内核,而不对现有操作系统内核结构进行重大改动。LLM内核配备了几个关键模块,包括LLM系统调用接口、代理调度器、上下文管理器、内存管理器、存储管理器、工具管理器和访问管理器。这些组件旨在满足代理应用程序的多样的执行需求,在AIOS框架内确保高效的管理和执行。

硬件层 硬件层包括系统的物理组件,包括CPU、GPU、内存、磁盘和外围设备。需要注意的是,LLM内核的系统调用不能直接与硬件交互。相反,这些调用与操作系统的系统调用接口交互,后者再管理硬件资源。这种间接交互确保了一层抽象和安全性,使LLM内核能够利用硬件能力而无需直接进行硬件管理,从而保持系统的完整性和效率。

4 AIOS实现

4.1 代理调度器

image-20240606175341834

代理调度器旨在以高效的方式管理代理请求。考虑图3中的各种代理(表示为A、B和C),每个代理都有多个执行步骤。在顺序执行范例中,代理任务按照线性顺序处理,其中来自同一代理的步骤将首先处理。这可能导致排在序列后面的任务等待时间增加。

代理调度器设计如图3所示。在图中,A1、A2、A3代表代理A的执行步骤,B1、B2代表代理B的执行步骤,C1、C2、C3代表代理C的执行步骤。顺序执行将导致代理任务按照线性顺序依次执行,这可能会增加后续任务的等待时间。而并发执行则可以减少等待时间。

代理调度器根据特定的调度算法(如FIFO、Round Robin等)来管理代理任务的执行顺序,以优化系统性能和资源利用率。通过并发执行,调度器显著平衡了每个代理的等待时间和周转时间,因为来自不同代理的任务被交错执行并并行执行。这种并发方法通过时间轴展示,其中来自不同代理的任务以交错方式处理(例如,A1、B1、C1、B2、A2、A3、C2、C3),确保没有单个代理垄断处理资源,且空闲时间被最小化。

上下文管理器

image-20240607132403649

上下文管理器负责管理提供给LLM的上下文以及在给定某个上下文时生成过程。它主要涉及两个关键函数:上下文快照(snapshot)和还原(restoration),以及上下文窗口管理(context window management)。

上下文快照和还原 考虑到调度算法可能涉及时间量子操作(例如 Round-Robin),并且代理请求可能会被调度器挂起。即使LLM尚未完全生成响应,也会发生这种挂起。因此,需要一种机制来保留LLM生成过程的状态,确保一旦资源再次可用,就可以准确恢复。

AIOS提供了上下文管理器中的快照和还原机制来解决这个问题,可以从图4中看到。使用典型的LLM中的束搜索过程,用于说明生成解码过程。为简单起见,将束宽度设置为1。具体来说,考虑代理请求为:确定航班UA057的目的地是否会下雨。在每个步骤中,LLM评估多个潜在候选项,并保留最有希望的路径以便根据预定义的光束宽度进一步扩展。

当这种生成过程在中间步骤被调度器挂起时,上下文管理器使用快照函数来捕获和存储LLM的光束搜索树的当前状态,包括为生成响应正在探索的所有中间概率和路径。在恢复时,使用还原函数重新加载从快照中保存的状态,允许LLM从挂起点恢复其生成过程,最终得到答案:在巴黎搜索天气。这样,上下文管理器确保一个代理请求的临时挂起不会导致进度丢失,从而在不损害响应生成的质量和效率的情况下优化资源使用。

上下文窗口管理 为了解决长上下文超过LLM上下文窗口限制所带来的挑战,上下文管理器还需要管理上下文窗口的潜在扩展。具体来说,AIOS中的上下文管理器支持基本文本摘要和其他扩展技术,以管理上下文窗口。通过这种方式,它可以帮助增强LLM处理和理解广泛上下文的能力,而不会损害信息的完整性或相关性。

4.3 记忆管理器

image-20240607133032426

如图5所示,记忆(Memory)管理器在代理程序的生命周期内管理短期记忆(short-term memory),确保数据仅在代理程序处于活动状态时存储和访问,无论是等待执行还是在运行时。当前的AIOS支持独立存储每个代理的记忆,其他代理无法直接访问,除非经过访问管理器授权。与后文介绍的存储管理器相比,记忆管理器能够实现快速数据检索和处理,促进对用户查询和交互的迅速响应,而不会使AIOS的存储负担过重。

4.4 存储管理器

存储管理器负责数据的长期保存,监督需要无限期保留的信息的存储,超出任何单个代理程序的活动声生命周期。AIOS中的永久存储是通过各种持久性介质实现的,如本地文件、数据库或基于云的解决方案,确保数据的完整性和可用性,供将来参考或分析。存储管理器支持检索增强。通过存储用户偏好并维护历史交互日志,存储管理器可以丰富代理程序的知识更新并增强长期用户体验。

4.5 工具管理器

image-20240607133433852

AIOS系统中的工具管理器管理着增强LLM功能的各种API工具。如表1所示,工具管理器整合了各种来源的常用工具,并将它们分类到不同的类别中,涵盖了Web搜索、科学计算、数据库检索、图像处理等。

4.6 访问管理器

访问管理器通过为每个代理管理专用权限组,协调不同代理之间的访问控制操作。被排除在代理的特权组之外的其他代理将被拒绝访问其资源,比如交互历史。为进一步增强系统的透明性,访问管理器编制并维护审计日志。

4.7 LLM系统调用

image-20240607134124167

LLM内核中的LLM系统调用接口旨在提供基本的LLM调用操作函数。该接口充当了复杂代理请求与执行不同内核模块之间的桥梁。正如表2所示,类似于操作系统系统调用,LLM系统调用提供了一套跨越内核模块的基本功能,包括代理管理、环境处理、内存和存储操作以及访问控制。

4.8 AIOS SDK

image-20240607134211346

AIOS SDK为开发人员提供一个多功能工具包,用于在AIOS内部构建复杂的代理应用程序。该SDK涵盖了广泛的功能,从初始化代理和管理代理生命周期到促进复杂操作,如资源监控和代理任务的制定计划。当前在AIOS中支持的SDK功能如表3所示。

5. 评估

5.2 实验结果

image-20240607134407520

一致性分析 为了回答一致性问题,首先分别运行了三个构建的代理以生成结果。随后并行执行这些代理,并在每个步骤捕获它们的输出。为了评估多个代理同时运行和单个代理依次运行时输出的一致性,利用 BLEU 分数 和 BERT 分数 [ 作为评估指标。这两个指标的取值范围都是从 0.0 到 1.0,单个代理情境产生的输出作为参考标准,将温度参数设置为 0 以消除随机性的影响。正如表4所示,BLEU 分数和 BERT 分数都达到了 1.0 的数值,表明在多代理和单代理配置下生成的输出完美一致。

image-20240607134448033

性能分析 为了回答效率问题,对比了采用 FIFO 调度和非调度方法的 AIOS,在这两种方法下前述的三个代理同时运行。在非调度设置下,三个代理按照预定义的顺序依次执行:数学代理、叙述代理和记录代理。采用了两个指标来评估时间效率:等待时间(代理请求提交到开始的时间间隔)和周转时间(代理请求提交到完成的时间间隔)。由于每个代理将向 LLM 发送多个请求,每个代理的等待时间和周转时间分别被计算为其发送的所有请求的等待时间和周转时间的平均值。为减少随机性,分别对采用和不采用调度的这三个代理进行了五次独立试验并报告结果。如表5所示,非调度方法对于序列中较早的代理表现出良好的性能,但以延长后续代理的等待时间和周转时间为代价。相反,AIOS的调度机制有效地调节了等待时间和周转时间,尤其是在 LLM 较大时,这一好处尤为显著。

6. 结论

本文提出了AIOS架构,展示了促进基于LLM的代理开发和部署的潜力,培育了一个更协调、有效和高效的AIOS-Agent生态系统。

总结

⭐ 作者借鉴操作系统的知识,把LLM多智能体的协作看成是一个操作系统,包括短期的内存(记忆)管理器和长期的存储管理器、智能体调度器、访问管理器等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苹果将推出“Apple Intelligence”AI系统,专注于隐私和广泛应用|TodayAI

据彭博社报道,苹果公司将在下周的 WWDC 2024 开发者大会上揭晓其全新的 AI 系统——“Apple Intelligence”,该系统将适用于 iPhone、iPad 和 Mac 设备。这一新系统将结合苹果自身技术和 OpenAI 的工具,为用户提供一系列新的 AI 功能,同时重点关注隐私保护和广泛应用。 与…

如何在virtualbox上安装Linux系统(centerOS)

提示:共同学习 注意:一定要在BIOS中的虚拟化打开。 文章目录 第一步: 第一步: 启动 、显示开启 centos基础安装 ​ ​

MongoDB CRUD操作:地理位置查询

MongoDB CRUD操作:地理位置查询 文章目录 MongoDB CRUD操作:地理位置查询地理空间数据GeoJSON对象传统坐标对通过数组指定(首选)通过嵌入文档指定 地理空间索引2dsphere2d 地理空间查询地理空间查询运算符地理空间聚合阶段 地理空…

【Linux】The server quit without updating PID file的几种解决方案

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

Qt之QGraphicsView —— 笔记3:矩形图元连接(附完整源码)

效果 完整源码 注意:在ui文件中拖入一个QGraphicsView类窗口控件,然后用MyGraphicsView提升该类。 main.cpp #include "widget.h" #include <QApplication>int main(

【Java毕业设计】基于JSP+SSM的物流管理系统

文章目录 目 录摘要ABSTRACT1 概述1.1 课题背景及意义1.2 国内外研究现状1.3 本课题主要工作 2 系统开发环境2.1 JSP技术2.2 JavaScript2.3 B/S结构2.4 HTML简介 3 系统分析3.1 可行性分析3.1.1 技术可行性3.1.2操作可行性3.1.3 经济可行性3.1.4 法律可行性 3.2系统流程设计3.2…

ES开发及面试手册

入门基础 简介 Elasticsearch是一个基于Lucene的搜索和分析引擎&#xff0c;它提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;具有HTTP Web界面和无模式JSON文档。 使用场景 什么是全文检索 全文检索 是一种信息检索技术&#xff0c;它允许用户通过输入查询关键词来…

CorelDRAW2024发布更新啦!设计师们的得力助手

在数字化的今天&#xff0c;视觉设计已经成为我们生活中不可或缺的一部分。从手机界面到广告海报&#xff0c;从网页布局到包装设计&#xff0c;每一个细节都离不开设计师们的专业与创意。然而&#xff0c;面对日益增长的设计需求和不断提升的审美标准&#xff0c;许多设计师开…

Unity ShaderGraph 扭曲

需要注意的是&#xff1a; HDRP ShaderGraph中 你不能扭曲UI&#xff0c;所以假如你要扭曲视频&#xff0c;请把视频在材质上渲染 播放&#xff0c;这样就可以扭曲视频了喔&#xff0c; ShaderGraph扭曲

vue-el-steps 使用2[代码示例]

效果图 代码 element代码 <template> <div class"app-container"> <el-form :model"queryForm" size"small" :inline"true"> <el-form-item label"内容状态"> <el-button-group> <el-bu…

单列集合.java

单列集合 为了存储不同类型的多个对象&#xff0c;Java提供了一些特殊系列的类&#xff0c;这些类可以存储任意类型的对象&#xff0c;并且存储的长度可变&#xff0c;这些类统称为集合。可以简单的理解为一个长度可变&#xff0c;可以存储不同数据类型的动态数组。集合都位于j…

编写程序,提示用户输入以米/秒(m/s)为单位的速度v和以米/秒的平方(m/s)为单位的加速度 a,然后显示最短跑道长度。

(物理:求出跑道长度)假设一个飞机的加速度是a而起飞速度是v&#xff0c;那么可以使用下 面的公式计算出飞机起飞所需的最短跑道长度: 编写程序&#xff0c;提示用户输入以米/秒(m/s)为单位的速度v和以米/秒的平方(m/s)为单 位的加速度 a&#xff0c;然后显示最短跑道长度。下面…

【数据结构】平衡二叉树左旋右旋与红黑树

平衡二叉树左旋右旋与红黑树 平衡二叉树 定义 平衡二叉树是二叉搜索树的一种特殊形式。二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是一种具有以下性质的二叉树&#xff1a; 对于树中的每个节点&#xff0c;其左子树中的所有节点都小于该节点的值…

求助!什么软件可以人声分离?手机上可以进行人声分离操作吗?

在数字时代&#xff0c;音频处理变得越来越重要&#xff0c;而人声分离技术则是其中的一项关键技术。很多人可能都有过这样的疑问&#xff1a;什么软件可以实现人声分离&#xff1f;手机上能否进行人声分离操作&#xff1f;今天&#xff0c;我们就来为大家解答这些问题&#xf…

Windows 系统安装 VisualSVN Server

一.下载 VisualSVN Server VisualSVN-Server 是 SVN 版本控制中服务器端要使用的软件,就是我们提交代码存在安装这个软件的电脑上,它将很多配置和服务直接帮你完成,简单好用容易上手。VisualSVN Server有三个版本,社区版免费但限15个用户,另有一般和‘企业’两个收费版本…

利用ArcGIS对长江三角洲地区的gdp水平进行聚类

1、导入矢量图、数据 长三角地区矢量图 长三角地区矢量图对应数据 2、连接 3、设置属性将人均gdp数据导入 4、设置标注和图例 选择布局视图 5、聚类 2020年人均gdp地区聚类 6、2005~2020年各地区人均gdp可视化及聚类汇总 &#xff08;1&#xff09;2005~2020可视化 2005 …

C#操作MySQL从入门到精通(13)——对查询结果使用函数

前言 我们有时候需要对查询到的数据使用函数进行处理,比如去掉空格,比如截取一半长度等操作,下面我来详细介绍: 本文使用的测试数据如下: 1、使用文本处理函数 1.1 Left 返回具有指定长度的字符串的左边部分 下面的代码获取email这个列从左边第一个字符开始计算的一共…

大模型基础——从零实现一个Transformer(1)

一、Transformer模型架构图 主要模块&#xff1a; embedding层&#xff1a; Input/Output Embedding&#xff1a; 将每个标记(token)转换为对应的向量表示。 Positional Encoding&#xff1a;由于没有时序信息&#xff0c;需要额外加入位置编码。 N个 block堆叠: Multi-Head …

自然语言处理(NLP)—— 语言检测器

1. 文章概述 1.1 目的 在本篇文章中&#xff0c;我们将构建一个语言检测器&#xff0c;这是一个能够识别文本语言的简单分类器。这是一个能够识别文本是用哪种语言写的程序。想象一下&#xff0c;你给这个程序一段文字&#xff0c;它就能告诉你这是英语、法语还是其他语言。 …

Linux 35.5 + JetPack v5.1.3@FC-Planner编译安装

Linux 35.5 JetPack v5.1.3FC-Planner编译安装 1. 源由2. 编译&安装Step 1&#xff1a;依赖库安装Step 2&#xff1a;克隆工程Step 3&#xff1a;编译工程Step 4&#xff1a;LKH编译Step 5&#xff1a;安装工程 3. 问题汇总3.1 swarm_exploration/plan_env - OpenCV3.2 程…