🎯核心定义
Prefill/Decode 分离(PD Disaggregation)= 把一次推理请求的两个阶段拆到不同类型的实例上:Prefill 阶段一次并行处理整段 prompt,是矩阵-矩阵运算(GEMM),计算密集、并行度高,GPU 算力利用率高;Decode 阶段逐 token 生成,每步只有 1 个 token 的矩阵-向量运算(GEMV),是带宽密集——每步都要读完整套权重但只产出 1 个 token,GPU 利用率低。分离后 Prefill 实例负责把 prompt 算成 KV Cache,再通过高速网络(RDMA/InfiniBand)把 KV 传给 Decode 实例,Decode 实例专职按批做低延迟生成。调度侧: 两类实例独立扩缩容,Decode 实例按已占用 KV 大小/序列长度做负载均衡(而非连接数),支持 token 级调度与 KVC 传输管线化。
💡使用场景
高并发在线服务(混合长 prompt 与长输出的对话/Agent 场景),要求同时压低 TTFT 与 ITL;vLLM/SGLang 原生支持 PD 分离,DeepSeek 等头部厂商线上即用此架构;面试高频“Prefill 和 Decode 为什么瓶颈不同”“PD 分离解决什么”。
⚡解决的核心痛点
合在一起部署时,Prefill 突发(大 prompt 批量涌入)会占满 GPU 算力,把正在 Decode 的请求的 TTFT/ITL 拖垮,两类负载互相干扰且调度目标冲突。分离后: ① 各自按算力/带宽特征选型与扩缩容,GPU 利用率提升;② TTFT 由 Prefill 实例决定、ITL 由 Decode 实例决定,延迟指标独立可调;③ 长尾与突发由 Prefill 池吸收,Decode 池保持稳定——代价是额外的网络 KV 传输与更复杂的调度。