大语言模型(LLM)推理加速:预填充(Prefill)和解码(Decode)解耦(PD 分离)
随着大语言模型(LLM)在对话系统、智能助手和 Agent 场景中的广泛落地,推理系统面临的核心挑战已从“能不能跑”转向“如何以更低延迟、更高吞吐、更稳定的方式运行”。在这一背景下,PD Disaggregated(Prefill / Decode 解耦) 逐渐成为大规模在线推理系统中的关键架构思想。 本文将不依赖任何具体推理框架,从 模型推理执行流 的角度,系统阐述什么是 PD Disaggregated、为什么需要它,以及它为 LLM 推理系统带来的核心优势。 LLM 推理的两个本质阶段 所有自回归大语言模型的推理过程,本质上都可以拆解为两个阶段: Prefill(预填充阶段) Prefill 阶段负责处理用户输入的完整 Prompt,其主要任务包括: 对输入序列进行一次完整前向计算; 构建上下文对应的 KV Cache; 生成第一个输出 Token。 这一阶段具有如下特征: 计算密集型(Compute-bound) 大规模矩阵乘法(GEMM)占主导 序列长度通常较长 对批处理(Batching)高度友好 Decode(解码阶段) Decode 阶段进入逐 Token 生成过程,每一步都会: 输入上一个生成的 Token; 读取历史 KV Cache; 生成下一个 Token,直到结束条件满足。 其特征与 Prefill 明显不同: 访存密集型(Memory-bound) 计算规模小,但 KV Cache 访问频繁 强延迟敏感 执行步数随生成长度线性增长 问题根源:Prefill 与 Decode 的“异构性” Prefill 与 Decode 并非同一类工作负载,它们在多个维度上呈现出显著异构性: 维度 Prefill Decode 计算模式 大算子、密集计算 小算子、频繁访存 批处理需求 大 batch 效果最好 batch 过大反而增加延迟 延迟容忍度 相对较高 极低 资源瓶颈 算力 显存带宽 / KV Cache 如果将这两种阶段混合部署、统一调度,就会导致资源使用上的结构性低效。...