

在当今的在线大语言模型服务场景中,无论是检索增强生成系统,还是复杂的智能体应用,我们都能观察到两种显著的模式。用户的请求往往由多个可复用的“片段”拼接而成,例如固定的系统指令、检索到的文档段落或工具调用的输出结果。与此同时,这些片段中的一小部分“热点”会在短时间内被大量请求反复使用。然而,现有的服务系统通常将请求调度和KV缓存管理视为两个独立的问题进行优化,未能协同利用这两种模式,导致系统性能无法充分发挥。
现有方法要么专注于通过调度将共享前缀的请求在时间上聚集,以提升缓存局部性;要么仅从KV缓存管理侧尝试复用片段。但当请求到达呈现高度倾斜分布时,这种割裂的优化方式会留下巨大的性能潜力未被挖掘——热点前缀可能在下一次匹配请求到达前就被迫从缓存中逐出,造成重复的预填充计算,最终拖慢用户感知的响应速度。
针对这一核心挑战,来自武汉大学和亚马逊的研究团队提出了一种全新的协同设计方案——PRISM。

论文标题:PRISM: FAST ONLINE LLM SERVING VIA SCHEDULING-MEMORY CO-DESIGN
论文链接:https://arxiv.org/pdf/2605.08581
要理解PRISM的设计初衷,我们首先需要剖析影响大语言模型服务响应时间的关键因素。对于一个用户请求,其“首词元响应时间”(TTFT)可以分解为三个主要部分:从请求到达至被后端处理的准入等待时间、模型执行预填充以生成缺失KV状态的预填充时间,以及从预填充完成到第一个词元返回的首词元生成时间。

图1:KV缓存无感知的保留策略(左图)。当缓存压力下,可复用锚点A被逐出,导致后续匹配请求无法命中缓存,必须重新计算。
其中,预填充时间是计算开销的大头。如果系统能够通过KV缓存命中请求的部分前缀,那么需要实际计算的词元数量就会减少,从而直接降低预填充时间。这里的“命中”要求非常严格:由于Transformer架构的因果注意力机制,只有当请求的序列化前缀与缓存中的某个前缀完全一致时,才能安全地复用其KV状态。
这就引出了问题的核心:调度器可以将共享前缀的请求安排得尽量靠近,但如果KV缓存管理器在下一个匹配请求到达前,因为内存压力而将那个热点前缀逐出,那么调度所做的努力就白费了。反之,如果缓存盲目保留所有前缀,又会导致内存迅速耗尽,同样影响性能。

图2:需求感知的KV缓存保留策略(右图)。系统根据调度器的需求提示,保护热点锚点A,逐出冷分支,从而为后续请求保留精确前缀命中的机会。
因此,一个高效的在线LLM服务系统需要满足三个关键的设计要求:片段级的管理粒度,以追踪比整个请求更可能复用的上下文片段;查询感知的调度,利用可复用前缀信息对请求进行排序和分组;以及需求感知的KV缓存保留,在内存压力下能够识别并保护那些即将被用到的共享前缀。
PRISM系统的核心思想,正是将请求调度与KV缓存管理进行协同设计,通过一个名为查询感知调度器的组件和一个名为需求感知基数树的组件,将两者紧密耦合。
查询感知调度器 负责在请求准入时进行智能排序。它维护着三个针对每个可复用片段的计数器:在队列中等待的请求数、当前正在后端活跃处理的请求数,以及根据当前候选批次预测的“即将被使用”的请求数。通过一个精心设计的加权公式,QAS为每个片段计算出一个优先级分数,这个分数严格遵循“活跃需求 > 未来批次复用 > 队列普遍性”的层级关系。

图3:查询感知调度器的工作流程示意图(图中蓝色区域)。请求根据其可复用片段骨架被分组到不同的“桶”中,调度器根据桶的得分决定哪些请求优先进入“热通道”批次。
基于这些优先级,QAS会对请求中可复用片段的顺序进行局部调整(将高优先级片段移到骨架前部),并据此为每个请求生成一个“桶签名”。共享相同签名(即共享相同顺序的高优先级片段)的请求会被分到同一个桶中。调度器接着根据桶的大小和桶内片段的平均效用为每个桶打分,并按照分数降序扫描,将请求填充到“热通道”批次中。为了防止某些罕见前缀的请求被无限期延迟(饥饿),QAS还会在每个批次中保留少量“冷通道”名额,以先进先出的方式服务最老的未选中请求。
需求感知基数树 是KV缓存管理层的核心扩展。它在标准的基数树结构之上,为系统提示、每个可复用片段以及私有后缀的边界处添加了“锚点”元数据。这些锚点记录了片段的类型、标识符以及从调度器获取的最新优先级快照。

图4:需求感知基数树的结构与保留/逐出过程(图中橙色区域)。锚点根据调度器提供的优先级被标记为“受保护”或“未受保护”,指导缓存逐出决策。
当需要回收KV缓存空间时,DART会根据一个精心设计的逐出键来决定牺牲哪个节点。其策略非常明确:首先逐出冷的私有后缀节点,然后逐出那些未被保护且优先级较低的可复用节点,最后才会考虑受保护的可复用锚点。这样,调度器关于“接下来哪些前缀最有用”的预测,就直接转化为了缓存层的保留决策,确保了热点前缀在关键时刻能够驻留在内存中。
研究团队在真实的RAG和智能体工作负载上对PRISM进行了全面评估,对比了包括SGLang、k-LPM和ContextPilot在内的多个先进基线系统。实验使用了Qwen3-4B-Instruct-2507和Llama2-13B模型,在单个NVIDIA A800 GPU上运行。
延迟与缓存复用率 的结果令人印象深刻。在不同负载下,PRISM始终提供了最低的首词元响应时间。平均来看,在Qwen3-4B模型上,PRISM将P99 TTFT(即99%请求的响应时间)相较于最强的基线降低了23.3%;在更大的Llama2-13B模型上,降低幅度达到了37.1%。如果与基础的SGLang相比,提升更是高达63.5%和80.8%。

图5:不同负载下各方法TTFT百分位数对比。PRISM(红色)在所有百分位(P50/P90/P95/P99)和两种模型规模(4B/13B)上均表现出最低的延迟。
这种延迟优势直接源于更高的KV缓存精确前缀命中率。PRISM在4B和13B模型上分别实现了约49.1%和39.5%的命中率,均显著高于其他基线方法。更高的命中率意味着更少的重复预填充计算,这正是PRISM调度-内存协同设计价值的直接体现。
服务拐点校准 进一步验证了理论分析。随着负载增加,系统的吞吐量会达到一个平台,而尾部延迟则会急剧上升,这个临界点被称为“服务拐点”。实验表明,PRISM通过提升命中率,有效地扩展了这个稳定区域的边界。例如,对于4B模型配置,PRISM能够维持约50请求/秒的吞吐,而其他方法在更低的负载下性能就开始恶化。

图6:Qwen3-4B模型服务拐点校准。左图显示PRISM的吞吐量在约50 QPS后达到平台;中图显示对应的尾部延迟急剧上升;右图显示增加提示长度会降低可持续吞吐并提高延迟。
消融实验 清晰地揭示了PRISM各个组件的贡献。当固定使用QAS调度器,仅替换后端的KV缓存保留策略时,使用PRISM完整DART策略的系统在缓存命中率和尾部延迟上均大幅优于使用传统LRU、LFU等策略的变体。这证明了调度器提供的需求提示对于智能缓存管理至关重要。同时,对“冷通道”配额的研究也表明,完全取消冷通道虽能最大化缓存命中率,但会导致罕见前缀请求的尾部延迟恶化,因此一个小的冷通道配额对于平衡效率与公平是必要的。

图7:后端键值缓存策略消融实验:左侧为精确前缀命中率,右侧为 99 分位首次令牌生成时延。
PRISM的设计并不局限于RAG场景。研究团队进一步在源自τ-bench的智能体工作负载上进行了测试。这类负载的提示中包含重复的工具模式定义、策略文本、数据库记录和确定性的工具输出,同样存在精确前缀复用的机会。

图8:不同Zipf指数下热点请求的分布。Zipf指数α控制着热点请求的时间集中度,α越大,请求越集中在少数热门文档上。
实验结果表明,PRISM的优势得到了保持。在智能体负载下,PRISM依然实现了最高的非全局精确前缀命中率(约0.75),并将P99 TTFT相较于最强基线降低了8.5%到24.9%。这证实了PRISM的核心机制具有普适性:它不关心可复用前缀具体来自检索文档还是智能体组件,只要系统能够在线估计这些重复、令牌一致的提示区域在近未来的需求,就能通过调度-内存协同设计来提升性能。
PRISM工作为大语言模型在线服务系统的优化提供了一个新的视角和有效的解决方案。通过将请求调度与KV缓存管理进行深度协同设计,并引入查询感知调度器与需求感知基数树,PRISM成功地将工作负载中存在的片段化与热点倾斜模式转化为实实在在的性能提升,显著降低了尾部响应时间。
这项工作也为我们分析特定硬件、负载和系统配置下的服务瓶颈提供了一个框架。当然,PRISM目前主要针对单GPU的固定设置,将其分析框架扩展为更通用的理论,以及探索多GPU、异构计算池等更复杂场景下的KV缓存放置与协同问题,将是未来有价值的研究方向。
在追求更低延迟、更高吞吐的大语言模型服务道路上,PRISM指明了一个关键方向:打破调度与内存之间的壁垒,让系统的不同部分能够围绕“接下来需要什么”这一共同目标进行协同,或许是解锁下一代高效服务系统的钥匙。
> 本文由 Intern-S2 等 AI 生成,机智流编辑部校对
-- 完 --

机智流推荐阅读:
1. Meta 开源 Sapiens2:人体视觉模型进入 5B 参数时代
2. 35B参数科学性能比肩万亿参数模型,『书生』科学大模型Intern-S2-Preview开源
3. 小米OneVL:首个超越显式推理的隐式推理模型,让自动驾驶规划又快又准
4. 大模型推理能力究竟如何产生的?人大、清华、小米EV联合研究揭示其本质,并提出无需标签的大模型推理诊断方法