从 PagedAttention 到 Prefill-Decode 分离的深度解析
2026/8/9 11:32:15 网站建设 项目流程

大模型推理架构演进:从 PagedAttention 到 Prefill-Decode 分离的深度解析

本文从大模型推理的两阶段计算特性出发,系统拆解 PagedAttention、连续批处理的核心原理,深入分析 Prefill-Decode 分离架构(DistServe、Splitwise、Mooncake)的设计哲学,并结合 vLLM Wide-EP 与 DeepSeek 生产部署案例,探讨 2025-2026 年推理基础设施的前沿趋势。

一、推理性能的瓶颈:Prefill 与 Decode 的不对称性

理解大模型推理的所优化技术,首先要回到一个根本事实:自回归生成包含两个计算特性截然不同的阶段

Prefill 阶段负责处理用户输入的完整 prompt。以一个 4096 token 的输入为例,模型需要做一次完整的前向传播,涉及大规模矩阵乘法。此时 GPU 的算术强度(FLOP/byte)约在 200-400 之间,远超 H100 的内存带宽屋顶线,属于典型的**计算受限(compute-bound)**场景,GPU 利用率可以接近峰值。

Decode 阶段则截然不同。每一步只生成一个 token,但需要读取全部历史 KV Cache 和模型权重才能计算下一个 token。算术强度骤降至约 60-80 FLOP/byte,GPU 实际利用率仅 20%-40%,属于**内存带宽受限(memory-bandwidth-bound)**场景。

这两阶段的不对称性,是后续所有推理优化技术的出发点。PagedAttention 解决的是 Decode 阶段的显存管理问题,连续批处理解决的是两阶段混合调度问题,而 Prefill-Decode 分离架构则从根本上解除了两阶段的资源耦合。

二、PagedAttention:操作系统级的 KV Cache 管理

2.1 传统方案的碎片化困境

在 PagedAttention 出现之前,推理引擎为每个请求预分配一段连续的 KV Cache 显存空间。这种方案存在两个严重问题:

  • 内部碎片:预分配空间按请求可能的最大序列长度预留,但实际生成往往远短于上限,reserved 但未用的显存白白浪费。实测中,内部碎片导致约 60%-80% 的显存被浪费。
  • 外部碎片:请求不断创建和销毁,显存中出现大量不连续空洞,新请求可能因找不到足够大的连续块而失败,即使总剩余显存充足。

2.2 虚拟内存思想的核心映射

vLLM 的 PagedAttention 借鉴了操作系统的虚拟内存分页机制,核心设计分三步:

第一步:物理块划分。将 KV Cache 的存储空间划分为固定大小的物理块(Block),每个 Block 存储固定数量 token 的 Key 和 Value 张量。

第二步:页表映射。每个请求维护一张页表(Page Table),记录逻辑 token 序列到物理块的映射关系。一个请求的 KV Cache 可以分散存储在多个不连续的物理块中。

第三步:按需分配与回收。物理块按需分配——请求生成新 token 时才申请新块;请求完成后,其所有物理块立即回收到全局池,供其他请求复用。

这一设计彻底消除了内部碎片(块按需分配,不多预留)和外部碎片(物理块不要求连续,任何空闲块都可复用)。在 vLLM 的实验中,PagedAttention 将 KV Cache 的显存利用率从约 20%-40% 提升至接近 100%。

2.3 共享前缀的额外收益

PagedAttention 的页表设计还带来了一个意外收获:共享前缀复用。当多个请求共享相同的 system prompt 或 few-shot 示例时,它们可以映射到同一组物理块,只计算一次 KV Cache 即可跨请求复用。这一思路后来被 SGLang 的 RadixAttention 进一步发扬光大。

三、连续批处理:让 GPU 永不空闲

3.1 静态批处理的短板

传统推理引擎采用静态批处理:收集一批请求,凑满 batch size 后一起送入 GPU 执行,等待所有序列生成完毕才释放资源。问题在于,同一 batch 中各请求的生成长度差异巨大——一个生成 10 token 的短请求和一个生成 500 token 的长请求被绑定在一起,短请求完成后必须空等长请求,GPU 在这段时间内大量算力被浪费。

3.2 动态插入与移除

连续批处理(Continuous Batching,又称 Inflight Batching)在每个解码迭代步的边界上做两件事:

  1. 移除已完成请求:任何已生成 EOS token 或达到长度上限的请求,立即从 batch 中移除,释放其物理块。
  2. 插入新到达请求:新到达的请求在当前迭代步开始前被加入 batch,立即开始 prefill。

这种"逐步动态调整"使 GPU 在突发流量下无需手动批处理逻辑即可维持高利用率。与 PagedAttention 配合时,连续批处理尤其强大——因为 PagedAttention 让每个请求的 KV Cache 可以独立管理,新请求的加入不会干扰已有请求的内存布局。

3.3 实测性能影响

在 H100 上的基准测试中,连续批处理使 vLLM 在 100 并发下的吞吐量达到 2400 tokens/s,相比静态批处理提升约 3-5 倍。TensorRT-LLM 在相同场景下达到 2780 tokens/s,领先约 13%,这得益于其编译型引擎对 kernel 的深度优化。

四、Prefill-Decode 分离架构:突破资源耦合瓶颈

4.1 共置系统的干扰问题

在传统的共置(colocated)系统中,Prefill 和 Decode 交替运行在同一组 GPU 上。连续批处理虽然提高了利用率,但带来了一个隐蔽但严重的问题——ITL(Inter-Token Latency)尖峰

当一个新的长 prompt 到达并开始 prefill 时,大量计算资源被 prefill 占据,正在进行的 decode 迭代被迫等待。用户体验上,这表现为 token 流式输出的"停顿-突发-停顿"模式:正常每 50ms 输出一个 token,突然卡顿 500ms,然后一口气吐出多个 token,再继续卡顿。

此外,资源分配也被耦合:GPU 显存、并行策略、batch size 必须同时服务两种工作负载,无法同时为 prefill 和 decode 各自找到最优配置。

4.2 DistServe:Goodput 驱动的资源分配

DistServe(OSDI 2024,北大/UCSD/StepFun)首次系统化地提出了分离式推理的框架。其核心贡献有三:

独立资源分配。Prefill 和 Decode 被分配到独立的 GPU 集合,各阶段独立选择最优的并行策略和 batch size。Prefill 集群配置为高 FLOPS 利用率,Decode 集群配置为高显存带宽利用率。

带宽感知放置算法。Prefill 完成后需要将 KV Cache 传输给 Decode worker,传输延迟是分离架构的关键开销。DistServe 的放置算法在带宽充足时让 KV 传输与计算重叠隐藏延迟,在带宽受限时调整放置策略减少传输量。

Goodput 指标。DistServe 引入了 Goodput 概念——系统在满足指定 TTFT(首字延迟)和 TPOT(每 token 延迟)目标前提下能承受的最大请求速率。这比单纯追求 tokens/s 更贴近真实用户体验。

实测结果:聊天机器人场景 Goodput 提升 2.0-3.41 倍,代码补全 3.2 倍,摘要场景 4.48 倍。系统级达到 7.4 倍请求吞吐,SLO 约束收紧 12.6 倍。

4.3 Splitwise:异构硬件的逐层流水线

Microsoft Research 的 Splitwise(ISCA 2024)从硬件成本视角切入,提出了异构硬件策略

  • Prefill 集群使用高 FLOPS 的最新 GPU(如 H100/B200),匹配计算受限特性。
  • Decode 集群使用大 HBM 容量、高带宽但 FLOPS 相对较低的成本效益 GPU,匹配带宽受限特性。

Splitwise 的关键工程贡献是逐层流水线传输:每一层 prefill 计算完成后立即异步传输该层的 KV Cache,不需要等全部 prefill 完成才开始传输。这种流水线设计隐藏了大部分传输延迟,实现约 1.4 倍吞吐提升和 20% 的每 token 成本下降。在等功率/成本预算下,吞吐提升达 2.35 倍。这一技术后来被上游至 vLLM 开源项目。

4.4 Mooncake:KVCache-centric 的生产系统

Moonshot AI 的 Mooncake(FAST 2025 最佳论文)代表了分离式推理的生产级实践,其设计哲学是KVCache-centric——KV Cache 的放置和移动驱动所有调度决策。

分布式 KV Cache 存储。Mooncake 利用 GPU 集群节点上未充分使用的 CPU DRAM、本地 SSD 和 NVMe 存储,构建了一个分层的分布式 KV Cache 存储系统。请求完成后,KV Cache 不立即丢弃,而是保留在存储层供未来具有共享前缀的请求复用。

Transfer Engine。这是 Mooncake 的核心通信层,支持 RDMA 和拓扑感知路径选择(NVLink/InfiniBand/RoCE/Ethernet),能聚合多卡带宽实现高吞吐 KV 传输。该组件已于 2024 年 11 月开源。

生产规模。Kimi 每日处理超 1000 亿 token,跨数千节点运行。有效请求容量提升 59%-498%,SLO 约束下吞吐提升最高 525%,真实工作负载下多处理 75% 的请求。

五、生产实践:vLLM Wide-EP 与 DeepSeek 部署

5.1 Wide-EP 策略

DeepSeek-R1 是一个 671B 参数的 MoE 模型,每次推理仅激活 37B 参数。在多 GPU 部署时,传统的张量并行(TP)策略在 MLA(Multi-head Latent Attention)架构下会导致潜变量投影的重复计算。vLLM 的Wide-EP(Wide Expert Parallelism)策略将专家并行(EP)与数据并行(DP)结合:

  • 注意力层采用 DP 部署,每个 rank 独立持有潜变量投影,增加有效 batch size。
  • MoE 层采用 EP 部署,不同 GPU 负责不同专家,通过 all-to-all 通信交换 token。
  • TP 仅在单 GPU 显存不足时使用(每张 H200 剩余约 34GB 显存时,Wide-EP 更优)。

5.2 双批次重叠与专家负载均衡

vLLM 集成了两项来自 DeepSeek 的关键优化:

双批次重叠(DBO,--enable-dbo:将每个 batch 分为微批次,重叠计算和集体通信。主线程创建微批次工作线程完成 CUDA 图捕获,MoE all-to-all 算子在等待 GPU 完成时出让控制权。在通信开销高的部署(高 EP 度)中显著提升 GPU 利用率。

专家并行负载均衡(EPLB,--enable-eplb:每次 MoE 前向记录 token 负载,滑动窗口聚合后,达到重平衡间隔时计算新的逻辑到物理专家映射并编排权重重组(weight shuffle),整个过程无需重启模型。

5.3 实测性能

在 CoreWeave H200 集群(InfiniBand + ConnectX-7)的社区基准测试中,vLLM Wide-EP 实现了每张 H200 持续吞吐2.2k tokens/s,相比早期约 1.5k tokens/s/GPU 有显著提升。DeepSeek 在数千节点上生产运行分离式服务,Decode 使用 EP144 + DP144 跨 18 节点,每 GPU 管理 2 个路由专家和 1 个共享专家,最大化 GroupGEMM 利用率。

六、前沿展望

6.1 NVIDIA Dynamo:分布式推理服务框架

NVIDIA 于 GTC 2025 发布的 Dynamo 是高吞吐、低延迟的开源推理服务框架,在 Blackwell 上运行 DeepSeek-R1 时将可服务请求数提升至 30 倍。其四大核心组件包括:

  • Dynamo Planner:持续监控 GPU 容量指标,结合 TTFT/ITL 等 SLO,动态决定请求采用分离式或聚合式服务,并在 prefill GPU 成为瓶颈时让 decode GPU 转而执行 prefill。
  • Smart Router:用 Radix Tree 哈希请求并存储 KV 位置,计算新请求与已有 KV cache 块的重叠分数,结合负载均衡将请求路由到最合适 worker。
  • Distributed KV Cache Manager:将低频访问的 KV cache 块卸载到 CPU 主存、SSD 或对象存储,采用 GPU → CPU → SSD → 对象存储的分层缓存策略。
  • NIXL:硬件与网络无关的低延迟通信库,支持 GPUDirect RDMA,兼容 NVLink、InfiniBand、RoCE、Ethernet。

6.2 NVFP4 KV Cache 与压缩注意力

NVIDIA 推出的NVFP4 KV Cache以 4-bit 存储 KV 张量(attention 前反量化为 FP8),实现 HBM 占用、内存带宽和吞吐的显著提升。NVFP4 因更细粒度的块缩放和 E4M3 FP8 缩放因子,精度优于 MXFP4,在多智能体和 MoE 部署中表现突出。

学术界也在持续探索:Zipage(2026)在 PagedAttention 基础上引入 KV cache 驱逐策略;PagedEviction(2025)提出与分页结构协同的结构化逐块 token 驱逐;TPLA(Tensor-Parallel Latent Attention)针对分离式推理跨设备分片潜变量表示,保留压缩 KV cache 优势同时解锁 TP 效率。

6.3 超大规模训练基础设施

推理基础设施的演进与训练基础设施密不可分。NVIDIA GB200 NVL72 单机柜集成 72 颗 Blackwell GPU 和 36 颗 Grace CPU,液冷满载功耗约 130kW,聚合 NVLink 带宽 130 TB/s,FP4 稀疏算力超 1.4 exaFLOPS。在 MLPerf Training v5.0 中,512 颗 Blackwell GPU 将 Llama 3.1 405B 预训练时间从 Hopper 的 269 分钟缩短至 121 分钟,加速 2.2 倍,峰值训练吞吐达 1960 TFLOPS。

更极端的案例是 xAI 的 Colossus 2 集群——搭载 555,000 张 GPU(GB200 + GB300),功耗约 1GW,三层液冷系统每秒循环 40 吨冷却液,SemiAnalysis 评估其为 2025 Q3 世界最大单体数据中心。

七、总结

大模型推理架构的演进可以归纳为三个层次:

第一层:显存管理。PagedAttention 用虚拟内存分页思想解决了 KV Cache 的碎片化问题,将显存利用率从 20%-40% 提升至接近 100%。

第二层:调度优化。连续批处理通过逐步动态插入和移除请求,消除了静态批处理的长尾等待问题,使 GPU 在突发流量下保持高利用率。

第三层:架构分离。Prefill-Decode 分离架构从根本上解除了两阶段计算特性的资源耦合,通过独立资源分配、KV Cache 传输流水线和分布式缓存管理,将 Goodput 提升数倍。

截至 2025 年底,分离式推理已从学术研究进入生产主流——vLLM、SGLang、TensorRT-LLM、NVIDIA Dynamo 均内置分离式服务模式,DeepSeek、Fireworks AI、Perplexity、Meta、Amazon 均运行自有分离系统。DistServe 作者在 2025 年 11 月的回顾中坦言:“几乎每个生产级 LLM 服务框架都基于分离式架构。”

对于技术选型而言:快速上线和广泛模型支持首选 vLLM;吞吐至上的单一模型长期生产场景选 TensorRT-LLM;共享前缀工作负载(聊天机器人、RAG、多轮对话)选 SGLang。而无论选择哪个引擎,Prefill-Decode 分离都已成为不可忽视的架构选项。


本文数据来源包括 vLLM 官方博客、NVIDIA Developer Blog、MLPerf 基准测试报告、DistServe/Splitwise/Mooncake 论文及 SemiAnalysis 行业分析,时间跨度覆盖 2024-2026 年。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询