LLM Serving Optimization with Variable Prefill and Decode Lengths
本文通过提出 Sorted-F 算法,解决了在固定 KV 缓存约束下具有异构请求长度的离线大语言模型(LLM)推理调度这一 NP-hard 问题,该算法实现了常数因子近似保证,并显著降低了端到端延迟。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你正在经营一家繁忙的餐厅厨房(即 LLM 服务器),但你必须遵守一个非常具体的规则:你的操作台空间(即 KV-cache 内存)是有限的。
在这个厨房里,每份订单都有两个部分:
- 订单清单(预填充/Prefill): 顾客递给你一份长短不一的食材清单。在开始烹饪之前,你必须先阅读完整个清单。这会立即占用一定的操作台空间。
- 烹饪过程(解码/Decode): 你一次只能烹饪一道菜的一个步骤。每当你往锅里加入一种新食材时,锅就会变大一点,从而占用更多的操作台空间。
目标是尽可能快地让所有顾客吃上饭(最小化延迟/Latency)。
问题所在:“一刀切”的错误
以前,厨师们认为最好的策略很简单:“先做小菜。” 如果顾客点了一份极小的开胃菜,就先做它,然后再去做那份巨大的牛排。
但本文的作者发现了一个陷阱。在现实世界中,订单是非常杂乱的:
- 订单 A: 菜单非常长(输入长),但菜品很小(输出短)。仅仅为了阅读菜单就需要占用大量操作台空间,但烹饪过程瞬间就能完成。
- 订单 B: 菜单很短(输入短),但是一道慢炖的炖菜(输出长)。开始时占用的空间很少,但随着时间推移,锅里的体积会不断增长。
如果你遵循旧的“先做小菜”规则,你可能会陷入困境。你可能会因为这道炖菜在刚开始时看起来很“小”而先开始做它,结果却发现它一直在霸占你的操作台空间,导致你不得不等待数小时才能开始处理其他订单。论文证明,如果混合了这些不同类型的订单,旧的规则会表现得极其糟糕,而且要找到完美的调度方案在数学上是无法瞬间解决的(它是 NP-hard 问题)。
解决方案:效率得分(Sorted-F)
作者发明了一种全新的决策方式,称为 Sorted-F。它不再仅仅关注菜品的大小,而是创建了一个特殊的效率得分(即 F-指标)。
你可以把这个得分看作是一个“性价比”计算器。它在问:
“如果我现在把这一组订单放在操作台上,每分钟使用单位操作台空间能完成多少份菜品?”
它平衡了两个要素:
- 批处理大小(Batch Size): 操作台上一次能容纳多少个订单?
- 烹饪时间(Cooking Time): 锅里的体积会持续增长多久?
策略如下:
- 分组(Grouping): 算法观察积压的订单,并尝试形成“批次”(即一起烹饪的一组订单)。
- 评分(Scoring): 它为每一个可能的组合计算效率得分。
- 选择(Selection): 它挑选出得分最高(数值最低)的那一组,并开始烹饪。
- 动态调整(Dynamic Adjustment): 一旦组内某道菜完成,它的体积就会缩小,从而立即释放空间供新订单加入。
结果:为什么它有效
作者在真实世界的数据上测试了该方法,其中混合了短消息(如点咖啡)和长文档摘要(如烹饪一场十道菜的盛宴)。
- 旧方法(最短优先): 会被那些漫长且缓慢的菜品卡住,从而阻塞了操作台。
- 新方法(Sorted-F): 找到了完美的平衡。它可能会开始做一些长耗时的菜,前提是这些菜能与许多短菜很好地搭配在一起,从而确保操作台始终处于高效运转的状态。
神奇的数字:
论文从数学上证明,他们的这种新方法最多只会比“绝对完美调度”(这在实际中是无法计算的)差 48 倍。然而在实践中,它的表现几乎接近理论上的最优水平,与标准方法相比,它能大幅缩减等待时间(有时甚至快了 4 到 5 倍)。
厨房实操技巧
由于每秒钟都去计算完美的组合对于真实的厨房来说太慢了,作者还针对不同情况开发了三个“作弊码”(近似算法):
- 精确计算器: 适用于小型厨房(订单较少),它每次都能找到完美的组合。
- 局部交换器: 适用于中型厨房,通过对一个好的初始计划进行微调来使其变得更好。
- 快速选择器: 适用于大规模、混乱的大型厨房,它使用快速且粗略的估计来获得一个“足够好”的答案。
他们还展示了,即使你不知道一道菜具体要煮多久(因为你只能靠猜),他们的系统也能灵活应对。如果一道菜比预期煮得更久,系统会通过移除操作台上最不重要的菜来腾出空间,而不是让整个系统崩溃。
核心结论
当你面对混合了短任务和长任务、且受限于有限内存的情况时,你不能只挑最短的任务去做。你需要一个聪明的系统,能够观察整个组合以及它们如何相互配合。Sorted-F 算法正是这样做的,它就像一位大师级厨师,深谙如何布置炉灶上的锅具,从而以最快的速度将晚餐端上桌。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。