# 📊 文章摘要:pd分离在vllm中用法 > **原文**:[2025-12-01_pd分离在vllm中用法.md](./2025-12-01_pd分离在vllm中用法.md) > **原文链接**:https://blog.csdn.net/qq_44319972/article/details/155456852 > **来源**:CSDN 博客 > **作者**:小徐炸酱面(qq_44319972) > **发布日期**:2025-12-01(2025-12-02 修改) > **摘要日期**:2026-08-06 > **价值评级**:⭐⭐ 中 --- ## 核心命题 > **KV 流转** — vLLM 中 PD 分离工程化的核心是"prefill 生成的 KV 如何让 decode 用起来",本文给出 kv-transfer-config 的参数级配置说明。 --- ## 文章概要 本文是 vLLM PD 分离的实操笔记,把部署要点收敛为一个核心问题:"prefill 生成的 KV,如何让 decode 能够用起来"。文章先定义 P 节点(Producer,看重算力/FLOPs)与 D 节点(customer,看重显存/网络带宽与 tail latency),梳理 KV 流转四步(prefill→分配 KV Block→经 KV Connector/RPC 通道传递位置信息与 metadata→decode 持续访问),再给出 1P1D 场景下 producer 与 decoder 的完整启动命令,逐项解释 kv-transfer-config 的 kv_connector/kv_role/kv_rank/kv_parallel_size/kv_buffer_size/kv_port 及 proxy 三项参数含义,并给出 xPyD 总卡数公式((P+D)×TP×DP)。价值在于参数级细节是综述类文章不具备的、可直接指导部署。局限:无性能验证,且 decoder 示例疑似复制粘贴错误,需修正后使用。 --- ## 关键要点 1. **核心即 KV 流转** — PD 分离成败在于 prefill 产出的 KV 能否高效被 decode 使用,抽象为 KV Connector/RPC 通道 + 状态约定 `[分类: 共识]` 2. **P/D 角色差异** — P 节点看重算力/GPU FLOPs,对长尾小请求不敏感;D 节点看重显存/网络带宽,关注 tail latency(TPOT、e2e) `[分类: 共识]` 3. **并行策略必须匹配** — 有 DP/TP 时 P/D 两侧并行策略须一致,否则出现 KV 维度不一致、block id 对不上等问题 `[分类: 共识]`(实操经验) 4. **kv-transfer-config 参数详解** — kv_role(producer/consumer)、kv_rank、kv_parallel_size(与 TP/world size 一致且 P/D 必须相同)、kv_buffer_size(流水深度,不确定先用 1)、kv_port 及 proxy_ip/proxy_port/http_port 的设置原则 `[分类: 共识]`(实操) 5. **xPyD 规模公式** — 总 GPU 数 = (P+D)×TP×DP;每个 P/D 节点都须能独立加载完整模型,对外经 disagg_proxy 端口转发 `[分类: 共识]`(实操) 6. **调度器拆分** — Producer 侧与 Decoder 侧各自 scheduler,以 request id、已生成 token 数、KV block id 列表、EOS/abort 状态对齐两边约定 `[分类: 共识]` --- ## 批判性分析 ### 假设前提 假设读者已熟悉 vLLM(V1 引擎、scheduler 概念);假设 NCCL 网络与 KV 代理服务可用;假设 KV 通道数(kv_parallel_size)与 TP world size 对齐。 ### 论据与逻辑 无性能数据,属经验整理而非验证性文章;Decoder 节点示例与 Producer 完全相同(vllm_PD_ROLE 与 kv_role 未改,原文已加注提示),说明示例未经实际运行验证,照抄会部署失败——这是论据链的关键缺口;但参数解释与 vLLM 官方文档一致,整体可信度尚可。 ### 边界与局限 仅覆盖 P2pNcclConnector 的 1P1D(单机/双机)场景,未涉及 SharedStorage/LMCache/MultiConnector、多机大规模部署与 kv_buffer_size 调优;作者自述"示意/伪代码",不能替代官方文档。 --- ## 可引用金句 > "PD 分离的**核心**就是:**prefill 生成的 KV,如何让 decode 能够用起来**。" > "如果有 DP/TP,P/D 侧的并行策略也要匹配(否则会出现 KV 维度不一致、block id 对不上等问题)" --- ## 总体评价 **亮点**: - kv-transfer-config 各参数逐项解释,实战稀缺 - 给出可直接照做的启动命令与 xPyD 卡数公式 - 诚实标注"示意/伪代码"并提示 DP/TP 匹配等坑点 **不足**: - decoder 示例疑似复制粘贴错误,须自行修正(角色应改为 kv_consumer) - 无性能验证数据,经验未经实测背书 - 场景覆盖窄(仅 P2pNccl 的 1P1D) **适用场景**:准备在 vLLM V1 上搭建 PD 分离服务的工程师,作为起步配置参考。 **关联建议**:对照 vLLM 官方文档 Disaggregated Prefilling 章节与 KV Connector API V1;参考 cr7258 文中五种 KV Connector 的对比做扩展选型。 --- ## 配图 ![-](../../金鹏/20260806/20260806-003.png)