- 46 篇原文+摘要双文件归档(按 来源/作者 分层,复用本地归档 20 篇+新抓取 26 篇) - 即梦生成 9 组主题配图(大图+列表缩略图)存入 知识/金鹏/20260806/ - 章节重组为 9 个主题分组并挂接摘要引用
81 lines
4.4 KiB
Markdown
81 lines
4.4 KiB
Markdown
# 📊 文章摘要: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 的对比做扩展选型。
|
||
|
||
---
|
||
|
||
## 配图
|
||
|
||

|