ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PD解耦和PD分离

PD解耦和PD分离 在 LLM 推理系统如 vLLM、SGLang、TGI、Mooncake 等的性能优化与架构设计中PD 解耦和PD 分离经常被混用但在工程演进和系统架构上它们通常代表了不同阶段、不同粒度的设计思想。简单来说PD 解耦Decoupling侧重于逻辑/调度层面打破 Prefill 和 Decode 强绑定在同一个 Batch 或同一个执行流程中的约束让两者在时间或资源上互不干涉。PD 分离Disaggregation / Separation侧重于物理/集群层面直接将计算节点划分为专门的Prefill 集群和Decode 集群通过跨节点 KV Cache 传输协作。核心区别对比维度PD 解耦DecouplingPD 分离Disaggregation主要定位逻辑与调度架构Solving Scheduling Interference物理与系统架构Solving Physical Resource Bottleneck部署形态算力节点通常混布同一个 GPU / 节点内运行算力节点物理隔离Prefill 专卡/专机Decode 专卡/专机核心目的消除 Chunked Prefill 或时间片抢占带来的Head-of-Line Blocking队头阻塞和 TTFT 波动解决计算密集Compute-bound与访存密集Memory-bound的硬件资源不匹配最大化 GPU 利用率通信开销极低或零显存内指针传递 / NVLink存在跨节点传输开销需通过 RDMA / InfiniBand 传输 KV Cache典型技术代表Chunked Prefill, Piggybacking 调度, Continuous BatchingMooncake (Kimi), DistServe, Splitwise, SGLang PD Disaggregation1. 深入理解PD 解耦Logical Decoupling为什么需要解耦在早期的 Continuous Batching 架构中如果一个新 Requests 带着几千 token 的 Prompt 进来它需要执行Prefill计算密集型Batch Size 较小但 Compute 很大。此时正在执行Decode访存密集型逐字生成的其他请求就会被这个 Prefill 阻塞导致TBTTime Between Tokens出现剧烈抖动用户感到“卡顿”。解耦的主要手段时间/批次解耦Chunked Prefill将超长 Prompt 拆分成多个固定大小的 Chunk如 512 token在每个 Step 中将 Prefill Chunk 与 Decode step 混合打包Piggybacking。虽然硬件仍在同一个 GPU 上但从调度逻辑上解耦了长 Prefill 对 Decode 的垄断。异步/队列解耦在 Engine 内部维护独立的 Prefill 队列和 Decode 队列通过微架构级别的异步流CUDA Streams调度避免两者的逻辑依赖。优点无需复杂的跨节点网络通信开销极低单卡/小集群易于部署。局限物理硬件资源仍处于“强行共用”状态。Prefill 需要高算力Tensor Cores 满载Decode 需要高显存带宽HBM Bandwidth 满载两者混合在一个 Kernel 或同一个 GPU 时依然无法发挥各自的最佳硬件效能。2. 深入理解PD 分离Physical Disaggregation为什么演进到物理分离随着长文本Long Context如 128k/1M和高并发场景的爆发单卡内的逻辑解耦已无法解决硬件瓶颈冲突。 Prefill 和 Decode 对硬件资源的要求截然不同Prefill StageCompute-bound计算瓶颈。算力利用率高MFU 高KV Cache 增长极快TTFTFirst Token 延迟敏感。Decode StageMemory-bound访存瓶颈。算力利用率极低非常消耗 HBM 带宽TPOTToken 间延迟敏感。分离的技术实现PD 分离架构直接将集群拆为两套独立系统[ Client Requests ] │ ▼ ┌─────────────────┐ │ Router / Master │ └────────┬────────┘ │ ┌───────────────────────┴───────────────────────┐ ▼ ▼ ┌─────────────────┐ KV Cache Transfer (RDMA) ┌─────────────────┐ │ Prefill Cluster │ ─────────────────────────── │ Decode Cluster │ │ (Compute-Bound) │ │ (Memory-Bound) │ └─────────────────┘ └─────────────────┘Prefill 节点专门接收 Prompt快速并行算完所有 Token 的 KV Cache。通过高带宽网络如RoCE / InfiniBand RDMA将生成的 KV Cache 零拷贝或极低延迟推送到Decode 节点。Decode 节点接管该请求专注于逐 Token 的生成。优点异构部署Prefill 可以用算力强的卡如 H100/H800Decode 可以用显存大/带宽高的卡如 L40S 或大显存节点极致降低 TCO总拥有成本。独立扩缩容长文本场景 Prefill 压力大就扩 Prefill 节点高并发生成场景就扩 Decode 节点。局限KV Cache 跨节点传输Bandwidth Wall如果网络带宽不够如未配备 400G/800G RDMAKV Cache 传输延迟可能会抵消分离带来的性能收益。总结两者的演进关系PD 解耦是软件调度器层面的进化目标是“在一个容器/单张卡里别让 Prefill 把 Decode 挤死”。PD 分离是生产级大模型推理集群的终极形态目标是“打破单卡限制将计算与访存解耦到不同硬件物理节点实现集群级算力与吞吐的极致榨取”。在目前的业界前沿如 SGLang、Mooncake 等系统中通常是两者结合在集群层面做PD 物理分离而在 Decode 或 Prefill 节点内部依然使用PD 逻辑解耦如 Chunked Prefill / Batching 策略来优化单节点吞吐。
返回列表