【Agent论文解读】AIOS:LLM智能体操作系统
本篇文章将会对论文《AIOS:LLM Agent Operating System》进行分享。在这篇文章中,主要介绍了AIOS及其技术架构和实现。AIOS是一种LLM智能体操作系统,将大型语言模型嵌入操作系统(OS)作为OS的大脑,实现了“有灵魂”的操作系统。本片论文是对《LLM as OS, Agents as Apps: Envisioning AIOS, Agents and the AIOS-Agent Ecosystem》论文的延伸,关于该论文,我们下次将会进行解读。
背景信息
随着大语言模型(LLMs)的爆火,拥有大语言模型充当“大脑”的智能体使得人们看见一条通往AGI的路。大型语言模型所具有的理解、推理、解决问题和能够与人类/外部环境交互等能力,使得智能体能够在没有或者极少有人干预的情况下,能够独立运行、做出决策并执行任务,解决复杂和创造性问题。
然而,随着智能体数量和复杂性的指数增长,LLM和操作系统(OS)也面临越来越大的压力。如智能体请求在LLM上的调度优化和资源分配、智能体与LLM交互过程中维护上下文的困难、以及将具有不同能力和专长的异构智能体集成的复杂性等问题。
为了解决上述挑战,本文提出了AIOS,即LLM智能体操作系统(图1),其提供了模块隔离,以及LLM和操作系统功能的聚合。LLM内核隔离了类似操作系统的职责,特别是与LLM智能体、其相应资源和开发工具包相关的职责。通过这种隔离,LLM内核旨在增强LLM相关活动的管理和协调。具体而言,AIOS旨在优化资源分配,促进智能体之间的上下文切换,实现智能体的并发执行,为智能体提供工具服务,并维护智能体的访问控制。
其各模块及功能如下:
智能体调度器:对智能体请求进行优先级排序和调度,以优化LLM资源利用率。
上下文管理器:支持对LLM的中间生成状态进行快照和恢复,以及LLM的上下文窗口管理。
内存管理器:为每个智能体的交互日志提供短期内存。
存储管理器:将智能体的交互日志持久化到长期存储中,以便将来检索。
工具管理器:管理智能体对外部API工具(如搜索、科学计算)的调用。
访问管理器:在智能体之间强制执行隐私和访问控制策略。
除了模块之外,内核还提供了LLM系统调用接口(LLM System Call Interface),通过这个接口,智能体可以透明地利用这些服务。此外,通过AIOS SDK,进一步封装了LLM系统调用,为智能体开发人员提供更方便的函数库。
AIOS架构
图1:AIOS架构概述
如图1所示, AIOS架构分为三层:应用层、内核层和硬件层。这种分层架构确保系统各个部分的职责清晰划分。每个上层抽象了下层的复杂性,通过接口或特定模块促进交互,从而提高了模块化程度,简化不同层之间的系统交互。
应用层
在应用层,可以开发和部署智能体应用程序。在这一层,AIOS提供了AIOS SDK,对系统调用进行了更高级的抽象,从而简化了智能体的开发过程。该SDK通过提供丰富的工具包,来抽象低层系统功能的复杂性,使开发者可以专注于智能体的基本逻辑和功能,从而提高开发效率。内核层
内核层分为两个主要部分:操作系统内核和LLM内核,分别满足非LLM和LLM特定操作的要求。这种区分使LLM内核能够专注于LLM特定任务,如上下文管理和智能体调度。LLM内核配备了几个关键模块,包括LLM系统调用接口、智能体调度器、上下文管理器、内存管理器、存储管理器、工具管理器和访问管理器。这些组件旨在满足智能体应用程序的各种执行需求,确保在AIOS框架内高效管理和执行。硬件层
硬件层由CPU、GPU、内存、磁盘和外围设备等组成。LLM内核通过调用操作系统的系统调用接口(OS System Call Interface)进行交互,硬件资源仍然由操作系统管理。这种间接交互确保了一层抽象和安全性,使LLM内核能够利用硬件功能而无需直接管理硬件,从而保持系统的完整性和效率。
AIOS实现
在本节中,将概述AIOS中每个模块的基本设计和实现。
智能体调度器
智能体调度器旨在以高效的方式管理智能体请求。如图2中的各种智能体(表示为A、B和C),每个智能体都有多个执行步骤。在顺序执行范例中,智能体任务按线性顺序处理,其中来自同一智能体的步骤将优先处理。这可能会导致后面排队的任务的等待时间增加。
图2:智能体调度器的示意图。
智能体调度器采用先进先出(FIFO,First-In-First-Out)、轮询调度(RR,Round Robin)和其他调度算法等策略来优化这一过程。通过并发执行,调度器可显著平衡每个智能体的等待时间和周转时间,因为来自不同智能体的任务会交错并行执行。这种并发方法通过时间轴可视化,不同智能体的任务以交错的方式进行处理(如,A1、B1、C1、B2、A2、A3、C2、C3),确保没有单个智能体垄断处理资源,并且最大限度减少空闲时间。除了传统调度算法外,后续可以考虑更复杂的算法,也可把智能体之间的依赖关系考虑进去。
上下文管理器
图3:上下文快照和恢复,使用集束搜索beam search(束宽为1)作为搜索算法来说明这种生成式解码过程
上下文管理器负责管理提供给LLM的上下文和在给定上下文的生成过程。它主要涉及两个关键功能:上下文快照和恢复,以及上下文窗口管理。
上下文快照和恢复
考虑到调度算法可能涉及时间量子操作(如轮询),智能体请求可能会被调度器暂停。即使LLM尚未完全生成响应,也会发生这种暂停。因此,需要一种机制来保存LLM生成过程的状态,以确保在资源再次用时,能够准确地恢复。
AIOS在上下文管理器中提供了快照和恢复机制来解决这个问题,如图3所示。通过使用集束搜索过程(LLM中的典型实践)来说明生成解码过程。为了简化说明,将束宽设置为1。在该示例中,假设智能体的请求为:确定UA057航班目的地是否会下雨。在每一步中,LLM都会评估多个潜在的候选路径,并根据预定义的束宽保留最有希望的路径,以便进行进一步扩展。
当该生成过程在中间步骤被调度器中止时,上下文管理器使用快照功能来捕获和存储LLM束搜索树的当前状态,包括生成响应的所有中间概率和正在探索的路径。在恢复时,恢复功能重新加载快照中保存的状态,使LLM从暂停点继续生成过程,以获得最终答案。通过这种方式,上下文管理器确保一个智能体请求的中止不会导致进度的丢失,从而在优化资源使用的同时,保持响应生成的质量和效率。
上下文窗口管理
为了应对超过LLM上下文窗口限制的长上下文带来的挑战,上下文管理器还需要管理上下文窗口的潜在扩展。具体而言,AIOS中的上下文管理器支持基本的文本摘要和其他扩展技术,以管理上下文窗口。通过这种方式,它可以帮助增强LLM处理和理解大量上下文的能力,同时又不影响信息的完整性或相关性。
内存管理器
如图4所示,内存管理器负责管理智能体的生命周期内的短期内存,确保数据仅在智能体处于活动状态(等待执行或运行时)时,才能存储和访问数据。当前的AIOS支持独立存储每个智能体的内存,其他智能体无法直接访问每个智能体的内存,除非经过访问管理器的授权。相对于后续的存储管理器,内存管理器能够实现快速的数据检索和处理,便于快速响应用户查询和交互,而不会给AIOS的存储带来过重负担。
图4:使用内存管理器和存储管理器存储交互历史
存储管理器
如图4所示,存储管理器负责数据的长期保存。在AIOS中,通过各种持久性介质(如本地文件、数据库或基于云的解决方案)实现数据的永久存储,以确保数据的完整性和可用性,供将来参考或分析。存储管理器支持检索增强。通过存储用户偏好和维护历史交互日志,存储管理器可以丰富智能体的知识更新,增强长期用户体验。
工具管理器
AIOS系统中的工具管理器管理着一系列增强LLMs功能的API工具。如表1所示,工具管理器整合了各种来源的常用工具,并将其分为不同类别,其中包含网络搜索、科学计算、数据库检索、图像处理等。通过该方式,托管工具可以涵盖不同的输入和输出形式(图像和文本),从而便于在AIOS生态系统中进行智能体开发。
表1:AIOS中的托管工具。最后一列显示了每个工具所需的输入和输出格式。
访问管理器
访问管理器通过为每个智能体管理一个专用的权限组,来协调不同智能体之间的访问控制操作。被排除在智能体的权限组之外的其他智能将被拒绝访问其资源,如交互历史。为了进一步提高系统的透明度,访问管理器会编译并维护审计日志。这些日志记录了访问请求、智能体活动以及对访问控制参数的修改信息,从而帮助防范潜在的特权攻击。
LLM系统调用
LLM内核中的LLM系统调用接口旨在提供基本的LLM调用操作函数。如表2所示,与操作系统的系统调用类似,LLM系统调用提供了一套跨越内核模块的基本功能,包括智能体管理、上下文处理、内存和存储操作以及访问控制。
表2:LLM系统调用的实例
AIOS SDK
AIOS SDK旨在为开发人员提供一个多功能工具包,用于在AIOS中创建复杂的智能体应用程序。该SDK包含广泛的功能,从初始化智能体和管理智能体生命周期,到促进资源监控和生成智能体任务计划等复杂操作。表3中列出了AIOS目前支持的SDK函数。
表3:AIOS SDK中的SDK函数列表
实验数据
实验使用Python 3.9、PyTorch 2.0.1和CUDA 11.8在配备8个NVIDIA RTX A5000 GPU的Ubuntu 22.04机器上开展。采用开源大模型(即Gemma-2b-it、Gemma-7b-it、LLaMA-2-13b-chat-hf)作为AIOS的LLM。为了进行评估,配置了三个不同的Agent:一个数学Agent,用于解决数学难题;一个叙事Agent,用于生成新的叙事;以及一个推荐Agent,负责提供餐厅推荐。每个Agent在运行过程中都会向LLM发送2-3个请求。
实验结果
一致性分析:使用BLEU分数和BERT分数作为评估指标来评估多个智能体并行运行与单个智能体串行运行时的输出一致性。如表4所示,BLEU和BERT分数都达到了1.0,表明在多智能体和单智能体配置下生成的输出结果完全一致。这一结果证实了作者们的设计在有效促进多智能体并发操作方面的一致性。
表4:并行运行多个智能体与串行运行单个智能体时,LLM响应的一致性对比。
性能分析:作者们对比了使用FIFO调度和非调度方法。如表5所示,对于序列中较早的智能体,非调度方法表现出良好的性能,但牺牲了后期智能体的等待时间和周转时间。相反,AIOS的调度机制有效地调节了等待时间和周转时间,特别在智能体后期提交的请求中变得明显,尤其是当LLM较大时。这表明调度对于适应多个智能体的并行操作的重要性。
表5:智能体调度与非调度(顺序)执行效果对比
结论与展望
AIOS为人工智能(AI)和操作系统(OS)的未来发展提供了一个创新性的视角,它将大型语言模型(LLM)作为操作系统的一部分,实现了一个“有灵魂”的操作系统。目前,AIOS还处于初始概念设计阶段,在多个方向仍然需要进一步的完善。
在后续的工作中,AIOS需要继续在智能体高级调度算法,如智能体请求之间执行依赖分析的算法。设计更高效的机制来辅助上下文管理,如追求时间高效的上下文管理技术可以通过加快上下文快照和还原的过程来显著提升用户体验。持续优化内存和存储架构,如内存和存储系统构建一个共享存储池,使智能体能够访问共享的记忆和存储;同时探索分层存储解决方案,优化数据检索和存储效率。提升安全和隐私保护能力,如智能体的越权访问其他智能体内存,探索先进的加密技术,从而保持智能体通信的机密性等。
同时,AIOS以一个创新性的视角,将AI和OS进行了融合,也为后续操作系统和智能体的研究、探索提供了一个新的方向。AIOS主要意义如下:
提升性能
上承接应用,下管理硬件资源,可以有效优化资源分配,确保系统资源被高效利用。再辅以上下文管理和调度机制,AIOS能够提升智能体的运行效率和性能。促进AI与操作系统的融合
AIOS将LLM作为操作系统的核心组成部分,通过将AI深度集成到操作系统中,AIOS为AI应用的开发和运行提供了一个更为直接和高效的平台,这可能会促进新型AI应用的涌现。推动操作系统的进化
AIOS提出了一个关于如何将AI能力嵌入到操作系统中的新范式。这不仅仅是在操作系统上运行AI应用,而是让AI成为操作系统的一部分,参与到操作系统的各个方面,如资源管理、调度和安全性控制。这可能会引发操作系统设计和实现方式的根本变革。
参考资料
Kai Mei, Zelong Li, Shuyuan Xu, Ruosong Ye, Yingqiang Ge, Yongfeng Zhang. AIOS: LLM Agent Operating System. arXiv preprint arXiv:2403.16971