[控场AI]
· 6 分钟阅读· 3,160 字

LLM路由策略如何平衡缓存复用与排队时间

LLM路由策略如何平衡缓存复用与排队时间

LLM路由的核心是在缓存复用与排队时间之间实时权衡,冷副本有时反而更快。

文章指出,LLM推理路由的关键矛盾在于缓存复用与排队时间的取舍:缓存命中虽能大幅节省预填充计算,但按副本本地保存的KV缓存意味着追求复用可能让请求排入更长的队列。文章对比了四种路由策略——轮询、最短队列优先、缓存感知和混合成本模型,各自在缓存与队列间的权重不同。反直觉之处在于,当热副本队列过长而预填充本身较快时,选择空闲的冷副本反而能降低总延迟,存在明确的决策临界点。文章由此得出结论:缓存不是免费的胜利,缓存亲和性与负载均衡天然对立,路由质量取决于对预填充耗时、排队延迟和缓存命中率的准确成本建模。

在大规模LLM推理服务中,一个看似微小的调度决策——将请求路由到哪台后端副本——会显著影响成本、延迟和吞吐量。当用户反复发送相同或高度相似的提示词时,路由不仅要考虑哪台机器空闲,还要考虑哪台机器已经缓存了这段上下文。缓存复用能省下大量预填充计算,但追求复用可能让请求排到更长的队列里。这个矛盾正是LLM路由器设计的核心难点。

LLM Router 缓存与队列权衡

为什么缓存复用与排队时间会冲突

LLM推理通常分为两个阶段:预填充(prefill)处理输入提示词,解码(decode)逐token生成输出。预填充的计算量与提示词长度成正比,是延迟和算力的主要消耗点之一。如果某台副本刚刚处理过相同前缀的请求,其KV缓存中仍保留着对应的键值状态,后续请求可以直接跳过这部分计算。

问题在于,缓存是按副本本地保存的。当路由器为了复用缓存而把请求定向到某台“热”副本时,这台副本可能正在处理其他任务,新请求只能排队等待。相反,一台“冷”副本虽然需要完整执行预填充,但它可能是空闲的,能立即开始工作。

原文用一句话概括了这种张力:“four routing strategies, one repeated prompt, and the point where a cold replica wins.” 四种路由策略面对同一个重复提示词时表现不同,而在某些临界点上,选择冷副本反而更快。

KV缓存是理解全文的关键概念。在Transformer架构中,自注意力机制会为每个已处理的token计算一组键(Key)与值(Value)向量,供后续token在生成时查询。解码阶段每生成一个新token,都要重新用到此前所有token的KV向量,而这些向量的计算量与上下文长度成正比。KV缓存就是把已经算好的KV向量存在显存里,避免重复计算。它的大小随模型层数、注意力头数、头维度和序列长度线性增长,因此对于长上下文和长对话,单个请求的KV缓存可达数GB,是显存的主要占用者之一。也正因为它占显存、按副本本地保存,才会与调度、淘汰、亲和性等问题紧密耦合,成为路由决策里那个既能带来收益又必须付出代价的资源。

四种典型路由策略

原文讨论了四种路由思路,它们对缓存和队列的权重各不相同:

1. 轮询(Round Robin)

最朴素的做法,把请求依次分发给各副本。它完全忽略缓存,队列分布相对均匀。在提示词重复率低、各副本负载相近时,轮询简单可靠;但面对重复提示词,它无法利用任何已有缓存,预填充成本始终全额支付。

2. 最短队列优先(Least Queue / Least Loaded)

路由器选择当前排队请求最少的副本。这能最小化等待时间,但同样不看缓存。当某台副本恰好缓存了请求前缀却因排队较长而被跳过时,系统会白白浪费一次复用机会。

3. 缓存感知路由(Cache-Aware)

路由器优先把请求发给缓存中已存在相同前缀的副本。命中缓存时预填充几乎为零,首token延迟大幅下降。代价是如果该副本正忙,请求要排队;而且缓存有淘汰机制,命中的前提是缓存尚未被挤出。

4. 混合策略(Hybrid / Cost-Based)

把缓存收益与队列等待折算成统一成本。例如估算“命中缓存节省的预填充时间”是否大于“额外排队时间”,再决定去热副本还是冷副本。这是理论上最优的方向,但需要准确的成本模型和实时负载信息。

**预填充与解码的分离(prefill-decode disaggregation)**是理解路由权衡的另一背景。由于预填充是计算密集型、处理的是长序列并行计算,而解码是访存密集型、逐token串行生成,二者对硬件资源的需求差异很大。近几年出现的分离式架构把这两个阶段放到不同的实例或资源池中执行,让预填充节点专注吞吐、解码节点专注低延迟。在这种架构下,缓存(尤其是KV缓存)需要在两者间传输或共享,路由决策不再只是"发给哪台机器",还要考虑预填充结果如何传递给解码实例、传输开销是否抵消了缓存复用收益。原文讨论的四类策略在单体架构中已足够复杂,在分离式架构下则会叠加缓存迁移这一新的成本维度。

冷副本何时胜出

直觉上,缓存命中总是好事。原文强调的“the point where a cold replica wins”说明并非如此。

设想一个场景:热副本缓存了目标前缀,但队列里已有多个长请求,预计等待若干秒;冷副本空闲,执行完整预填充只需较短时间。如果“预填充耗时 < 排队等待”,那么去冷副本总延迟更低。

这就产生了一个决策阈值。路由器需要比较两个量:

  • 去热副本:排队时间 + 极短的预填充(缓存命中)
  • 去冷副本:几乎为零的排队 + 完整预填充

当热副本队列足够长、而预填充又足够快时,冷副本成为更优解。原文正是要刻画这个临界点,说明单纯“缓存优先”或“队列优先”都不够。

缓存淘汰策略决定了"命中"是否可能发生。副本上的KV缓存空间有限,新请求不断涌入,必然要按某种规则回收旧缓存,常见做法包括LRU(淘汰最久未使用)、LFU(淘汰访问最少)以及考虑前缀长度或重计算代价的加权方案。这意味着即便某台副本曾处理过相同前缀,只要其缓存已被新请求挤占,命中率就会下降,"缓存感知路由"的有效性也随之波动。前缀缓存(prefix caching)等机制通常还会对缓存按公共前缀做共享和去重,以提升多请求共享系统提示词时的复用率。因此路由器的成本模型若只假设缓存恒定命中,就会高估热副本收益,在缓存频繁淘汰的高压时段做出错误决策。

对推理基础设施的启示

这套分析给LLM服务带来几个实际结论:

缓存不是免费的胜利。 缓存复用带来的收益必须扣掉潜在的排队成本,尤其在负载不均衡时。

负载均衡与缓存亲和性天然对立。 缓存亲和(cache affinity)把请求拉向同一批副本,容易造成热点;纯负载均衡又把请求打散,牺牲复用。路由器要在两者间做动态权衡。

成本模型决定路由质量。 混合策略的效果取决于预填充耗时、排队延迟、缓存命中率等估算是否准确。这些参数随模型、硬件、请求分布变化,静态配置往往次优。

重复提示词场景收益最大。 多轮对话、共享系统提示词、模板化任务等重复度高的负载,缓存感知路由的价值最明显,也最需要精细的阈值判断。

**缓存亲和性(cache affinity)**与负载均衡的对立,是分布式系统里的经典议题,其思想可追溯至早年Web缓存、数据库分区与CDN调度的实践。在传统场景中,缓存亲和常通过一致性哈希把同一用户的请求固定到同一节点,以提升命中率,代价是节点负载不均时的热点问题。LLM路由与之相似但更复杂:请求前缀的热度分布高度动态,且缓存收益(预填充节省的时间)随提示词长度变化,难以用静态哈希刻画。因此业界倾向于用量化成本函数做在线决策,并结合工作窃取、请求迁移或缓存复制等机制缓解热点。理解这层类比,有助于把LLM路由看作分布式缓存调度的一个新实例,而非孤立问题。

小结

LLM路由不是简单的“找空闲机器”或“找有缓存的机器”,而是在缓存复用与排队时间之间做实时权衡。四种策略各有取舍,而冷副本在特定条件下优于热副本这一反直觉结论,提醒我们:最优路由取决于对预填充成本与队列延迟的准确建模。对构建推理服务的团队而言,把缓存命中收益与排队代价放进同一个成本函数,比单独优化任何一项都更接近真正的低延迟。

#LLM路由#缓存复用#排队时间#KV缓存#推理服务#预填充#负载均衡#cache affinity
分享:

相关推荐