KVFlow: Efficient Prefix Caching for Accelerating LLM-Based Multi-Agent Workflows

  • 作者/机构: Zaifeng Pan, Ajjkumar Patel, Zhengding Hu, Yipeng Shen, Yue Guan, Wan-Lu Li, Lianhui Qin, Yida Wang, Yufei Ding
  • 机构: 1 UCSD, 2 AWS

A1 主要贡献

本文解决了现有大型语言模型(LLM)服务系统在处理基于智能体的工作流(agentic workflows)时效率低下的核心问题。当前系统普遍采用前缀缓存(prefix caching)技术来复用与智能体固定提示(prompt)对应的键值(KV)张量,以避免重复计算。然而,这些系统通常使用最近最少使用(LRU)策略来驱逐KV缓存,这种策略无法预见未来智能体的调用情况,常常在智能体即将被再次使用前就丢弃了其KV缓存。这导致了频繁的缓存未命中(cache miss),并带来了大量的重计算或交换开销。

如下图所示,在一个由四个智能体(Planner、Executor、Expresser、Reviewer)组成的循环工作流中,当时间戳为13时,Executor处于活动状态,其KV缓存被更新。由于LRU策略,最近未被访问的Expresser的缓存被驱逐。然而,在下一个时间戳14,工作流即将调用Expresser,此时便会发生缓存未命中,导致预填充(prefill)延迟增加。

图1:一个由Planner、Executor、Expresser和Reviewer四个智能体组成的循环智能体工作流抽象,改编自[5]。在时间戳13,Executor处于活动状态,其KV缓存被更新,导致Expresser的缓存因LRU策略而被驱यो。在时间戳14,当Expresser再次变为活动状态时,发生缓存未命中,导致预填充延迟增加。
图1:一个由Planner、Executor、Expresser和Reviewer四个智能体组成的循环智能体工作流抽象,改编自[5]。在时间戳13,Executor处于活动状态,其KV缓存被更新,导致Expresser的缓存因LRU策略而被驱यो。在时间戳14,当Expresser再次变为活动状态时,发生缓存未命中,导致预填充延迟增加。

为解决上述问题,本文提出了KVFlow,一个专为智能体工作负载设计的、具备工作流感知能力的KV缓存管理框架。KVFlow的核心创新和贡献如下:

  1. 识别了现有LLM服务系统中的一个根本性低效问题:即广泛使用的基于LRU的KV缓存驱逐策略在智能体工作流下表现不佳。
  2. 提出了KVFlow,一种工作流感知的KV缓存管理优化方案。该方案通过以下关键技术实现:

    • 智能体步骤图(Agent Step Graph):一种灵活的抽象,用于捕捉智能体之间的执行依赖关系,支持条件分支和同步障碍等多种工作流结构。每个智能体节点都被赋予一个执行所需步骤数(steps-to-execution)值,用于估计其距离下一次被激活的时间。
    • 工作流感知的驱逐策略:基于“执行所需步骤数”,KVFlow在KV节点级别上进行细粒度的驱逐优先级分配,优先保留即将被重用的条目,并有效管理树状结构缓存中的共享前缀。
    • 完全重叠的KV预取机制:利用智能体步骤图预测下一步将被调度的智能体,并在后台线程中主动将所需的KV张量从CPU加载到GPU。这避免了在生成过程中因缓存未命中而导致的停顿。
  3. 全面的实验评估:实验结果表明,KVFlow显著减少了缓存未命中开销。对于具有大提示的单个工作流,其速度比SGLang(使用分层基数缓存)最高提升1.83倍;在多并发工作流场景下,最高可达2.19倍的加速。

A3 背景知识

LLM服务系统中的前缀缓存

现代LLM服务系统的缓存机制。为了实现细粒度的前缀复用并消除冗余存储,现代LLM服务系统【【11,Efficient memory management for large language model serving with pagedattention,2023,SOSP】,【12,Sglang: Efficient execution of structured language model programs,2024,NeurIPS】】在GPU上将KV缓存组织成树状结构。每个节点存储一段token及其对应的KV张量。当收到新请求时,系统从树的根节点开始匹配前缀,并沿匹配路径拼接KV张量以重建完整的缓存前缀。当GPU内存不足时,系统会根据LRU策略驱逐节点。内存耗尽通常由两个原因引起:一是大量并发用户请求执行不同的智能体工作流,导致活动KV缓存条目过多;二是智能体的提示非常大而硬件容量有限。如图2(a)所示,单个请求的KV缓存大小随前缀长度线性增长,在长上下文中增加了内存压力。此外,可以将CPU内存配置为二级缓存层,用于备份被驱逐的KV张量,从而允许通过PCIe进行缓存交换。尽管存在PCIe延迟,但交换仍然比重新计算KV张量快得多【【15,Ragcache: Efficient knowledge caching for retrieval-augmented generation,2024,arXiv】,【16,{Cost-Efficient} large language model serving for multiturn conversations with {CachedAttention},2024,USENIX ATC】】。图2(b)比较了基于PCIe的KV缓存传输时间与预填充计算时间,证实了在内存压力下将数据卸载到CPU内存是一种有效的策略。

图(a) Llama-3.1-8B KV缓存大小 (b) Llama-3.1-8B预填充延迟和通过PCIe的KV缓存传输时间(批处理大小=1)
图(a) Llama-3.1-8B KV缓存大小 (b) Llama-3.1-8B预填充延迟和通过PCIe的KV缓存传输时间(批处理大小=1)
图2:不同上下文长度下的KV缓存特性。(a) KV缓存大小随token数量线性增长,导致内存使用量增加。(b) 通过PCIe传输KV缓存的时间远短于重新计算所需的时间。
图2:不同上下文长度下的KV缓存特性。(a) KV缓存大小随token数量线性增长,导致内存使用量增加。(b) 通过PCIe传输KV缓存的时间远短于重新计算所需的时间。

智能体工作流

智能体工作流的定义与构成。智能体工作流【【8,Aflow: Automating agentic workflow generation,2024,arXiv】,【10,Cognify: Supercharging gen-ai workflows with hierarchical autotuning,2025,arXiv】,【9,Very large-scale multi-agent simulation in agentscope,2024,arXiv】,【7,Gptswarm: Language agents as optimizable graphs,2024,ICML】】是一种LLM应用范式,它将多个智能体组织成一个执行图,以协同解决复杂任务。与完全自主的智能体【【17,Generative agents: Interactive simulacra of human behavior,2023,UIST】,【18,A survey on large language model based autonomous agents,2024,Frontiers of Computer Science】,【19,Webarena: A realistic web environment for building autonomous agents,2023,arXiv】】相比,智能体工作流利用人类领域专业知识,在不同任务中实现了更一致和稳健的性能【【3,Metagpt: Meta programming for multi-agent collaborative framework,2023,arXiv】,【20,Code generation with alphacodium: From prompt engineering to flow engineering,2024,arXiv】,【21,Unleashing the emergent cognitive synergy in large language models: A task-solving agent through multipersona self-collaboration,2023,arXiv】,【22,Mage: A multiagent engine for automated rtl code generation,2024,arXiv】,【23,Chatdev: Communicative agents for software development,2023,arXiv】,【24,Improving factuality and reasoning in language models through multiagent debate,2023,ICML】】。每个智能体的执行通常涉及一次或多次LLM调用,其提示由固定的部分和任务特定的动态部分组成。固定部分通常编码智能体的角色、行为指令、任务描述和少样本学习示例,并且可能非常庞大。例如,在【22,Mage: A multiagent engine for automated rtl code generation,2024,arXiv】中,TestBench Agent和RTL Generator Agent的固定提示分别包含超过3000和1000个token的冗长少样本学习示例。因此,缓存固定部分的相应KV可以显著减少预填充延迟并提高整体工作流执行效率。相比之下,动态部分通常包含来自用户的输入问题或指令,其缓存价值较低。

A2 方法细节

本节介绍KVFlow的设计,它通过两项关键技术来增强智能体工作流的前缀缓存管理。首先,我们引入一种工作流感知的驱逐策略,该策略根据未来的使用情况对KV节点进行优先级排序,优于默认的LRU策略。其次,我们提出一种重叠的KV预取机制,通过主动加载和状态感知调度来隐藏CPU-GPU的传输延迟。

图(b) 缓存树内每个KV节点的驱逐优先级分配,其中多个智能体可以共享部分前缀提示。
图(b) 缓存树内每个KV节点的驱逐优先级分配,其中多个智能体可以共享部分前缀提示。

图(a) 两个不同智能体步骤图中智能体的执行所需步骤数
图3:工作流感知驱逐策略的图示。(a) 每个智能体工作流被抽象为一个智能体步骤图,其中执行所需步骤数值通过依赖边上的步骤聚合函数计算。(b) 这些值通过缓存树传播,以在KV节点级别分配驱逐优先级。执行所需步骤数较小的节点被保留更长时间,从而减少过早驱逐的几率。

3.1 工作流感知的驱逐策略

现有LRU策略在智能体工作流中的不足。现有的LLM服务系统通常采用LRU驱逐策略,这在智能体工作流下表现不佳。具体来说,一个即将执行的智能体可能已经长时间处于空闲状态,而一个刚刚完成执行的智能体在短期内可能不再需要。此外,最近执行的智能体动态生成的后缀通常随任务进展而迅速变化,不太可能被重用,但它们仍会暂时保留在缓存中。借助工作流信息,我们可以预测智能体即将到来的执行序列,从而做出更明智的驱逐决策,避免LRU策略带来的低效率。

智能体步骤图与执行所需步骤数(Steps-to-Execution)。为了根据工作流结构做出驱逐决策,我们首先需要捕捉智能体之间的依赖关系。然而,现实世界工作流中的智能体交互非常多样化。如图3(a)所示,两个工作流差异显著:在上面的例子中,Expresser智能体依赖于Executor1和Executor2两者;而在下面的工作流中,存在条件分支,Expresser可以在任一执行器完成后被触发。传统的抽象,如控制流图(CFG)或有向无环图(DAG),不足以统一捕捉如此多样的执行语义。为了解决这个问题,我们引入了智能体步骤图(Agent Step Graph)抽象,其中每个节点对应一个智能体调用,边表示依赖关系。与传统图不同,智能体步骤图中的每个节点都关联一个步骤聚合函数(step aggregation function),该函数决定其“执行所需步骤数”如何从其前驱节点派生。对于前缀缓存管理,我们只关注每个智能体可能的最早执行步骤,并抽象掉具体的依赖类型。例如,在图3(a)的上半部分工作流中,Expresser智能体需要上游两个执行器都完成,因此其步骤值计算为 max(E1, E2) + 1。在下半部分工作流中,任何一条路径都足够,因此步骤值变为 min(E1, E2) + 1。通过递归应用这些聚合函数,智能体步骤图能够在任意多智能体工作流中统一计算执行所需步骤数。

工作流感知的驱逐优先级分配。基于智能体步骤图中的执行所需步骤数,我们设计了一种细粒度的驱逐策略,为KV缓存节点分配优先级。如图3(b)所示,执行所需步骤数较大的智能体更有可能被驱逐。重要的是,由于智能体可能在树状结构的缓存布局中共享公共前缀段,我们在缓存节点级别而不是智能体级别分配驱逐优先级。

优先级分配与传播机制。具体来说,我们只为每个智能体的固定提示部分分配优先级;所有变化的后缀总是被赋予最高的驱逐优先级,以便尽早驱逐。对于每个智能体,其执行所需步骤数值被分配给其固定提示的最后一个节点,并通过树向上(父节点)传播。当一个节点汇集了来自多个智能体的输入时,我们为其分配其子节点中最小的(即最不容易被驱逐的)优先级,以确保共享节点只要在近期对任何智能体有用,就会被保留下来。这种传播方案在缓存树上产生了一个优先级映射,动态地反映了由工作流驱动的重用潜力。当GPU内存受限时,KVFlow首先驱逐变化的后缀,然后按照分配的优先级降序增量地驱逐前缀KV节点,优先驱逐那些近期不太可能被重用的节点。此设计自然地适应了多个并发工作流,共享节点上的冲突通过选择所有工作流中最低(最保守)的优先级来解决。

3.2 重叠的KV预取

缓存未命中成本与二级缓存的利用。虽然工作流感知的驱逐策略避免了过早驱逐即将执行的智能体,但当一个智能体的KV缓存被驱逐后需要再次运行时,仍然可能发生缓存未命中。这对于长提示来说代价尤其高昂,因为从头开始重新计算KV缓存会产生巨大的开销。为了缓解这个问题,我们将CPU内存视为一个二级缓存,用于存储被驱逐智能体的固定提示KV。

现有系统的响应式加载策略及其延迟。当CPU缓存可用时,现有系统通常采用响应式加载策略,如图4顶部时间线所示。例如,如果Executor 1的前缀缓存已被卸载到CPU内存,系统只有在调度Executor 1时才被动地将其加载回来,从而避免了重新计算。然而,CPU到GPU的数据传输仍然会引入明显的延迟,特别是对于长前缀。

图4:重叠KV预取的图示。与响应式加载相比,KVFlow结合了提前加载即将到来的智能体的主动预取和状态感知调度,从而最小化了CPU-GPU的传输开销。*GPU内的智能体可以来自同一个工作流,也可以来自另一个并发的工作流。
图4:重叠KV预取的图示。与响应式加载相比,KVFlow结合了提前加载即将到来的智能体的主动预取和状态感知调度,从而最小化了CPU-GPU的传输开销。*GPU内的智能体可以来自同一个工作流,也可以来自另一个并发的工作流。

主动预取机制。为了减少这种传输开销,我们提出了一种主动预取(proactive prefetching)机制,该机制利用工作流信息提前异步加载所需的KV缓存。如图4的第二条时间线所示,当Planner正在执行时,系统预测到Executor 1将是下一个被调用的,并主动将其KV缓存从CPU预取到GPU。由于智能体的执行主要涉及GPU上的模型前向传播和下一个token的采样(模型输出从GPU传输到CPU),而KV加载涉及CPU到GPU的传输,这两个操作利用不同的硬件资源,可以并行进行而不会产生干扰。值得注意的是,PCIe支持全双工传输,允许CPU和GPU之间进行双向通信而不会产生竞争。当工作流包含分支时,系统会根据步骤图保守地预取所有可能在下一步执行的智能体,并在预定义的并发预取数量限制内进行。

预取的局限性。然而,仅靠预取并不总是足够的。当当前智能体的执行时间短于预取持续时间时,生成过程仍可能因KV加载未完成而受阻。这在多并发场景中很常见,因为多个工作流会竞争CPU-GPU带宽并导致排队延迟。这种情况在图4的第二条时间线中有所描绘,其中尽管进行了预取,Executor 1的生成仍然被阻塞。

状态感知的调度策略。为了进一步减少GPU的空闲时间,我们通过状态感知(status awareness)来增强请求调度策略。在每个调度步骤中,如果一个请求的前缀缓存仍在加载过程中,调度器会暂时跳过它,并优先处理其他就绪的请求,例如图4中的Executor 2或来自其他并发工作流的请求。为了支持这一点,我们将每个缓存节点与一个状态变量关联,该变量可以是四种状态之一:在GPU内存中(in GPU memory)在CPU中备份(backup in CPU)加载中(loading)卸载中(offloading)。调度器会检查一个请求所需的所有节点,跳过任何状态为“加载中”的请求以避免重复加载尝试,并且只有在所有依赖项都可用时才分派该请求。完成后,后台加载线程会更新缓存节点的状态,通知调度器其已就绪。类似地,处于“卸载中”状态的节点在内存回收期间被排除在驱逐决策之外,以避免竞争条件。

组合优化的效果。如图4的第三条时间线所示,通过将主动预取与状态感知调度相结合,KVFlow有效地消除了缓存未命中,并使GPU计算与预取完全重叠,从而隐藏了CPU-GPU的传输延迟。

3.3 实现

实现基础与扩展。我们基于SGLang v0.4.4 【【12,Sglang: Efficient execution of structured language model programs,2024,NeurIPS】】实现了KVFlow的原型。SGLang是一个高效的LLM服务系统,同时提供了LLM执行的后端和应用开发的前端接口。SGLang的后端使用基数树(radix tree)管理前缀KV缓存。我们扩展了这一机制,以支持我们的工作流感知驱逐策略和完全重叠的KV预取。此外,我们修改了SGLang的前端和后端,以支持智能体工作流信息的传输。虽然我们当前的原型集成在SGLang的前端API中,但我们的方法不限于SGLang。它可以通过修改前端发送给服务器的HTTP请求,来适应其他智能体工作流框架。

步骤信息的捕获与传递。捕获从智能体步骤图生成的执行所需步骤信息对于在运行时指导我们的优化至关重要。在我们的实现中,我们假设每个sgl.function对应一个独立的智能体。在执行过程中,我们对LLM调用进行即时替换,将工作流元数据嵌入到HTTP请求中。这些元数据包括当前智能体的身份以及智能体步骤图中所有智能体的执行所需步骤数,从而指明哪些智能体可能在后续步骤中被调用。收到此信息后,后端可以相应地更新KV缓存树中的驱逐优先级,并在可驱逐的GPU内存足够大时触发预取。

固定与动态提示的区分。除了捕获步骤图的拓扑结构,我们还需要跟踪每个智能体固定提示的最后一个KV节点,如图3所示。在一个请求中区分提示的固定和动态部分是一个挑战。我们提供了两种替代解决方案。首先,我们引入一个原生接口,允许用户显式标记固定部分的结束位置。其次,我们设计了一种启发式方法,通过跟踪智能体的缓存命中历史,将持续命中的前缀视为固定部分。

客户端跟踪与冲突解决。在服务场景中,多个智能体工作流可能在同一个后端实例上并发执行。现有的服务系统不区分请求来源,可能导致命名冲突。例如,两个不同的工作流可能都定义了一个名为“Planner”的智能体。为了解决这个问题,我们为每个应用程序分配一个唯一的客户端ID。该客户端ID附加到发送给后端的每个请求上,使系统能够消除智能体身份的歧义,并避免来自不同客户端的工作流之间产生干扰。

A4 实验环境与结果

实验环境

  • 硬件配置:

    1. 平台1: NVIDIA A10G GPU (24GB显存),PCIe Gen1 (2GB/s带宽)。
    2. 平台2: NVIDIA H100 GPU (80GB显存),PCIe Gen5 (64GB/s带宽)。
  • 模型架构:

    1. Llama-3.1-8B: 32个注意力头,8个KV头。
    2. Qwen2.5-32B: 40个注意力头,8个KV头。
  • 软件配置:

    • 代码实现: 基于SGLang v0.4.4进行原型开发。
    • 解码策略: 采用确定性解码(温度=0,贪心采样)以保证延迟测量的稳定性。
  • 数据集/工作负载:

    • 单工作流测试: 使用一个由10个智能体组成的顺序工作流,通过随机采样生成具有受控长度的固定和动态部分的合成提示。
    • 高并发测试: 同时启动多个独立的、不交互、不共享的合成工作流。
    • 真实场景模拟: 基于PEER框架【5】,使用Financial QA数据集作为工作流输入,构建由4个智能体组成的工作流。智能体提示由LLM根据给定的角色和指令生成,具有多样性和部分前缀重叠的特点。
  • 基线系统:

    1. SGLang: 仅使用GPU内存中的基数结构KV缓存,无CPU备份。缓存未命中时需从头重新计算。
    2. SGLang w/ HiCache: 启用SGLang默认的CPU缓存扩展(分层基数缓存),该扩展异步地将常用缓存节点备份到主机内存。发生缓存未命中时,从CPU加载而非重新计算。

实验结果

单工作流延迟

实验内容: 在批处理大小为1的条件下,评估单个10智能体顺序工作流的端到端延迟,模拟交互式使用场景。
实验结果:

  • 如图5所示,在所有配置下,KVFlow都取得了最高的加速比。
  • 在A10G GPU上,对于8192/32/32(固定/动态/输出token数)的配置,KVFlow相比SGLang w/ HiCache提速1.83倍,相比纯GPU的SGLang提速2.91倍。这证明了其工作流感知的驱逐和预取策略有效隐藏了CPU-GPU传输开销。
  • SGLang w/ HiCache通常优于纯GPU的SGLang,但在H100的大上下文设置下(如8192/32/32),其性能有时甚至会下降,这可能是由于SGLang自身流水线调度不佳,未能有效重叠计算和传输。
图5:在10个智能体的顺序工作流中,相较于SGLang(仅GPU缓存)的加速比。横轴表示:固定部分token / 动态部分token / 输出token。
图5:在10个智能体的顺序工作流中,相较于SGLang(仅GPU缓存)的加速比。横轴表示:固定部分token / 动态部分token / 输出token。

分析结论:
- KVFlow的加速效果随着固定提示长度的增加而增强。例如,当固定token从4096增加到8192时,平均加速比从1.28倍提升至1.48倍,因为更长的提示导致缓存未命中开销更大。
- 随着输出token数量的增加,KVFlow的相对增益减小,因为此时总运行时间主要由LLM的解码延迟决定,缓存加载的影响占比下降。

高并发工作流性能

实验内容: 在单张H100 GPU上同时启动多个独立工作流,评估系统在高并发下的性能。
实验结果:
- 如图6所示,在所有高并发设置中,KVFlow的性能始终优于SGLang和HiCache,最高取得了1.25倍的加速。
- HiCache在高并发下表现尤其差,性能甚至多次落后于纯GPU的SGLang。例如,在1024固定token和64个并发工作流的设置下,其性能仅为SGLang的0.57倍。
- KVFlow相较于基于LRU和响应式加载的HiCache,最高实现了2.19倍的性能提升。

图6:在H100上不同固定提示/并发设置下的高并发工作流性能比较。
图6:在H100上不同固定提示/并发设置下的高并发工作流性能比较。

分析结论:
- HiCache在高并发下的糟糕表现可能是由于频繁的缓存未命中触发了响应式加载操作,扰乱了SGLang的调度-计算流水线。此外,SGLang中KV存储的碎片化布局导致PCIe带宽未能被充分利用。
- 尽管KVFlow未解决碎片化问题,但通过更合理的驱逐和主动预取,它更好地重叠了PCIe传输和GPU计算,从而获得了显著的性能优势。

真实工作流模拟

实验内容: 基于PEER框架和Financial QA数据集模拟真实的多智能体应用场景。图7展示了该场景下固定、动态和输出部分的token分布。
实验结果:
- 如图8所示,KVFlow相比SGLang和SGLang with HiCache均取得了明显改进,分别实现了高达1.12倍和1.08倍的加速。

图7:在PEER风格的工作流中,固定、动态和输出部分的token分布。
图7:在PEER风格的工作流中,固定、动态和输出部分的token分布。
图8:在PEER风格的多智能体应用中,KVFlow相较于SGLang和HiCache的加速比。
图8:在PEER风格的多智能体应用中,KVFlow相较于SGLang和HiCache的加速比。

分析结论:
- 该结果表明,KVFlow在真实部署环境下的多应用服务中具有很强的实用潜力。

A7 补充细节:相关工作

LLM服务优化

与本文工作的关系。大量工作致力于通过优化请求调度来改善在线LLM服务,例如连续批处理(也称迭代级调度)【【30,Orca: A distributed serving system for {Transformer-Based} generative models,2022,OSDI】】,使用多级反馈队列缓解队头阻塞【【31,Fast distributed inference serving for large language models,2023,arXiv】】,以及针对流式场景的体验质量感知调度器【【32,Andes: Defining and enhancing quality-of-experience in llm-based text streaming services,2024,arXiv】】等。另一类工作则专注于KV缓存管理。vLLM提出的PagedAttention【【11,Efficient memory management for large language model serving with pagedattention,2023,SOSP】】通过分页存储KV张量来减少内存碎片,而SGLang引入的RadixAttention【【12,Sglang: Efficient execution of structured language model programs,2024,NeurIPS】】则旨在消除前缀缓存中的冗余。一些工作也针对聊天机器人场景提出了专门的前缀缓存策略【【16,{Cost-Efficient} large language model serving for multiturn conversations with {CachedAttention},2024,USENIX ATC】,【33,Stateful large language model serving with pensieve,2025,EuroSys】】。InferCept【【34,Infercept: Efficient intercept support for augmented large language model inference,2024,arXiv】】通过预测工具调用时长并使用成本模型来决定是保留、交换还是丢弃被拦截请求的KV缓存。这些优化与KVFlow是正交的,因为KVFlow专注于由多个智能体构成的工作流。虽然Autellix【【35,Autellix: An efficient serving engine for llm agents as general programs,2025,arXiv】】和ParrotServe【【36,Parrot: Efficient serving of {LLM-based} applications with semantic variable,2024,OSDI】】探索了智能体工作流中的请求调度,但它们未考虑前缀缓存管理,因此其目标与我们的工作是互补的。

智能体工作流框架

与本文工作的关系。近期的工作提出了多种多智能体框架【【3,Metagpt: Meta programming for multi-agent collaborative framework,2023,arXiv】,【4,Camel: Communicative agents for" mind" exploration of large language model society,2023,NeurIPS】,【6,Autogen: Enabling next-gen llm applications via multi-agent conversation,2023,arXiv】,【7,Gptswarm: Language agents as optimizable graphs,2024,ICML】,【37,LangChain. LangGraph,2025】,【38,Anthropic. Building effective agents,2024】,【39,Agentscope: A flexible yet robust multi-agent platform,2024,arXiv】】,这些框架将智能体组织成结构化的角色以协同解决复杂任务。它们提供了内置的消息传递和依赖构建机制、方便的工具使用和推理方法集成、通用智能体角色和行为的预定义抽象,以及支持并发智能体协作的高效多线程执行。其中一些系统将智能体工作流抽象为计算图,节点代表调用LLM的智能体,边表示控制流或消息依赖。这种抽象使得应用图级别的转换成为可能,例如边剪枝【【40,Cut the crap: An economical communication pipeline for llm-based multi-agent systems,2024,arXiv】】、算子插入【【8,Aflow: Automating agentic workflow generation,2024,arXiv】】或拓扑优化【【7,Gptswarm: Language agents as optimizable graphs,2024,ICML】,【10,Cognify: Supercharging gen-ai workflows with hierarchical autotuning,2025,arXiv】】,以提高应用的正确性或质量。然而,这些框架仍专注于应用层的构建,并依赖传统的LLM服务基础设施来处理生成任务。相比之下,我们的工作利用智能体工作流的结构来优化服务系统本身,旨在提升多智能体执行负载下的后端效率。

A5 结论

本文提出了KVFlow,一个工作流感知的KV缓存管理框架,用于优化智能体工作流中的LLM服务。通过将智能体执行抽象为步骤图(Step Graph)并计算每个智能体的执行所需步骤数(steps-to-execution),KVFlow实现了一种能够预测未来使用情况的、有原则的驱逐策略。

此外,它还引入了一种完全重叠的KV预取机制,以主动消除缓存未命中导致的停顿。我们的评估表明,在具有长提示或高并发的工作流中,KVFlow相比现有系统显著提高了服务效率。以往关于多智能体系统的工作主要集中在设计前端应用逻辑和交互协议上,而KVFlow则强调了工作流语义在实现系统级优化方面的重要性。


引用文献详情

  • [3] Sirui Hong, et al. Metagpt: Meta programming for multi-agent collaborative framework. 2023, arXiv.

    • 引用位置: 背景知识 (智能体工作流), 相关工作 (智能体工作流框架)
    • 引用描述: 作为利用人类领域知识提升性能的智能体工作流范例,以及一个代表性的多智能体框架。
  • [4] Guohao Li, et al. Camel: Communicative agents for" mind" exploration of large language model society. 2023, NeurIPS.

    • 引用位置: 相关工作 (智能体工作流框架)
    • 引用描述: 作为多智能体框架的例子。
  • [5] Yiying Wang, et al. Peer: Expertizing domain-specific tasks with a multi-agent framework and tuning methods. 2024, arXiv.

    • 引用位置: 主要贡献 (图1描述), 实验环境 (真实场景模拟)
    • 引用描述: 图1中的工作流抽象改编自此文献,同时在实验部分使用其框架和数据集进行真实场景模拟。
  • [6] Qingyun Wu, et al. Autogen: Enabling next-gen llm applications via multi-agent conversation. 2023, arXiv.

    • 引用位置: 相关工作 (智能体工作流框架)
    • 引用描述: 作为多智能体框架的例子。
  • [7] Mingchen Zhuge, et al. Gptswarm: Language agents as optimizable graphs. 2024, ICML.

    • 引用位置: 背景知识 (智能体工作流), 相关工作 (智能体工作流框架)
    • 引用描述: 作为智能体工作流范例,以及一个将工作流抽象为计算图并进行拓扑优化的框架。
  • [8] Jiayi Zhang, et al. Aflow: Automating agentic workflow generation. 2024, arXiv.

    • 引用位置: 背景知识 (智能体工作流), 相关工作 (智能体工作流框架)
    • 引用描述: 作为智能体工作流范例,以及一个通过算子插入进行图级别转换的框架。
  • [9] Xuchen Pan, et al. Very large-scale multi-agent simulation in agentscope. 2024, arXiv.

    • 引用位置: 背景知识 (智能体工作流)
    • 引用描述: 作为智能体工作流的范例。
  • [10] Zijian He, et al. Cognify: Supercharging gen-ai workflows with hierarchical autotuning. 2025, arXiv.

    • 引用位置: 背景知识 (智能体工作流), 相关工作 (智能体工作流框架)
    • 引用描述: 作为智能体工作流范例,以及一个进行拓扑优化的框架。
  • [11] Woosuk Kwon, et al. Efficient memory management for large language model serving with pagedattention. 2023, SOSP.

    • 引用位置: 背景知识 (LLM服务系统中的前缀缓存), 相关工作 (LLM服务优化)
    • 引用描述: 现代LLM服务系统组织KV缓存的例子,具体为vLLM中的PagedAttention技术,用于减少内存碎片。
  • [12] Lianmin Zheng, et al. Sglang: Efficient execution of structured language model programs. 2024, NeurIPS.

    • 引用位置: 背景知识 (LLM服务系统中的前缀缓存), 方法细节 (实现), 相关工作 (LLM服务优化)
    • 引用描述: 现代LLM服务系统组织KV缓存的例子,具体为SGLang中的RadixAttention技术。本文的实现基于SGLang v0.4.4。
  • [15] Chao Jin, et al. Ragcache: Efficient knowledge caching for retrieval-augmented generation. 2024, arXiv.

    • 引用位置: 背景知识 (LLM服务系统中的前缀缓存)
    • 引用描述: 支持“从CPU交换缓存比重新计算更快”这一观点的文献。
  • [16] Bin Gao, et al. {Cost-Efficient} large language model serving for multiturn conversations with {CachedAttention}. 2024, USENIX ATC.

    • 引用位置: 背景知识 (LLM服务系统中的前缀缓存), 相关工作 (LLM服务优化)
    • 引用描述: 支持“从CPU交换缓存比重新计算更快”的观点,并作为聊天机器人场景下专用前缀缓存策略的例子。
  • [17-19] Park et al. 2023; Wang et al. 2024; Zhou et al. 2023.

    • 引用位置: 背景知识 (智能体工作流)
    • 引用描述: 作为与智能体工作流相对比的“完全自主智能体”研究的例子。
  • [20-24] Ridnik et al. 2024; Wang et al. 2023; Zhao et al. 2024; Qian et al. 2023; Du et al. 2023.

    • 引用位置: 背景知识 (智能体工作流)
    • 引用描述: 支持“智能体工作流利用人类领域知识能获得更稳健性能”这一观点的系列文献。其中[22]提供了大提示智能体的具体例子。
  • [30] Gyeong-In Yu, et al. Orca: A distributed serving system for {Transformer-Based} generative models. 2022, OSDI.

    • 引用位置: 相关工作 (LLM服务优化)
    • 引用描述: 作为LLM服务中请求调度优化(连续批处理)的例子。
  • [31-34] Wu et al. 2023; Liu et al. 2024; Yu et al. 2025; Abhyankar et al. 2024.

    • 引用位置: 相关工作 (LLM服务优化)
    • 引用描述: 作为LLM服务优化中不同方向的例子,包括多级反馈队列、QoE调度、聊天缓存策略和工具调用缓存策略,这些都与KVFlow的工作正交。
  • [35] Michael Luo, et al. Autellix: An efficient serving engine for llm agents as general programs. 2025, arXiv.

    • 引用位置: 相关工作 (LLM服务优化)
    • 引用描述: 作为专注于智能体工作流请求调度的研究,其目标与KVFlow互补。
  • [36] Chaofan Lin, et al. Parrot: Efficient serving of {LLM-based} applications with semantic variable. 2024, OSDI.

    • 引用位置: 相关工作 (LLM服务优化)
    • 引用描述: 作为专注于智能体工作流请求调度的研究,其目标与KVFlow互补。
  • [37-39] LangChain, 2025; Anthropic, 2024; Gao et al. 2024.

    • 引用位置: 相关工作 (智能体工作流框架)
    • 引用描述: 作为多智能体框架的例子。
  • [40] Guibin Zhang, et al. Cut the crap: An economical communication pipeline for llm-based multi-agent systems. 2024, arXiv.

    • 引用位置: 相关工作 (智能体工作流框架)
    • 引用描述: 作为在图级别对工作流进行变换(边剪枝)的例子。