LLM 推理加速中的 Prefill(预填充) 与 Decode(解码) 分离(也常被称为 Disaggregated Prefill and Decoding)是目前大模型推理优化领域的前沿技术。
其核心目标是解决由于这两个阶段计算特性完全不同而导致的效率瓶颈。
1. 为什么需要分离?(核心矛盾)
LLM 的推理是一个自回归过程,分为两个截然不同的阶段:
| 特性 | Prefill (预填充) | Decode (解码) |
|---|---|---|
| 任务内容 | 处理用户输入的 Prompt,生成第一个 Token | 基于之前的上下文,逐个生成后续 Token |
| 计算类型 | 计算密集型 (Compute-bound) | 访存密集型 (Memory-bound) |
| 并行度 | 高(所有输入 Token 可以并行计算) | 低(必须逐个生成,串行依赖) |
| 资源瓶颈 | GPU 算力 (TFLOPS) | 显存带宽 (Memory Bandwidth) |
| KV Cache | 产生并写入 KV Cache | 读取并更新 KV Cache |
痛点: 在传统的统一架构中,Prefill 和 Decode 抢占同一块 GPU 资源。Prefill 的高延迟会导致正在进行的 Decode 任务出现卡顿(抖动),而 Decode 的低利用率又浪费了 GPU 的计算能力。
2. Prefill-Decode 分离的原理
分离架构的思想是:“让擅长的人做擅长的事”。通过物理或逻辑手段,将这两个阶段分配到不同的显存/算力节点上。
核心步骤:
- Prefill 节点: 专门处理用户的 Prompt。由于并行度高,它能跑满 GPU 的算力,快速产出 KV Cache。
- KV Cache 传输: 将产出的 KV Cache 通过高速网络(如 RDMA)传输到专门的 Decode 节点。
- Decode 节点: 接收缓存并开始逐个生成 Token。由于不需要处理庞大的 Prompt 计算,它只需专注于低延迟的推理更新。
3. 关键技术支撑
要实现高效的分离,需要解决以下几个关键问题:
- KV Cache 转移 (Hand-off): 这是分离技术的最大挑战。KV Cache 的数据量巨大,如果网络传输比计算还慢,分离就没有意义。目前主流方案利用 RDMA 网络进行毫秒级的内存拷贝。
- 计算图解耦: 像 vLLM 或 PD-Attention 这样的框架,将注意力机制的计算逻辑拆分,使得 Prefill 阶段生成的中间结果可以被 Decode 阶段无缝接管。
- 动态调度 (Scheduling): 调度系统需要根据当前的负载情况,决定将请求分配给哪个 Prefill 实例和哪个 Decode 实例,以达到负载均衡。
4. 这种架构带来的好处
- 极高的吞吐量: Decode 阶段不再被 Prefill 阻塞,可以维持极高的并发。
- 更低的延迟 (TTFT & ITL): * TTFT (Time to First Token) 变短,因为 Prefill 资源是专属的。
- ITL (Inter-Token Latency) 变得非常稳定,不会因为突然进来一个长 Prompt 就导致其他用户卡顿。
- 资源利用率最大化: 可以为 Prefill 选配高性能算力卡(如 H100),为 Decode 选配显存带宽大的卡,降低整体硬件成本。
总结
Prefill-Decode 分离本质上是将 “批处理思维” 应用于 Prefill,将 “流处理思维” 应用于 Decode,解决了大模型推理中“快慢任务混杂”的顽疾。
您是想深入了解某个特定的实现框架(如 DeepSeek-V3 的原生多节点架构 或 vLLM 的分块预填充),还是想探讨如何部署这类系统?