技术进展

FluidPD实现LLM推理原地弹性调度

Heooo 10月07日12时02分 5 阅读

「arXiv 论文提出 FluidPD,面向预填充与解码分离的 LLM 服务架构。它通过 FluidToken 把部分预填充计算卸载到空闲的解码端,通过 FluidRole 在不重载模型的前提下原地切换 worker 角色,并借助轻量压力指标提前预警。在 Azure 生产负载上,其 SLO 达成率比静态 SGLang 最高提升 94.6 个百分点。」

大语言模型推理服务正在从单体部署走向架构拆分。预填充与解码两个阶段在计算特性上差异明显,前者以大规模矩阵运算为主,属于计算密集型;后者逐 token 生成,受限于显存带宽,更偏访存密集。两个阶段对应的服务等级目标也不相同,把二者拆分到不同 worker 上独立部署,已经成为业界较为常见的做法。arXiv 最新收录的论文提出了 FluidPD,试图解决这类分离式架构中一个长期被忽视的问题,即资源配置的弹性。

在现有的预填充与解码分离系统中,通常采用固定的预填充 worker 与解码 worker 配比,再配合请求路由把流量分发到各个 worker 上。这套方案在负载平稳时表现良好,但真实业务流量往往同时存在两类变化:一类是短时的突发尖峰,另一类是需要较长时间才能消化的需求比例漂移。当一个时刻配置得当的集群遇到比例变化时,原本合理的配比会迅速失配,即便集群其他位置仍有闲置容量,延迟类的 SLO 依然会被打破。论文指出,这种失配并不是容量不足,而是容量放错了位置。

常见的应对手段是自动扩缩容。但论文认为这类机制存在三个明显短板:反应速度偏慢,跟不上秒级的负载波动;需要额外准备备用 GPU,本质上是用资源冗余换稳定;并且它并不直接解决短时间尺度上的阶段失衡问题。换句话说,扩容能让集群整体变强,却无法让预填充和解码两侧的资源在当下就互相流动起来。

FluidPD 的思路是把弹性做进系统内部,提出了两个互补的机制。第一个是 FluidToken,负责处理短时的瞬时失衡。当解码侧出现空闲算力时,它会把一部分预填充计算卸载到解码 worker 上执行,卸载量有明确上界,从而不至于反过来拖慢解码本身。第二个是 FluidRole,负责处理持续性的失衡。它可以把正在运行的 worker 在预填充角色与解码角色之间原地重新分配,不需要重新加载模型,也不需要重启推理引擎,因此角色切换的代价被压得很低。

这两个机制并非盲目触发,而是由一组轻量级的压力指标来驱动。这些指标能够暴露预填充侧和解码侧的资源压力,并且是在压力真正演化为 SLO 违规之前就发出信号。这相当于给调度器提供了一个提前量,让它在延迟指标恶化之前就完成资源的再平衡,而不是等到用户请求已经超时之后再被动补救。

论文在来自 Azure 的生产 trace 负载上进行了评测。结果显示,相比静态配置的 SGLang,FluidPD 把整体 SLO 达成率最多提升了 94.6 个百分点,并且这一提升是在不额外增加 worker 供给的前提下取得的。这个数字的意义在于,它说明服务质量的改善可以来自调度与资源编排的精细化,而不必然依赖堆叠更多硬件。

对于正在构建或运维 LLM 推理服务的开发者而言,这项工作提供了几点值得关注的启示。其一,预填充与解码分离之后,配比不再是一个静态的部署参数,而是一个需要在线调节的运行态变量。其二,短时突发与长期漂移应当用不同的手段应对,前者适合细粒度的计算卸载,后者适合角色层面的重分配,把两者混为一谈往往会导致过度扩容或者反应迟滞。其三,评判弹性机制的标准不只是能否应对高峰,还包括它是否会牺牲解码侧的服务质量,FluidPD 用有界卸载的方式给出了自己的答案。

随着推理成本成为大模型落地的核心约束,围绕调度、编排与资源复用的系统层创新,很可能与模型能力本身同样重要。FluidPD 所代表的原地弹性思路,为分离式推理架构的进一步优化提供了一个可参考的方向。

# LLM推理 # Prefill-Decode分离 # SLO # 弹性调度 # arXiv论文

来源:Heooo AI工具导航