Prefill-decode(PD)解聚已成为大规模 LLM 服务的标准架构,但在实际部署中,其边界仍然由 KVCache 传输能力决定。在传统稠密注意力模型中,预填充产生的大量 KVCache 流量将预填充和解码紧密耦合在同一个高带宽网络域内,限制了异构部署和资源弹性。近年来,混合注意力架构大幅减少了 KVCache 大小,使得跨集群 KVCache 传输日益可行。然而,仅有更小的 KVCache 并不足以使异构跨数据中心 PD 服务变得实用:实际工作负载仍然具有突发性,请求长度高度偏斜,前缀缓存分布不均,集群间带宽波动。完全外部化预填充的朴素设计仍然可能遭受拥塞、排队不稳定和利用率低下的问题。
Moonshot AI 与清华大学的研究者提出了 Prefill-as-a-Service(PrfaaS),这是一种跨数据中心服务架构,能够将长上下文预填充选择性卸载到独立的计算密集型预填充集群,并通过商品以太网将生成的 KVCache 传输到本地 PD 集群进行解码。该设计不再将减少的 KVCache 视为充分条件,而是将模型侧的 KV 效率与系统侧的选择性卸载、带宽感知调度和缓存感知请求放置相结合。这种设计消除了异构加速器共享同一低延迟 RDMA 网络的要求,使预填充和解码容量能够跨松耦合集群独立扩展。
为什么需要跨数据中心 KVCache
在传统 PD 解聚部署中,预填充和解码节点通过高带宽、全_mesh 网络(如 RDMA)通信,因此网络相对于预填充计算远非瓶颈。然而,在跨集群 PD 中,集群间带宽与模型 KV 吞吐量的关系直接决定了跨数据中心 KVCache 是否可行。对于 N 个 GPU 的预填充集群,最小出口带宽为 B_out = (N/P) * Φ_kv (L_avg),其中 P 是并行度(每个实例的 GPU 数量),L_avg 是实际卸载到 PrfaaS 集群的请求的平均未缓存输入长度。值得注意的是,B_out 不仅取决于 Φ_kv(由模型架构和硬件决定),还取决于 L_avg,而 L_avg 由请求长度分布、前缀缓存命中率和路由策略决定。
在稠密注意力模型中,MiniMax-M2.5 在 32K token 时产生约 60 Gbps 的 KVCache,需要远超典型跨数据中心以太网容量的出口带宽。这正是传统 PD 解聚仍然在操作上绑定到紧密集成网络域的原因。相比之下,采用混合架构的模型 KV 吞吐量下降一个数量级,将带宽需求降至现代数据中心间链路可以维持的水平。Ring-2.5-1T 只需要约 170 Gbps 的专用线路容量,即使在 10,000 GPU 规模的数据中心,聚合出口带宽也仅约 1.8 Tbps,远在现代数据中心间链路容量之内。
PrfaaS-PD 架构核心设计
PrfaaS-PD 架构包含三个子系统:计算、网络和存储。计算子系统由多个集群组成,每个集群仅包含同构硬件,因为不同芯片类型通常难以在同一设施内共置。集群分为两类:本地 PD 集群执行 PD 解聚服务,可以端到端完成请求推理;PrfaaS 集群为增量未缓存长度超过路由阈值的请求提供选择性远程预填充容量。预填充完成后,生成的 KVCache 通过商品以太网传输到本地 PD 集群进行解码,而短请求或带宽不友好的请求保留在本地 PD 路径上。
网络子系统跨越两层:集群内网络使用 RDMA 进行延迟敏感的集体通信和 PD KVCache 传输,而集群间链路依赖 VPC 对等或专线进行跨数据中心 KVCache 传输。存储子系统位于每个集群内,构建跨所有机器的分布式混合前缀缓存池。全局 KVCache 管理器维护所有集群的 KVCache 元数据。在此基础设施之上,全局调度器根据请求特征、网络条件和缓存分布将请求路由到集群和节点,以在跨集群带宽约束下最大化端到端吞吐量。
混合前缀缓存池允许服务系统将 KVCache 卸载到集群内的分布式主机内存和 SSD,大幅提高前缀缓存命中率。传统前缀缓存池设计用于单一 KVCache 类型,并在 token 或块级别执行匹配和驱逐。在混合模型中,线性注意力或 SWA 层的循环状态是请求级的:其大小与输入长度无关,且仅在缓存长度完全匹配时才能重用。相比之下,全注意力层的 KVCache 是块级的:它们随输入长度线性增长并支持部分前缀匹配。这种异质性挑战了传统的全层统一 KVCache 存储范式。
双时间尺度调度策略
调度是使跨数据中心解聚成为可能而非仅在架构上可行的核心。在理论上,混合模型架构将 KV 吞吐量降低到商品以太网链路可以维持跨集群传输的程度,稳态分析可以通过优化路由阈值和预填充 - 解码实例比来最大化集群吞吐量。然而在实践中,流量变化和突发性可能导致 PrfaaS 出口的瞬时拥塞和队列积累。此外,集群维护的大型前缀缓存的批量传输可能进一步增加跨集群链路压力。
为处理这种动态环境,PrfaaS 设计了双时间尺度调度算法,将跨集群带宽和吞吐量作为主要约束,将请求路由和资源分配的影响因素分离为短期和长期类别,并为每个类别制定专门策略。短期策略采用带宽和缓存感知的路由:PrfaaS 集群有一个带宽施加的吞吐量上限 B_out/S_kv (l_long)。当集群接近此上限时,拥塞在出口链路积累。调度器因此持续监控 PrfaaS 出口利用率和请求队列深度。当利用率接近阈值或排队激增时,触发短期路由调整。
通过仅将足够长的请求路由到 PrfaaS,调度器降低每请求带宽需求并避免在带宽上限附近产生拥塞。对于具有前缀缓存命中的请求,调度器必须共同考虑缓存亲和力和带宽可用性。当带宽稀缺时,每个集群的前缀缓存独立评估:如果 l_total - l_pd ≤ t,请求在 PD-P 本地预填充,否则卸载到 PrfaaS。当带宽丰富时,计算成为稀缺资源,跨集群缓存传输可以减少冗余计算。
长期策略进行 traffic 驱动的分配再优化:在更长的时间尺度上,流量变化在管道阶段之间造成持续的不平衡。当 Θ_prfaas + Θ_pd-p 远小于 Θ_pd-d 时,预填充是系统瓶颈;当前者远大于后者时,解码是瓶颈。调度器通过监控每个阶段的队列深度和利用率来识别约束绑定。由于此时间尺度的流量变化是渐进的且通常是周期性的,调度器定期重新评估负载平衡,并在 PD 集群内将节点在预填充和解码角色之间转换,调整 N_p 和 N_d 以恢复最优性条件。
实践参数与监控清单
基于 1T 参数混合架构模型的案例研究,PrfaaS-PD 配置(32 个 H200 GPU 用于 PrfaaS,64 个 H20 GPU 用于本地 PD)实现了相比 96-H20 同构 PD 基线提高 54% 的吞吐量,同时 P90 TTFT 降低 64%。这些收益源于将计算密集型长上下文预填充卸载到高吞吐量 PrfaaS 加速器。路由阈值 t=19.4K 时,约 50% 的请求(较长的那些)被卸载到 PrfaaS 集群,聚合 PrfaaS 出口负载仅约 13 Gbps,仅消耗 100 Gbps 以太网链路的 13%,确认了混合架构模型的 KVCache 可以通过适当调度在商品以太网上传输并留有充足余量。
部署时需监控的关键指标包括:PrfaaS 集群出口带宽利用率(阈值建议保持在 70% 以下以应对突发流量)、预填充节点与解码节点的吞吐比(理想情况下生产者总吞吐量等于消费者吞吐量)、请求队列深度(短期调度触发阈值)、前缀缓存命中率(影响实际需要传输的 KVCache 量)以及 TTFT 和解码延迟的 P50/P90 分布。
资料来源
本文主要参考 Moonshot AI 与清华大学联合发布的论文《Prefill-as-a-Service: KVCache of Next-Generation Models Could Go Cross-Datacenter》(arXiv:2604.15039)。
本文仅代表个人观点,供学习交流使用。