云计算百科
云计算领域专业知识百科平台

从 PagedAttention 到 Prefill-Decode 分离的深度解析

大模型推理架构演进:从 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)在每个解码迭代步的边界上做两件事:

  • 移除已完成请求:任何已生成 EOS token 或达到长度上限的请求,立即从 batch 中移除,释放其物理块。
  • 插入新到达请求:新到达的请求在当前迭代步开始前被加入 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 年。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 从 PagedAttention 到 Prefill-Decode 分离的深度解析
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!