大模型推理引擎vLLM(8):PD分离推理架构原理
文章目录1 吞吐量Throughputvs 有效吞吐量Goodput2 Prefill 与 Decode 共置导致干扰3 PD 分离的整体思路4 分离式推理架构的优化方向4.1 算力与存储4.2 Batching 策略4.3 并行策略5 KV Cache 传输5.1 KV Cache 传输开销5.2 KV Cache 传输方式5.3 KV Cache 传输的网络堆栈5.4 KV Cache 传输粒度6 vLLM 的 PD 分离7 PD 分离工业界项目7.1 Mooncake7.2 Dynamo7.3 llm-d7.4 AIBrix8 Chunked-Prefills VS PD 分离9 PD 分离相关论文10 总结11 参考资料欢迎关注PD分离其实就是名字说的这样就是将prefill和decode分开具体详细细节后面看代码以下内容来自该视频和文档AI INFRA 学习 06 - PD 分离推理架构详解(B站学习视频)PD 分离推理架构详解(GitHub文档)在大语言模型推理过程中prefill 阶段和 decode 阶段具有截然不同的计算特性prefill 阶段需要并行处理整个输入序列来生成首个 token属于计算密集型操作。decode 阶段则逐个生成后续 token需要频繁访问 KV cache属于内存密集型操作。传统的 continuous batching 将两个阶段混合处理导致相互干扰难以同时满足 TTFT首 token 延迟和 TPOTtoken 间延迟的严格要求。为了解决这一问题PD 分离架构应运而生通过将 prefill 和 decode 分配到不同的 GPU 实例上针对各自特性进行专门优化。这种分离式设计不仅消除了阶段间的干扰还能显著提升系统的有效吞吐量Goodput为大规模 LLM 服务提供了更优的解决方案。1 吞吐量Throughputvs 有效吞吐量Goodput目前大多数 LLM 服务系统如 vLLM、TensorRT-LLM都以吞吐量Throughput 作为主要性能指标——即单位时间内处理的请求数RPS或生成的 token 数。这种度量方式直观并且与成本$/req有直接关联因此被广泛采用。实际上下游应用的类型多种多样它们在用户体验上的延迟需求各异因此需要满足的服务等级目标SLO也存在显著差异。大模型服务中最常用的 SLO 包括TTFT (Time To First Token)首 token 响应延迟直接影响用户的等待体验。TPOT (Time Per Output Token)衡量两个连续生成的 token 之间的平均延迟决定交互的流畅程度。例如实时聊天机器人更关注低 TTFT 以保证响应及时而 TPOT 只需快于人类阅读速度约 250 词/分钟即可相反文档摘要则更强调低 TPOT以便更快地产生完整摘要。单纯依赖 Throughput 作为指标并不能反映延迟表现系统看似处理了大量请求但其中不少未能满足 SLO最终呈现给用户的仍是不理想的服务体验。Throughput吞吐量通常指系统单位时间内处理的 token 数或请求数。很多工作把“提高吞吐量”作为主要优化目标但在实际场景下这并不直接代表用户体验。Goodput有效吞吐量指系统在满足延迟约束如 TTFT/TPOT SLO的前提下真正完成的请求数量。如果一个请求因为延迟过长而被用户放弃或者超过服务约束而无效那么即便它产生了 token也不能算作有效产出。在 DistServe 论文中引入了 Goodput 概念即在满足 SLOTTFT 和 TPOT 要求的前提下每秒完成的有效请求数。与单纯的吞吐量相比Goodput 是更优的衡量指标因为它能够体现请求在满足 SLO 情况下的吞吐水平从而同时反映成本效益与服务质量。为了简要说明 Goodput假设某个应用要求至少 90% 的请求满足 TTFT 200ms 且 TPOT 50ms则可以得到如下定义Goodput (P90 TTFT 200ms 且 P90 TPOT 50ms) 表示在至少 90% 的请求同时满足 TTFT 200ms 和 TPOT 50ms 的条件下系统所能维持的最大每秒请求数。下图展示了一个简单的例子某应用的吞吐量为 10 RPS每秒请求数但由于延迟约束的限制只有 3 RPS 的请求满足 SLO因此该系统的 Goodput 仅为 3 RPS。可以想象用户在这样一个 高吞吐但低 Goodput 的系统中依然会感受到较差的服务体验。2 Prefill 与 Decode 共置导致干扰在 LLM 服务中请求的生命周期通常包含两个阶段prefill生成首个 token和 decode逐步生成后续 token。大多数现有系统如 vLLM、TensorRT-LLM采用 continuous batching 技术将 prefill 和 decode 混合在一起统一批处理。这种方式确实能够提升整体吞吐量但由于两者计算特性和 SLO 目标差异显著将它们共置在同一 GPU 上往往并不理想。如下图所示continuous batching 会带来明显的干扰。当 prefill 和 decode 被放在同一批次时decode 请求的延迟TPOT会被显著拉长而 prefill 请求的首 token 延迟TTFT也会有所增加。图中展示了三种不同的执行方式1PnD棕色柱子1 个 prefill 与 n 个 decode 混合批处理。nD蓝色柱子仅包含 decode 请求的批处理。prefill-only红色虚线仅运行 prefill 请求的延迟。在 prompt 长度为 128 时相比仅包含 decode 的请求延迟增加约 1.8 倍而当 prompt 长度为 1024 时干扰效应显著放大decode 延迟提升至 12.6 倍。由于这种干扰如下图所示当服务必须同时满足 TTFT 和 TPOT 的 SLO 时系统往往需要进行资源的过度配置才能达到延迟目标尤其是在任一 SLO 要求较严格的情况下。3 PD 分离的整体思路直观的思路很简单将 prefill 和 decode 分离到不同的 GPU 上并为每个阶段定制并行策略。这自然解决了前面提到的两个问题没有干扰prefill 和 decode 各自独立运行更快地完成计算也更容易满足各自的 SLO。资源分配与并行策略解耦可以针对 prefill 和 decode 分别进行优化。下图展示了在这样一个分离式系统中请求是如何被处理的。当一个请求到达系统时它会先被分配到 prefill worker 完成 prefill 阶段随后系统将其中间状态主要是 KV Cache迁移到 decode worker并执行多步 decode 以生成后续 token当生成完成后请求才会离开系统。让我们通过一个简单的实验来看看为什么 PD 分离是有益的。我们在一张 A100-80GB GPU 上运行一个 130 亿参数的 LLM请求到达服从泊松分布输入长度为 512输出长度为 64。我们逐步增加请求速率x 轴并在下图测量两类延迟P90 TTFT 和 P90 TPOTy 轴的变化。假设我们设定 SLOP90 TTFT 0.4 秒P90 TPOT 0.04 秒下图中的横线。实验结果表明在单卡情况下现有系统大约可以在 3 rps 下满足 TTFT 的延迟约束而 TPOT 只能维持在 1.6 rps下图左边。由于必须同时满足两个约束条件现有共置系统的 Goodput min(3, 1.6) 1.6 rps/GPU。在分离之后性能得到了显著提升。如果单独处理一个阶段prefill worker 和 decode worker 的 rps 都优于之前的结果 —— 如下图右边所示一个 prefill worker 大约可达到 5.6 rps一个 decode worker 大约可达到 10 rps。更重要的是我们现在可以灵活地分配资源例如配置 2 个 prefill worker 1 个 decode worker记作 2P1D共 3 张 GPU。此时Goodput(2P1D)min(5.6×2,10)10reqs/s ÷3GPUs ≈3.3rps/GPU。这个实验表明即便没有引入任何并行优化仅仅通过简单的分离Goodput 就提升了约 2 倍。4 分离式推理架构的优化方向4.1 算力与存储prefill 阶段拥有计算受限的性质compute-bound特别是在请求流量较大用户的 prompt 也比较长的情况下。prefill 阶段算完 KV cache 并发给 decode 阶段后理论上 prefill 就不再需要这个 KV cache 了当然你也可以采用 LRU 等策略对 KV cache 的保存做管理而不是一股脑地清除。decode 阶段拥有内存受限的性质memory-bound因为逐个 token 的生成方式decode 阶段要频繁从内存中读取 KV Cache同时也意味着它需要尽可能保存 KV cache。因此在分离式框架下计算和存储可以朝着两个独立的方向做优化。4.2 Batching 策略prefill 阶段随着 batch size 的增加吞吐量的提升很快趋于平缓。这是因为 prefill 属于 compute-bound当 batch 中的总 tokens 数超过一定规模后GPU 的计算能力已经被完全吃满再增加请求只会延长整体处理时间而不会带来明显的吞吐提升。decode 阶段随着 batch size 的增加吞吐量的增长趋势越来越显著。这是因为 decode 阶段是 memory-bound即相比于计算读写数据的时间要更多。所以在 decode 阶段中如果我们能提升 batch size就能把计算强度提起来吞吐量就上去了。在分离架构下我们可以针对 prefill 和 decode 的特性对 batching 策略分别进行优化具体来说对于 prefill 实例需要事先结合特定的 LLM 和 GPU 做性能分析找出输入长度的临界点——一旦超过这个点prefill 就会进入 compute-bound此时增加 batch size 只会拖慢整体处理速度。在实际应用中用户的 prompt 往往已有数百个 tokens因此prefill 的 batch size 通常保持较小。相对地decode 阶段更适合采用较大的 batch size以充分提升 GPU 利用率和整体吞吐。4.3 并行策略由于 prefill 和 decode 具有不同的计算模式和延迟目标这两个阶段的最佳并行策略通常并不相同。例如当 TTFT 要求严格而 TPOT 要求相对宽松时prefill 更适合采用张量并行来满足低延迟而 decode 则通常采用数据并行或流水线并行来提升吞吐。5 KV Cache 传输PD 分离带来的代价是需要在 prefill 和 decode 的 GPU 之间传输中间状态即 KV cache。接下来我们来看看 KV cache 传输的开销分析、传输方式以及相关的优化策略。5.1 KV Cache 传输开销初看之下KV cache 是 LLM 推理中巨大的内存开销而 GPU 之间 KV cache 的传输似乎会成为瓶颈。然而DistServe 的论文中展示了相反的结果通过合理的放置KV Cache 的传输开销可以被有效地最小化甚至低于一次 decode 步骤的时间这得益于当今高速互联网络如 NVLink 和 PCI-e 5.0。假设我们在 GPU 之间使用 8 通道 PCIe 5.0 x16每条链路 64GB/s作为节点内互联。对于一个包含 2048 tokens 的请求在服务 OPT-175B 时传输 KV cache 的延迟可以估算如下Latency2048tokens *(4.5MB/token)/(64GB/s *8)17.6ms对于 OPT-175B延迟小于单次 decode 步骤在 A100 上约为 30-50 毫秒。对于更大的模型、更长的序列或更先进的网络例如带宽为 600GB/s 的 A100-NVLink如下图所示与单次 decoe 步骤相比KV cache 传输相关的相对开销变得不那么显著。总之通过精心安排 prefill 和 decode 工作节点以利用高带宽网络可以有效隐藏 KV cache 传输的开销。5.2 KV Cache 传输方式目前 KV cache 的传输主要有两种方式中心存储和点对点P2P当然在实际系统中也可能采用二者结合的混合方案。中心存储建立一个跨设备的 KV store由它统一管理 KV cache 的增、删、查和传递等操作。prefill 和 decode 实例只需与这个 KV store 交互负责写入或读取数据。P2P 传输每个实例独立管理自己的存储。例如一个 prefill 实例完成计算后会直接与目标 decode 实例建立通信将 KV cache 传过去不依赖统一的中介。两种方式各有优劣中心存储更适合构建大规模集群能充分利用多种存储介质和传输通道并提升计算结果的复用效率但在某些场景下性能可能受限同时系统维护成本较高。P2P 传输架构更简单性能表现通常更好但在扩展性和链路稳定性方面会面临挑战。5.3 KV Cache 传输的网络堆栈现有的物理数据链路可以分为 3 类Direct即 GPU 之间通过高速直连链路如 NVLink 或 HCCS相互连接。在这种情况下可以利用底层的内存拷贝原语或集体通信库来完成数据传输。Direct-NIC即 GPU 通过其配套的网卡NIC进行通信。在这里可以使用定制化的库通过 PCIe 和以太网或 InfiniBand进行数据传输。Indirect即当 GPU 之间没有直接链路时必须通过其 CPU 的 DRAM 中转数据从而带来额外的内存拷贝开销。图片来源Inference without Interference: Disaggregate LLM Inference for Mixed Downstream Workloads5.4 KV Cache 传输粒度KV cache 传输粒度可以分为 3 类请求级等到 prefill 阶段完成后将 KV cache 一次性传输。这种方式的好处是能够减少网络传输次数因为每次传输的数据量更大从而降低了通信开销。然而当 KV cache 大小较大时会影响 TTFT 的延迟。层级Splitwise 通过在 prefill 阶段的计算与 KV cache 传输之间实现重叠来优化性能。**每一层计算完成后都会异步传输该层的 KV cache同时继续执行下一层的计算从而降低传输开销。**层级传输还能带来额外优势例如更早启动 decode 阶段以及更早释放 prefill 端的内存。层级 KV cache 传输与下一层的 prefill 计算并行进行这需要逐层的细粒度同步以确保正确性因此可能会带来性能干扰并增加 TTFT尤其是在小 prompt 的场景下。不过对于小 prompt 来说KV cache 的总体规模很小不需要层级传输来隐藏延迟。由于在计算开始时批次中的 token 数已经是已知的Splitwise 会选择最合适的 KV cache 传输方式小 prompt 使用序列化传输而大 prompt 使用层级传输。图片来源Splitwise: Efficient Generative LLM Inference Using Phase Splitting块级TetriInfer 在 PD 分离的基础上还会将输入的 prompt 划分为固定大小的 chunk以便让 GPU 始终运行在接近计算饱和的状态。因此TetriInfer 论文中也提出了基于块级的 KV cache 传输方案。6 vLLM 的 PD 分离vLLM 提供了KV Connector作为管理实例间 KV cache 交换的抽象层它提供统一接口来实现 KV cache 的保存、加载与传输使不同的 vLLM 实例如 prefill 与 decode 实例能够高效共享计算结果。通过实现这一接口各类 connector例如通过文件系统的 SharedStorageConnector、通过网络的 NixlConnector 等提供了灵活的 KV cache 传输方案从而支持 PD 分离等高级功能。KVConnectorBase_V1是所有 connector 的基类。它是一个抽象基类定义了以下 APIscheduler 侧方法build_connector_meta构建元数据scheduler 告诉 worker 需要保持/加载哪些 KV cache。get_num_new_matched_tokens获取远端已计算的 KV cache 的 token 数量。update_state_after_allocblock 开辟后更新 connector 的状态。worker 侧方法start_load_kv从 connector buffer 加载 KV cache消费端调用。wait_for_layer_load阻塞直到指定层加载结束消费端调用save_kv_layer将 vLLM 的 KV buffer 中某一层的 KV cache 保存到 connector buffer 中生产端调用。wait_for_save阻塞直到所有保存操作完成生产端调用。vLLM v1 中 connector 有两个执行角色Rolescheduler_connector 和 worker_connector分别在 scheduler 线程和 worker 线程中执行。scheduler 负责指挥 worker 进行 KV cache 的传递两者之间的信息桥梁是元数据KVConnectorMetadataworker 通过 metadata 知道哪些 KV 值需要从远端加载。当前 vLLM 支持 5 种类型的 connector分别是SharedStorageConnectorSharedStorageConnector 是 vLLM 中最简单的 KV Connector 实现它通过共享文件系统如本地磁盘或 NFS在 prefill 和 decode 实例之间传递 KV cache使用 MD5 哈希生成唯一文件名来存储和检索每个请求的 KV cache。prefill 实例将每层的 KV cache 序列化为 SafeTensors 格式保存到指定路径decode 实例根据相同的 token_ids 计算哈希值找到对应文件并加载整个过程没有显式的网络传输完全依赖文件系统的读写操作。P2pNcclConnectorP2pNcclConnector 是基于 NCCLNVIDIA Collective Communications Library实现的高性能 KV Connector它通过 NCCL 的 send/recv 原语实现 KV cache 在不同 GPU 之间的点对点传输避免了文件系统的开销。NixlConnectorNixlConnector 使用 NIXLNVIDIA Inference Xfer Library库来加速 GPU 之间以及异构内存与存储之间的 KV cache 传输。LMCacheConnectorV1通过与 LMCache 集成实现 KV cache 的外部存储和检索支持多种存储后端如 CPU 内存、本地文件系统、Redis、 InfiniStore 等。LMCache 通过重用缓存的 KV cache 来减少推理时间消除冗余计算适用于跨请求或跨会话的 KV cache 共享场景。MultiConnector允许同时使用多个 KV connector 来实现 KV cache 的传输它的核心逻辑是从第一个能提供可用 token 的 connector 加载 KV cache但会向所有 connector 保存数据。MultiConnector 适用于需要同时向多个存储后端保存 KV cache 的场景比如同时保存到本地存储和远程存储提供数据冗余和可靠性保障。--kv-transfer-config{ kv_connector: MultiConnector, kv_connector_extra_config: { connectors: [ { kv_connector: NixlConnector, kv_role: kv_both }, { kv_connector: SharedStorageConnector, kv_connector_extra_config: { shared_storage_path: local_storage }, kv_role: kv_both } ] }, kv_role: kv_both }以上几个 connector 的运行实例代码可以在这里找到https://docs.vllm.ai/en/latest/features/disagg_prefill.html#usage-example7 PD 分离工业界项目7.1 MooncakeMooncake 是 Moonshot AI 提供的领先大模型服务 Kimi 的推理平台。Mooncake 是 PD 分离应用比较早也是规模比较大的成功例子Mooncake 采用了以 KV cache 为核心的解耦架构将 prefill 集群与 decode 集群分离。同时它还利用 GPU 集群中未被充分利用的 CPU、DRAM 和 SSD 资源实现了解耦式的 KV cache 缓存。Mooncake 的核心是一个以 KV cache 为中心的调度器它在最大化整体有效吞吐量和满足延迟相关的 SLO 之间进行平衡。与传统假设所有请求都会被处理的研究不同Mooncake 需要应对高负载场景带来的挑战。为此Mooncake 提出了一种基于预测的早期拒绝策略。图片来源Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving实验结果表明Mooncake 在 长上下文场景下表现尤为突出在某些模拟场景中吞吐量相比基线方法最高可提升 525%同时仍能满足 SLO。在真实负载下Mooncake 的创新架构使 Kimi 能够多处理 75% 的请求。使用 Mooncake 运行 PD 分离服务请参考文档vLLM V1 Disaggregated Serving with Mooncake Store and LMCache7.2 DynamoNVIDIA Dynamo 是一个开源的模块化推理框架用于在分布式环境上实现生成式 AI 模型的服务化部署。Dynamo 通过动态资源调度、智能路由、内存优化与高速数据传输无缝扩展大型 GPU 集群之间的推理工作负载。Dynamo 采用推理引擎无关的设计支持 TensorRT-LLM、vLLM、SGLang 等包括以下 4 个核心组件NVIDIA Dynamo Planner一个智能规划和调度引擎用于监控分布式推理中的容量与延迟并在 prefill 与 decode 阶段之间灵活分配 GPU 资源以最大化吞吐量和效率。Planner 会持续跟踪关键的 GPU 容量指标并结合应用的 SLO如 TTFT 和 ITL智能决策是否采用分离式推理或是否需要为 prefill/decode 阶段动态增加更多 GPU。NVIDIA Dynamo Smart RouterKV cache 感知的路由引擎可在分布式推理环境中将请求转发到最佳的节点从而最大限度减少 KV cache 的重复计算开销。NVIDIA Dynamo Distributed KV Cache Manager通过将较旧或低频访问的 KV cache 卸载到更低成本的存储如 CPU 内存、本地存储或对象存储等大幅降低 GPU 内存占用。借助这种分层管理开发者既能保留大规模 KV cache 重用的优势又能释放宝贵的 GPU 资源从而有效降低推理计算成本。NVIDIA Inference Transfer Library (NIXL)高效的推理数据传输库可加速 GPU 之间以及异构内存与存储之间的 KV cache 传输。通过减少同步开销和智能批处理NIXL 显著降低了分布式推理中的通信延迟使得在 prefill/decode 分离部署时prefill 节点也能在毫秒级将大批量的 KV cache 传输至 decode 节点从而避免跨节点数据交换成为性能瓶颈。在 Dynamo 的 PD 分离架构中有 4 个核心组件(decode) worker执行 prefill 和 decode 请求。prefill worker只执行 prefill 请求。disaggregated router决定 prefill 阶段是在本地还是远程执行。prefill queue缓存并负载均衡远程 prefill 请求。当 worker 收到请求时首先会通过 disaggregated router 判断 prefill 应该在本地还是远程完成并分配相应的 KV block。如果选择远程 prefill请求会被推送到 prefill queue。随后prefill worker 从队列中取出请求读取 worker 中 prefix cache 命中的 KV block执行 prefill 计算并将生成的 KV block 回写给 worker。最后worker 会继续完成剩余的 decode 阶段。Dynamo 提供了 Operator 方便我们在 Kubernetes 环境中以声明式的方式定义 PD 分离服务。只需在DynamoGraphDeployment配置中声明 Frontend、VllmDecodeWorker 和 VllmPrefillWorker 三个组件即可。dynamoNamespace是 Dynamo 分布式运行时的逻辑隔离单元而非 Kubernetes 的 namespace同一dynamoNamespace内的组件可以相互发现并进行通信。apiVersion:nvidia.com/v1alpha1kind:DynamoGraphDeploymentmetadata:name:vllm-disaggspec:services:Frontend:dynamoNamespace:vllm-disaggcomponentType:frontendreplicas:1extraPodSpec:mainContainer:image:nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.4.1VllmDecodeWorker:dynamoNamespace:vllm-disaggcomponentType:workerreplicas:1resources:limits:gpu:1extraPodSpec:mainContainer:image:nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.4.1workingDir:/workspace/components/backends/vllmcommand:-/bin/sh--cargs:-python3 -m dynamo.vllm --model Qwen/Qwen3-0.6BVllmPrefillWorker:dynamoNamespace:vllm-disaggcomponentType:workerreplicas:1resources:limits:gpu:1extraPodSpec:mainContainer:image:nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.4.1workingDir:/workspace/components/backends/vllmcommand:-/bin/sh--cargs:-python3 -m dynamo.vllm --model Qwen/Qwen3-0.6B --is-prefill-workerDynamo 详细的部署教程可以参考博客https://cr7258.github.io/blogs/original/2025/20-dynamo#_3-%E8%BF%90%E8%A1%8C-dynamo7.3 llm-dllm-d 是一个 Kubernetes 原生的分布式推理服务栈为团队提供一条清晰高效的路径以最快的落地速度在大规模环境中部署并管理推理服务。llm-d 通过集成业界标准的开源技术来加速分布式推理使用 vLLM 作为模型服务与引擎Inference Gateway 作为请求调度器与负载均衡器Kubernetes 作为基础设施编排与工作负载控制平面。llm-d 提供以下核心功能基于 vLLM 优化的推理调度器llm-d 基于 IGW 的 Endpoint Picker Protocol (EPP) 实现可定制化的“智能”负载均衡专门针对 vLLM 进行优化。调度器结合运行时遥测数据利用过滤和打分算法在 P/D 分离、KV cache、SLA 与负载感知的基础上做出调度决策同时支持团队自定义策略。PD 分离llm-d 利用 vLLM 的分离式推理能力将 prefill 和 decode 拆分到独立实例运行并通过高性能传输库如 NIXL进行通信。分布式 KV cachellm-d 使用 vLLM 的 KV connector 构建可插拔的 KV cache 层级体系支持将 KV cache 卸载到主机、远程存储或 LMCache 等系统。使用 llm-d 运行 PD 分离服务请参考https://github.com/llm-d/llm-d/tree/main/guides/pd-disaggregation7.4 AIBrixAIBrix 是字节跳动开源的云原生分布式推理框架专为大规模 LLM 部署设计。AIBrix 支持 LoRA 管理、前缀感知和负载感知的智能路由并通过分布式 KV cache 实现跨节点的高效 token 复用。在系统编排层面AIBrix 结合 Kubernetes 与 Ray 的混合调度既能满足大规模集群管理的需求又能灵活执行细粒度任务。AIBrix 基于 SLO 的 GPU 优化器与诊断工具进一步提升了资源利用率和系统可靠性。使用 AIBrix 运行 PD 分离服务请参考https://github.com/vllm-project/aibrix/tree/main/samples/disaggregation/vllm8 Chunked-Prefills VS PD 分离chunked-prefills 方案的核心思想是将长序列的 prefill 请求拆分为几乎相等大小的小块然后构建了由 prefill 小块和 decode 组成的混合 batch。或者说chunked-prefills 策略通过将不同长度的 prompts 拆分成长度一致的 chunks 来进行 prefill以避免长 prompt 阻塞其他请求同时利用这些 chunks 的间隙进行 decode 的插入/捎带piggyback操作从而减少延迟并提高整体的吞吐。decode 阶段的开销不仅来自从 GPU 内存中获取 KV cache还包括提取模型参数。而通过这种 piggyback 方法decode 阶段能够重用 prefill 时已提取的模型参数几乎将 decode 阶段从一个以内存为主的操作转变为一个计算为主的操作。因此这样构建的混合批次具有近乎均匀的计算需求而且增加了计算密集性使我们能够创建平衡的微批处理调度缓解了迭代之间的不平衡导致 GPU 的管道气泡最小化提高了 GPU 的利用率。也最小化了计算新 prefill 对正在进行的 decode 的 TBT 的影响从而实现了高吞吐量和低 TBT 延迟。chunked-prefills 有两个明显的好处所有节点被平等对待使调度更简单。将 chunked prefill 内联到 decode 批处理中可以提高 decode 批次的计算强度从而带来更好的 MFUModel FLOPs Utilization指的是模型实际使用的计算量占 GPU 理论峰值算力的比例用来衡量算力利用效率。然而chunked-prefills 也有一些缺点chunked-prefills 会增加 prefill 的计算开销如果 chunk 大小明显低于 GPU 饱和点会延长 prefill 的执行时间。prefill 阶段仍难以完全最大化 MFU因为在 chunk-prefill 中profiling 只会估算特定设备上一个 batch 的最大 tokens 配额这个配额同时包含 prefill 和 decode而不是分别针对两者优化。chunked-prefills 也会显著增加 prefill 阶段的内存访问量每个 chunk 的 Attention 操作都需重复读取此前的 KV cache增加内存访问负担。而且长序列可能会持久地占据着 KV cache 的存储空间以及 GPU 的计算资源。在 TPOT 方面将 prefill 与 decode 合并批处理实际上会降低所有 decode 任务的平均速度。总之chunked-prefills 可能有助于最大化整体吞吐量但由于动态分割无法完全解耦 prefill 和 decode 操作会导致资源争用以及 TTFT 与 TPOT 之间的妥协。当应用程序无法在 TTFT 和 TPOT 之间进行权衡而是要同时遵守这两者时PD 分离就成为更好的选择。9 PD 分离相关论文DistServe: Disaggregating Prefill and Decoding for Goodput-optimized Large Language Model ServingSplitwise: Efficient Generative LLM Inference Using Phase SplittingTetriInfer: Inference without Interference:Disaggregate LLM Inference for Mixed Downstream WorkloadsMemServe: Context Caching for Disaggregated LLM Serving with Elastic Memory PoolMooncake: A KVCache-centric Disaggregated Architecture for LLM Serving10 总结PD 分离大模型推理中的一种架构优化策略核心思想是把 prefill 阶段和 decode 阶段分开由不同的 GPU 或实例分别承担。通过分离架构系统可以针对 prefill计算密集型和 decode内存密集型的不同特性分别优化资源配置和并行策略从而在满足 TTFT 和 TPOT SLO 约束的前提下显著提升有效吞吐量Goodput。虽然 PD 分离需要在 GPU 间传输 KV Cache但通过高速互联网络和优化的传输策略这一开销可以被有效隐藏。目前vLLM、Mooncake、Dynamo 等主流推理框架都已支持 PD 分离为大规模 LLM 服务提供了更高效的解决方案。相比于 chunked-prefills 等替代方案PD 分离在需要同时满足严格 TTFT 和 TPOT 要求的场景下具有明显优势。11 参考资料Lecture 58: Disaggregated LLM Inferencehttps://www.youtube.com/watch?vtIPDwUepXcAThroughput is Not All You Need: Maximizing Goodput in LLM Serving using Prefill-Decode Disaggregationhttps://hao-ai-lab.github.io/blogs/distserve/Mooncake阅读笔记深入学习以Cache为中心的调度思想谱写LLM服务降本增效新篇章https://zhuanlan.zhihu.com/p/706097807探秘Transformer系列之26— KV Cache优化 之 PD分离or合并https://www.cnblogs.com/rossiXYZ/p/18815541大模型推理分离架构五虎上将https://zhuanlan.zhihu.com/p/706218732LLM关于PD分离的最新实测https://zhuanlan.zhihu.com/p/1919794916504114120State of the Model Serving Communities - August 2025https://inferenceops.substack.com/p/state-of-the-model-serving-communities图解大模型训练系列序列并行1Megatron SPhttps://zhuanlan.zhihu.com/p/4083427292序列并行做大模型训练你需要知道的六件事https://zhuanlan.zhihu.com/p/698031151vLLM PD分离KV cache传递机制详解与演进分析https://zhuanlan.zhihu.com/p/1906741007606878764vLLM PD分离方案浅析https://zhuanlan.zhihu.com/p/1889243870430201414P/D Disaggregation of vLLM and Integration with Mooncakehttps://docs.google.com/document/d/1Ab6TMW1E2CdHJJyCrpJnLhgmE2b_6leH5MVP9k72sjw/edit?tabt.0#headingh.611v2r4aqubz0.5x提升:PD分离KV cache传输的实践经验https://zhuanlan.zhihu.com/p/1946608360259577576分布式推理优化思路http://zhuanlan.zhihu.com/p/1937556222371946860图解大模型计算加速系列分离式推理架构2模糊分离与合并边界的chunked-prefillshttps://zhuanlan.zhihu.com/p/710165390图解大模型计算加速系列分离式推理架构1从DistServe谈起https://zhuanlan.zhihu.com/p/706761664LLM推理优化 - Prefill-Decode分离式推理架构https://zhuanlan.zhihu.com/p/9433793184Shaping NIXL-based PD Disaggregation in vLLM V1https://blog.lmcache.ai/2025-04-11-lmcache-vllmv1-nixl/vLLM P2P NCCL Connectorhttps://docs.vllm.ai/en/latest/design/p2p_nccl_connector.htmlvLLM Disaggregated Prefilling (experimental)https://docs.vllm.ai/en/latest/features/disagg_prefill.htmlLMCache Example: Disaggregated prefillhttps://docs.lmcache.ai/getting_started/quickstart/disaggregated_prefill.htmlBringing State-Of-The-Art PD Speed to vLLM v1 with LMCachehttps://blog.lmcache.ai/2025-04-29-pdbench/Demystify vLLM V1 KVconnector SharedStorageConnectorhttps://blog.diabloneo.com/demystify-vllm-v1-kvconnector-sharedstorageconnector-05a487627036vLLM源码之分离式架构https://zhuanlan.zhihu.com/p/1933647687vLLM v1 PD分离设计https://zhuanlan.zhihu.com/p/1894425784107632241Inside vLLM: Anatomy of a High-Throughput LLM Inference Systemhttps://blog.vllm.ai/2025/09/05/anatomy-of-vllm.html[P/D][V1] KV Connector API V1https://github.com/vllm-project/vllm/pull/15960vLLM PD Disaggregation discussionhttps://docs.google.com/document/d/1uPGdbEXksKXeN4Q9nUm9hzotqEjQhYmnpAhidLuAsjk/edit?tabt.0#headingh.qhtgj3vmvwnllm-d: Kubernetes-native Distributed Inference at Scalehttps://github.com/llm-d/llm-d/blob/dev/docs/proposals/llm-d.md欢迎关注

相关新闻

大模型推理引擎vLLM(7): Chunked-Prefills 分块预填充机制

大模型推理引擎vLLM(7): Chunked-Prefills 分块预填充机制

文章目录1 传统 prefill 和 decode 阶段中存在的问题2 Batching 的演进过程2.1 Static Batching2.2 Continuous Batching2.2.1 Iteration-Level Scheduling2.2.2 在 Iteration-Level Scheduling 中实现 Batching 的挑战2.2.3 Selective Batching2.2.3.1 为什么在 Batch 中混合 …

2026/7/4 16:49:35 阅读更多 →
别再瞎找了!10个AI论文软件测评:专科生毕业论文+开题报告写作全攻略

别再瞎找了!10个AI论文软件测评:专科生毕业论文+开题报告写作全攻略

在当前学术写作日益依赖智能化工具的背景下,专科生群体面临着论文写作、开题报告撰写等多重压力。如何高效完成高质量的学术内容,成为许多学生亟需解决的问题。为此,我们基于2026年的实测数据与用户反馈,对市面上主流的AI论文软件…

2026/7/3 23:31:31 阅读更多 →
测完这批工具 8个AI论文写作软件测评:自考毕业论文+开题报告高效写作指南

测完这批工具 8个AI论文写作软件测评:自考毕业论文+开题报告高效写作指南

在当前学术写作日益依赖智能化工具的背景下,如何高效完成自考毕业论文及开题报告成为众多考生关注的焦点。2026年的测评数据显示,市面上的AI论文写作工具种类繁多,但质量参差不齐,功能覆盖、使用门槛、改稿效率等关键因素直接影响…

2026/7/5 16:56:40 阅读更多 →

最新新闻

免费前端开发库认证终极指南:从零到专业的三步进阶法

免费前端开发库认证终极指南:从零到专业的三步进阶法

免费前端开发库认证终极指南:从零到专业的三步进阶法 【免费下载链接】freeCodeCamp freeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free. 项目地址: https://gitcode.com/GitHub_Trending/fr/free…

2026/7/7 0:47:42 阅读更多 →
结构化方法:自顶向下的“拆解术“

结构化方法:自顶向下的“拆解术“

结构化方法:自顶向下的"拆解术" 开篇:从拆快递中学到的智慧 你有没有这样的经历? 收到一个巨大的快递,打开一看,里面有无数个小包裹,每个小包裹里还有更小的包裹,层层嵌套。 这种"从大到小、层层分解"的方式,就是结构化方法的核心思想。 什么…

2026/7/7 0:43:41 阅读更多 →
并发编程核心概念辨析

并发编程核心概念辨析

一、背景:CPU 多级缓存架构为了读者在阅读后序章节时,有更清晰、更形象的认知,这里放上现代 CPU 缓存的典型结构。一图胜千言,不多赘述,仅陈述以下要点:一颗 CPU,往往有多个核心(cor…

2026/7/7 0:43:41 阅读更多 →
如何识别PARP14

如何识别PARP14

一、PARP14的基础概述聚腺苷二磷酸核糖聚合酶14(PARP14,Poly(ADP-ribose) polymerase 14),也被称为PARP-4,是PARP家族中的一个重要成员。PARP家族包括多个聚腺苷二磷酸核糖聚合酶,它们在细胞的多个关键过程…

2026/7/7 0:39:40 阅读更多 →
Java毕设选题推荐:基于 SpringBoot 的教学过程考核评价系统的设计与实现 基于 SpringBoot 的课程阶段性考核管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 SpringBoot 的教学过程考核评价系统的设计与实现 基于 SpringBoot 的课程阶段性考核管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/7 0:37:39 阅读更多 →
综合项目三:Web全栈应用从零部署

综合项目三:Web全栈应用从零部署

在当今的互联网时代,掌握全栈开发与部署能力是每一位后端开发者、DevOps 工程师乃至独立开发者的核心竞争力。然而,很多初学者在完成代码编写后,却在部署环节频频碰壁——服务器环境配置、域名解析、HTTPS 证书、负载均衡、日志监控……这些“最后一公里”的问题往往比写代码…

2026/7/7 0:35:38 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻