Prefill 和 Decode 分开部署后,首 token 变慢,首先要区分是 Prefill 排队、计算慢、KV 等待传输,还是 Decode 端迟迟无法接收。只看平均 TTFT 或网卡带宽,通常分不出这几种情况。
先选一个可重现的慢请求,按请求 ID 把路由、两个 worker 与客户端时间线拼起来。以下是复跑和故障定位方法,示例数字用来演示判读,来自假设场景。
先建立同资源基线
在同型号、同数量 GPU 和相同拓扑下,比较原有一体部署与 P/D 两池。基线可以是两张卡各跑一个一体副本,对照一张做 Prefill、另一张做 Decode。固定模型、精度、KV dtype、路由入口、请求分布和缓存命中策略,记录实际 GPU 数、KV 容量和每端并行配置。使用同一份请求序列,分别跑空载短请求、固定输出预算的长 prompt,以及混合负载。记录 TTFT P50/P95、TPOT P95、成功率和满足双延迟目标的吞吐。
单卡一体对比双卡分离也有容量规划价值,但需要把资源差异明示。若仍未建立统一的客户端测量口径,先使用vLLM 和 SGLang 同口径压测方法。如需部署与架构背景,参见PD 分离部署总览。
把一条慢请求拆成阶段
| 阶段 | 建议记录 | 异常时检查 |
|---|---|---|
| 入口到 Prefill 开始 | 网关接收、路由选中、Prefill 队列入出时间 | 路由分配不均、长输入占满批、入口限流 |
| Prefill 计算 | 开始与完成、输入长度、命中前缀长度 | 缓存冷启动、长上下文、GPU 饱和 |
| KV 接收准备与传输 | 接收槽位就绪、提交、实际开始、传输完成、字节数 | 分别看槽位等待、传输队列、带宽和失败重试 |
| Decode 与客户端首包 | KV 可读、worker 出首个内容、客户端收首个有效内容 | Decode 排队、生成、代理缓冲与连接 |
表中的名字是观测事件,具体指标名以所装版本和后端为准。首 token 在哪一侧生成、何时被路由器转发,也应以实际实现为准。跨机时先验证时钟偏差,优先使用各进程用单调时钟得到的阶段耗时。某些实现会把 KV 传输与计算重叠,应按 trace 的关键路径解释端到端延迟。不要把各阶段 P95 相加,也不要用跨机未校时的时间戳相减。
估算 KV 大小,验证带宽是否足以解释变慢
对普通全注意力 GQA 模型,可用 2 × 层数 × KV heads × head dimension × 每元素字节 × 传输 token 数估算未压缩的 KV 逻辑字节数。比如 32 层、8 个 KV heads、每头 128 维、BF16、4,096 个待传 token,约为 512 MiB。若有效带宽为 10 GiB/s,理想数据搬运约 50 ms。若观察到 250 ms,应先确认计时范围是否还包含接收槽位等待、连接建立或队列等待。
这个估算不包含填充、元数据、重复传输和具体张量并行切片,也不适用于直接推算 MLA 或滑动窗口模型。实际用后端记录的字节数和数据传输区间计算有效带宽。网卡标称速率只能用于做上限检查。
按症状做单变量复测
- 只有长 prompt 慢。保持并发和输出预算不变,将输入长度分档。比较 Prefill 计算耗时、实际 KV 字节数和传输时间的斜率。若耗时随字节数上升且传输窗口占主导,再排查数据路径。
- 空载正常,忙时才慢。按相同请求序列逐级增加并发。若 Decode 接收准备阶段先恶化,同时链路吞吐仍低,先检查目标 KV 槽位和 Decode 池的占用。若提交后等待随并发增大,检查传输队列和拥塞。
- 连接成功但带宽异常。分别在两台 worker 核对网卡和实际传输后端,排除接口选错、路由绕行和版本配置差异。用后端日志确认数据走的是预期链路。
- worker 出首包快,客户端仍慢。对同一请求比对 worker 生成、网关收到、客户端收到三处时间。用直连与经代理各做一次流式请求,检查 SSE 是否被缓冲。
1 2 3 4 5 6 7 | # 在 P 和 D 节点分别运行,替换 PEER_IP 和网卡名。 ip route get PEER_IP ip -s link show dev eth0 nvidia-smi topo -m # RDMA 环境按系统已安装工具核对链路及 HCA。 rdma link show ibv_devinfo |
上面的命令核对基础拓扑。若需要测实际传输容量,在获准的测试环境中用与部署一致的后端做链路测量,并与应用 trace 对齐。SGLang 对 Mooncake 和 NIXL 的接口、设备选择与配置要求见SGLang PD 分离官方文档。
什么时候继续用 PD 分离
在相同资源预算下,如果分离后混合负载的 TPOT 尾延迟明显改善,并且 TTFT 仍满足目标、成功率稳定,就有保留价值。如果低并发已经满足目标,而新增的传输与排队使长请求频繁超出 TTFT 门槛,应回到一体方案对照,或仅把确实受益的工作负载路由到分离池。复测时用同一时间窗、请求序列和达标门槛比较。
汤不热吧