什么是 P/D 分离(PD Disaggregation)?大模型推理吞吐提升 50% 的核心架构全解析

30 秒快速回答

P/D 分离(Prefill-Decode Disaggregation)是把大模型推理拆成两个独立阶段、分别部署在不同 GPU 池上的架构:高算力需求的预填充阶段(Prefill,处理用户输入、生成首 Token)跑在”预填充池”,高带宽需求的解码阶段(Decode,逐 Token 生成)跑在”解码池”,中间通过 RDMA 网络把 KV Cache 从 P 池传到 D 池。这样两个阶段不再抢占同一批 GPU 资源,吞吐最高提升约 50%,长上下文请求的延迟也大幅下降。2026 年,P/D 分离已成为 vLLM、SGLang、DeepSeek 等生产推理系统的标准配置。

核心价值一句话: 把”算力密集型”和”带宽密集型”的两类任务各归其位,让每块 GPU 只干自己擅长的事,用同样的硬件换更高的吞吐。


为什么需要 P/D 分离?两个阶段在”打架”

大模型推理天然分两个阶段:Prefill 一次性处理整个输入 prompt(如 1000 个 Token),计算密集、需要大量并行算力;Decode 逐个生成输出 Token,显存带宽密集、算力利用率低。

维度 Prefill(预填充) Decode(解码)
计算特性 计算密集,可大规模并行 访存密集,逐 Token 串行
瓶颈 GPU 算力(FLOPs) 显存带宽(HBM)
时长占比 低(一次完成) 高(占总时长 70%+)
最佳部署 高算力卡(如 H100 大 batch) 高带宽卡 + 大 KV Cache

把两者放在同一批 GPU 上跑,就像让”搬运工”和”计算员”共用同一张办公桌:Prefill 突发占用全部算力时,正在 Decode 的请求被迫排队;Decode 请求占满带宽时,Prefill 的并行度又被拖慢。于是系统吞吐被”最差耦合”锁死,还常出现”一个长 prompt 拖垮整批短请求”的尾延迟问题。

P/D 分离怎么工作?一个请求的完整旅程

P/D 分离的架构很简单:P 池只做 Prefill,D 池只做 Decode,中间靠高速网络传 KV Cache。

用户请求
   │
   ▼
[P 池 · Prefill GPU 集群]   ← 高算力池,并行处理输入,产出 KV Cache
   │  生成中间态 KV Cache(可高达数 GB)
   │  通过 RDMA / NVLink 高速传输(关键路径)
   ▼
[D 池 · Decode GPU 集群]    ← 高带宽池,加载 KV Cache 后逐 Token 生成
   │
   ▼
输出 Token 流式返回用户

关键设计有四点:① 弹性配比——P 池与 D 池按业务负载独立扩容(如 1:3),互不拖累;② KV Cache 传输——用 RDMA 网卡把 Prefill 产出的 KV Cache 直接送到 D 池显存,避免落盘;③ 无状态化——请求在 D 池解码完毕后即释放,D 池无需为长连接保活;④ 调度协作——由路由层把同一请求的 Prefill 与 Decode 绑定到相邻节点,减少跨机房传输。DeepSeek 等系统还会叠加 PD+EP(专家并行),让专家网络也按阶段独立调度。

收益有多明显?一体化 vs P/D 分离实测对比

业界公开数据(vLLM 文档与多篇系统论文口径)显示,P/D 分离带来的收益相当可观:

指标 一体化部署 P/D 分离 变化
吞吐量(TTFT 稳定前提) 基线 提升 30%-50% ↑
首 Token 延迟(TTFT) 长 prompt 下抖动明显 稳定、不拖累短请求 大幅改善
算力利用率 混合负载下 40% 左右 各池独立优化至 65%+ ↑
故障域 单个节点故障影响全流程 P/D 池可各自降级 隔离性更好
部署成本 单套集群 多池 + RDMA 网络 ↑(硬件门槛)

需要清醒的是:P/D 分离不是免费午餐——它要求你拥有多节点集群和高速内部网络(至少 200Gbps 级 RDMA),对小规模单机部署反而增加复杂度。它的最优场景是高并发、长上下文、混合负载的生产服务,而非个人本地推理。

怎么落地?vLLM 与 SGLang 的配置示例

当前主流推理框架原生支持 P/D 分离。vLLM 采用”一个引擎多角色”模式:同一集群内用 vllm serve 启动两个引擎实例,分别指定 --role prefill 与 --role decode,并通过共享 KV 传输服务通信:

# P 池节点:只跑 Prefill
vllm serve Qwen/Qwen3-72B-Instruct \
  --role prefill \
  --kv-transfer-config '{"kv_connector":"NcclConnector","kv_role":"kv_producer","kv_parallel_size":2,"kv_rank":0,"kv_leader_addr":"pd-svc:8000"}' \
  --tensor-parallel-size 2

# D 池节点:只跑 Decode
vllm serve Qwen/Qwen3-72B-Instruct \
  --role decode \
  --kv-transfer-config '{"kv_connector":"NcclConnector","kv_role":"kv_consumer","kv_parallel_size":2,"kv_rank":1,"kv_leader_addr":"pd-svc:8000"}' \
  --tensor-parallel-size 2

SGLang 则通过数据并行 + 分阶段配置实现:--dp-size 控制 Prefill/Decode 数据并行度,--enable-pd-disagg 开启分离模式,再配合 --pd-tp-comm-overlap 让 KV 传输与计算重叠。要点是:P 池与 D 池的模型并行配置必须一致(TP 数相同),否则 KV 分片对不上;同时为 KV 传输预留独立网卡或至少独立队列,避免与业务流量争抢带宽。

什么时候该上 P/D 分离?

场景 是否值得 说明
高并发 API 服务(>50 QPS) ✅ 强烈推荐 吞吐收益明显,TTFT 稳定
长上下文/长文档问答 ✅ 推荐 长 prompt 的 Prefill 不再拖垮短请求
单机/双卡部署 ⚠️ 谨慎 网络与显存开销可能超过收益
内部实验、批量离线推理 ❌ 不建议 用连续批处理 + 量化更简单

取舍心法:判断标准不是”酷不酷”,而是”你的流量里 Prefill 与 Decode 是否长期互抢资源”。如果是,P/D 分离就是性价比最高的解;如果负载很轻,先把连续批处理和 KV Cache 优化做好更划算。

总结与延伸阅读

P/D 分离用一句话概括:让算力干算力的活、带宽干带宽的活。它把推理系统的吞吐天花板抬高了 30%-50%,是 2026 年生产级大模型服务绕不开的架构演进。理解它并不难——抓住 Prefill/Decode 资源特性差异、KV Cache 高速传输、P/D 池独立扩缩容这三个关键词就够了。

想继续深入,推荐阅读站内教程: