要解决的问题

大模型推理分两个阶段:

  • 预填充(prefill):处理输入提示,常有较高的矩阵计算强度,也可以分块执行。
  • 解码(decode):逐步生成 token,小批次时常受权重和 KV 缓存带宽限制;批次增大后也可能受计算或通信限制。

两者常见的负载特征不同,混合调度时长提示预填充可能拖慢正在解码的请求。但分离不是必然最优:低负载或网络较慢时,传输 KV 的成本可能超过收益,分块预填充等也是可选方案。

核心方法

把预填充和解码拆到不同的实例或资源池上,各自按需配置并行方式和资源规模。预填充完成后,通过高速网络把 KV 缓存传给解码实例。

代表工作

  • Splitwise(2023):把两个阶段分到不同的机器上,并探讨使用不同型号的硬件。
  • DistServe(2024):分别优化两个阶段的资源分配与并行策略,在满足延迟目标的前提下提高每卡吞吐。
  • Mooncake(2024):月之暗面 Kimi 的服务架构,以 KV 缓存为中心,利用 CPU 内存和 SSD 构建分布式 KV 缓存池。

开放问题

  • KV 缓存的传输开销。
  • 两类实例数量的弹性配比。
  • 与分布式 KV 缓存的协同。

参考资料

相关专题