

在大语言模型在线服务日益普及的今天,无论是智能问答、代码生成还是智能体交互,用户对响应速度的期待越来越高。一个理想的系统不仅要能同时处理大量请求,保证高吞吐量,还必须确保每个用户都能在可接受的时间内获得第一个输出词元,并享受流畅的后续生成体验。然而,现有的调度系统往往采用粗粒度的输出约束,难以在多请求竞争资源时做出精细权衡,导致资源利用效率低下,且难以对不同优先级的服务请求进行有效区分。
为了应对这一挑战,来自中山大学的研究团队提出了一种名为 SlidingServe 的新型调度系统。该系统通过滑动窗口驱动的动态分块策略,在保证严格服务质量的前提下,显著提升了系统的整体服务能力。

论文标题:Beyond Greedy Chunking: SLO-Aware Sliding-Window Scheduling for LLM Inference
论文链接:https://arxiv.org/pdf/2606.05933
研究背景:在线推理的吞吐量与延迟之困
大语言模型的在线推理服务通常采用迭代执行机制。每个请求的生命周期包含两个主要阶段:预填充阶段 和解码生成阶段。预填充阶段需要一次性处理整个输入提示,计算密集,耗时较长;解码阶段则逐个词元生成输出,单步计算量小,但对每次迭代的执行周期极其敏感。
为了平衡吞吐量与延迟,业界广泛采用了连续批处理和分块预填充技术。分块预填充将长提示拆分为多个小块,使其能与解码请求交错执行,避免单个长提示长时间阻塞整个生成流。这虽然提高了系统并发性,但也引入了新的调度难题:分块大小的选择直接决定了当前批次的执行时间。
分块过大:能加速长请求的预填充进度,但会延长当前迭代的延迟,增加解码请求错过其生成间隔期限的风险。 分块过小:能保护解码延迟,但可能导致GPU利用不足,恶化等待请求获取第一个词元的延迟。
因此,调度本质上变成了一个跨越多时间尺度、涉及多种请求类型的资源分配问题。此外,请求的调度顺序、批次内多个请求间的相互影响,都使得实现高效且公平的调度变得异常复杂。
单步调度的局限性与滑动窗口的引入
传统的面向服务等级目标的调度策略通常聚焦于当前轮次:根据当前解码请求剩余的“宽松时间”,计算出本轮允许的最大迭代时间,并选择一个不超过此约束的最大分块大小。这种“单步贪婪”策略看似合理,因为它试图在不违反当前截止期限的前提下,尽可能多地处理计算。
然而,大语言模型在线推理是一个由连续迭代组成的多阶段过程。当前轮次的“最大可用预算”并不等同于多轮迭代中的最大吞吐量或最低执行成本。根本原因在于,批次执行时间与分块大小并非简单的线性关系。不同的批次构成会导致GPU利用率、注意力计算和键值缓存访问时间的变化。
如果当前轮次用尽了所有宽松时间,虽然可能提高了当前步骤的执行效率,但会严重限制下一轮次的可用时间,导致其预算非常小,可能频繁退化为以解码为主的低效批次。从整体看,这种策略可能导致更高的总执行时间和更低的预填充效率。

图1:不同调度策略对比。单步贪婪策略在当前轮次用尽预算,导致下一轮次预算紧张;滑动窗口策略则进行联合优化,分配更均衡,最终处理了更多词元。
SlidingServe 的核心创新之一 SlidingChunker ,正是为了克服单步决策的短视问题。它将调度视角从单步决策扩展到连续两个迭代的滑动窗口决策。调度器不仅评估当前迭代是否满足最严格的延迟约束,还联合考虑与下一迭代的预算分配关系,通过搜索接近最优的预算分割,减少局部贪婪决策带来的累积误差。如图1所示,通过在当前轮次选择稍小的分块,为下一轮次预留更多宽松时间,从而允许执行更大的批次计算,最终在处理相同截止期限前完成了更多工作。
批次内请求调度:动态规划优化选择
即使通过滑动窗口确定了全局预算,另一个关键问题依然存在:这些预算应该分配给哪些请求?在大语言模型服务中,一个批次通常同时包含多个处于预填充阶段的请求。即使全局预算满足窗口级约束,由于批次执行时间过长,一些请求仍可能在其获取第一个词元的截止期限前违规。
这是因为GPU上的批次执行是原子性的。一个请求被放入批次,并不意味着它能立即生成其第一个词元;它必须等待整个批次执行完毕才能进入下一个状态。如果一个批次包含太多请求或批次规模过大,该轮的执行时间就会增加。对于那些临近其第一个词元截止期限的请求,即使它们在本轮被调度,也可能因为批次延迟超过了其剩余宽松时间而违规。
因此,批次内的请求选择不能简单地采用“尽可能填满预算”或直接丢弃所有可能导致违规的请求。SlidingServe 设计了 BatchConstructor 模块来解决这个问题。当预测原始批次的执行时间可能导致部分请求违规时,BatchConstructor不再直接执行完整批次,而是将批次构建转化为一个容量受限的请求选择问题:在给定的延迟约束下,选择一组可以在本轮进行预填充的请求,从而在降低服务等级目标违规风险的同时,最大化本轮调度的收益。

图2:批次内请求调度策略对比。原始大批次会导致三个请求违规,而BatchConstructor通过动态规划选择,只执行部分请求,确保了两个关键请求的服务等级目标,并将另一个请求留待后续迭代处理。
SlidingServe 系统架构与核心组件
SlidingServe 的整体架构形成了一个包含“状态抽象、风险评估、预算控制、组合优化”的闭环决策过程。系统维护等待队列、预填充队列和解码队列,以描述当前时刻的完整服务状态。

图3:SlidingServe 系统架构图。系统通过多级优先级排序器、违规检查器、滑动窗口分块器和批次构建器等模块协同工作,实现精细化调度。
1. 批次延迟预测器
为了支持滑动窗口预算搜索和批次请求选择,SlidingServe 构建了一个轻量级的批次延迟预测器,用于估计给定调度决策下单个迭代的执行延迟。预测器基于显式特征工程,将影响批次延迟的主要因素分解为解码开销、预填充开销、缓存状态、全局负载及交互项,构建了一个低维特征向量。它采用结合离线初始化与在线增量更新的训练方式,并能根据批次场景(纯解码、纯预填充、混合)调用不同的专家模型,以提高预测准确性。
2. 多级优先级排序器
在混合负载场景下,确定请求的服务顺序是一大核心挑战。SlidingServe 设计的多级优先级排序器,综合考虑了请求的服务等级目标紧迫性、剩余预填充工作量以及请求保护状态。它为每个预填充请求构建了一个字典序优先级密钥,首先保护已标记需要保护的请求,其次调度相对于宽松时间剩余工作量更大的紧急请求,最后在风险级别相同时优先调度剩余预填充词元较少的请求,以增加在有限预算内完成预填充的概率。
3. SlidingChunker 滑动窗口分块器
该模块是系统的核心调度器,它联合优化当前迭代和下一迭代之间的请求分配。算法将解码请求的服务等级目标宽松时间视为一个时间滑动窗口,通过逆向求解和离散三元搜索,找到使连续两个窗口总预测执行时间最小化的最优预算分配。这体现了滑动窗口的核心思想:当前迭代不应只追求当前轮次的安全,也不应过度牺牲预填充,而应在当前迭代与下一迭代之间取得平衡。
4. BatchConstructor 批次构建器
当存在违规风险时,此模块动态选择本轮实际应执行的请求子集。其核心思想是将风险请求作为“锚点”,以其第一个词元截止期限的宽松时间作为本批次可接受的最大执行时间,并将其转换为可用词元容量。然后,将批次构建问题转化为一个0/1背包问题,在剩余容量内选择能最大化调度收益的请求集合。通过这种动态规划方法,批次构建器优先将有限预算分配给最有可能违规的请求,从而提高了服务等级目标的达成率。
性能评估:显著提升服务能力与服务质量
研究团队基于 vLLM 框架实现了 SlidingServe,并在多种负载条件下进行了系统评估,使用的模型包括 Llama3-8B 和 Qwen2.5-7B,数据集涵盖对话数据和长文本摘要数据。
服务能力提升
实验以“优质吞吐量”(在满足延迟目标的前提下每秒服务的请求数)作为关键指标。如图4所示,与先进的调度系统 QoServe 相比,SlidingServe 在不同数据集和模型配置下,将服务能力提升了 9.7% 到 30%。在长提示较多的场景中,提升尤为显著,这得益于其多级优先级排序和滑动窗口优化能更好地处理长预填充请求与解码请求间的复杂干扰。

图4:在不同模型、硬件和数据集下的最大优质吞吐量对比。SlidingServe 表现最优。
高负载下的延迟与违规率
在高负载情况下,SlidingServe 在保持与基线相近的中位延迟的同时,显著降低了尾部延迟的快速增长。更重要的是,如图5所示,在各种高负载场景下,SlidingServe 的服务等级目标违规率均低于基线系统,相比 QoServe 最高可降低 53%。这得益于其策略会降低已违规请求的调度优先级,将资源留给仍有希望满足截止期限的请求,从而实现了更高的整体服务等级目标满足率。

图5:五个数据集在高负载下的延迟和服务等级目标违规情况。
瞬态过载场景与消融实验
在模拟真实生产流量波动的瞬态过载测试中,SlidingServe 的累计违规数增长更为平缓,能快速适应负载突变,其整体违规率比 QoServe 低 23.74%。消融实验进一步验证了各个组件的贡献:SlidingChunker 带来了 16.7% 的吞吐量提升,多级优先级排序器贡献了 5.7%,批次构建器贡献了 5.4%。在高负载下,后两者的效益更加明显。
总结与展望
SlidingServe 通过引入滑动窗口驱动的动态分块、多级优先级排序以及批次内动态请求选择,有效解决了大语言模型在线推理服务中吞吐量与服务质量之间的精细权衡难题。它克服了传统单步调度策略的短视性,并通过更细粒度的资源分配,在多种负载条件下实现了服务能力与服务等级目标合规性的双重提升。
这项工作为大语言模型推理服务系统的设计与优化提供了新的思路。随着模型和应用的不断演进,如何进一步降低调度本身的开销、适应更复杂的服务等级目标体系、并与异构硬件环境更高效地协同,将是未来值得探索的方向。SlidingServe 的代码开源,为社区研究和工业实践提供了有价值的参考。
> 本文由 Intern-S2 等 AI 生成,机智流编辑部校对
-- 完 --
机智流推荐阅读:
1.
2.
3.
4.
cc | 大模型技术交流群 hf | HuggingFace 高赞论文分享群 lc|LangChain 技术交流群 code | AI Coding 交流群 具身 | 具身智能交流群 硬件 | AI 硬件交流群 推理 | AI 推理框架交流群 Agent | Agent 技术交流群