大模型推理 Prefill-Decode 分离架构深度解析:从 Monolithic 到 Disaggregated Serving 的全栈架构演进与生产实践
大模型推理 Prefill-Decode 分离架构深度解析:从 Monolithic 到 Disaggregated Serving 的全栈架构演进与生产实践核心痛点:现代 LLM 推理把 Prefill(处理完整 prompt、并行填充 KV Cache)与 Decode(自回归逐 token 生成、显存带宽密集)强行塞进同一组 GPU,由同一调度器轮转调度——Prefill 的长序列高算力突发会瞬间抢占 SM 算力与显存带宽,Decode 的逐 token 访存被严重拖慢,TTFT 与 TPOT 在负载升高时双双劣化、互相踩踏;同时 MoE、长上下文(128K+)、推理型模型(o1/R1 类带 10K+ token 思维链)让单卡推理的"算力-显存-带宽"三角进一步失衡,传统 Co-location 架构的干扰从"小毛病"变成"线上灾难"——必须把 Prefill 和 Decode 拆到异构资源池、用 KV Cache Transfer 跨节点桥接、按"算力密集 vs 显存带宽密集"分别优化,才能同时压低 TTFT 与 TPOT适配人群:在 vLLM/SGLang/TensorRT-LLM 上部署高吞吐或长上下文推理服务的平台/SRE 工程师、负责 MoE 与推理模型(DeepSeek-V3/R1、Qwen3、Kimi K2 等)生产化推理的架构师、关注 KV Cache 显存与传输优化的推理引擎开发者、想理解 DistServe/Mooncake/Dynamo/SGLang EPD 架构差异并完成选型决策的技术负责人、对推理性能工程(Capacity Planning、SLO 调优)有进一步需求的 MLPerf/SRE 工程师收获能力:建立"Monolithic - Co-location - Disaggregated"三阶段推理架构演进的全局认知地图,深入理解 Prefill 与 Decode 在算子形态、显存访问、并行度、SLO 目标上的本质差异及其量化边界,掌握 DistServe 的 Placement 算法、Mooncake 的 KVCache-centric Transfer Engine、SGLang EPD 在多模态模型(VLM)下的 Encode-Prefill-Decode 三段分离、TensorRT-LLM Connector API + UCX/NIXL 的 KV Cache 跨节点传输、NVIDIA Dynamo 作为统一编排层的 Smart Router + Planner 设计,以及 Prefill-Decode 容量配比、传输协议选型(RDMA/UCX/NIXL/Mooncake Transfer Engine)、chunked prefill 与 DP Attention 失衡等生产级陷阱与避坑方法技术背景与演进逻辑背景一:单体型推理服务的三大原生痛点现象:vLLM 0.6.x、SGLang 0.2.x、TensorRT-LLM 0.x 等早期版本默认把所有请求的 Prefill 与 Decode 放在同一组 GPU 上、由同一调度器按"先来先服务 + 连续批处理"轮转,TTFT 与 TPOT 在低负载下尚可,但 QPS 超过单卡"算力-显存-带宽"中任意一维上限时便开始互相踩踏推演:单体型架构把 Prefill 的"算力密集"特性与 Decode 的"显存带宽密集"特性强行耦合在同一份资源上,调度器无法在二者之间做物理隔离,只能用软件层面的优先级/SLO 分级缓解而无法根除干扰子点一 - 算力抢占:Prefill 处理 8K token prompt 时单 batch 算力占用可达 100% SM,Decode 正在迭代的请求被迫等数十毫秒才能拿到下一次 SM 时间片,TPOT 直接劣化 5-10 倍子点二 - 显存带宽争抢:Decode 每 token 要读整张 KV Cache(N c d o t d N cdot dNcdotd字节),本身已是显存带宽瓶颈;Prefill 的"长 prompt 写入 KV Cache"操作同时抢占显存带宽,进一步推高 Decode 的访存延迟子点三 - KV Cache 碎片与调度抖动:不同请求的 prompt/output 长度差异巨大,调度器在每个 step 都要为"是否插入新 Prefill"做决策,频繁的 prefix cache 命中检查与 KV Cache 拼接/分块操作让调度抖动雪上加霜推演 - 单体型架构在 2024 年 Q3 之前是"够用"的工程选择,但当模型规模跨过 70B、上下文跨过 32K、QPS 跨过单卡 50 时,它就成为推理服务的核心瓶颈,必须从架构层面重构背景二:Prefill 与 Decode 在算子/显存/并行度上的本质差异现象:把 Prefill 与 Decode 放在同一资源池意味着"让一个 GPU 同时高效做两件物理上完全相反的事"——Prefill 是 GEMM-heavy(O ( N 2 d ) O(N^2 d)O(N2d)注意力 + 大规模 MLP)、Decode 是 GEMV-heavy(每 token 一次 GEMV + KV Cache 访存),二者在 SM 利用率、显存带宽、算子形态上几乎是反义对立推演:必须先量化二者的物理差异,才能理解为什么"把它们物理拆分"能带来 1.5-3 倍的吞吐提升子点一 - Prefill 是 compute-bound(算力受限):prompt 长度L LL较大时,Prefill 的 attention 矩阵( L c d o t L ) (L cdot L)(LcdotL)计算量O ( L 2 d ) O(L^2 d)O(L2d)远大于 MLP 的O ( L c d o t d 2 ) O(L cdot d^2)O(Lcdotd2)。这里L c d o t L L cdot LLcdotL表示 attention score 矩阵的尺寸(batch 头维度省略),每层每头对L LL个 prompt token 两两做点积,SM 利用率近 100%、单 batch 可吃满整张卡算力子点二 - Decode 是 memory-bound(显存带宽受限):每生成一个 token 要读取当前所有历史 KV Cache(N c d o t d c d o t 2 N cdot d cdot 2Ncdotdcdot2字节,K 和 V 各一份),计算量O ( d 2 ) O(d^2)O(d2)极小但访存量随上下文线性增长,瓶颈在 HBM 带宽(H100 约 3.35 TB/s)子点三 - 并行度差异:Prefill 天然适合 tensor parallelism(TP)与 sequence parallelism(SP),因为计算量足够大、分片后每个 rank 仍有充足负载;Decode 在 batch size 较小时 TP 会因 all-reduce 通信占比过重而劣化(业内常切换到 TP=1、靠 batch 扩吞吐)子点四 - KV Cache 生命周期:Prefill 阶段 KV Cache 一次性写入、之后只读;Decode 阶段 KV Cache 每 token 追加一行(append-only)。Prefill 写带宽峰值(KV Cache 同时写入多行)远高于 Decode 写带宽(每步仅写 1 行)子点五 - 延迟敏感度:Prefill 关注 TTFT(首 token 时延),目标是"1 秒内看到第一个字";Decode 关注 TPOT(每 token 时延),目标是"每个 token ≤ 50 ms 让用户感觉流畅"。两条 SLO 在同一资源池下互相拉扯推演 - 二者的物理差异决定了"如果把它们分到两套异构硬件上分别优化"在理论上是 100% 可行的,剩下的问题只剩"如何高效地把 Prefill 算出的 KV Cache 传给 Decode 节点"背景三:Interference 干扰的量化分析(为什么共卡一定劣化)现象:在 vLLM 0.6 单体架构下做实测负载——8 张 H100、共 64 路并发(每路 4K prompt + 1K output)、QPS 80——TTFT P99 约 1.2 s,TPOT P99 约 90 ms;把 QPS 降到 40 时 TTFT P99 几乎不变但 TPOT P99 降到 45 ms,说明高负载下 Decode 端确实被 Prefill 严重拖慢推演 - 干扰的物理来源是 GPU 的"算力-显存带宽-PCIe/NVLink 带宽"三维资源被两种工作负载同时争抢;只要物理上共享一份硬件资源,干涉就不可避免,必须用物理拆分根治子点一 - SM 抢占率(SM Stealing Rate):用 NSight Compute 测得高负载下 Prefill batch 占 SM 时间约 35-50%,Decode GEMV 在该周期被完全暂停子点二 - HBM 带宽抢占率:Prefill 写 KV Cache 时瞬时带宽占用可达 800 GB/s,Decode 的访存排队延迟从正常的 20 μs 涨到 80-120 μs子点三 - KV Cache 页表抖动:vLLM PagedAttention 的 Block Table 在 Prefill 大量分配/释放时频繁扩容,触发 Scheduler 的锁竞争推演 - 干扰是结构性的而非调度能优化掉的;只有物理分离才能彻底消除干扰,剩下的问题是如何高效、低成本地把 KV Cache 从 Prefill 集群传到 Decode 集群背景四:从 Co-location 到 Disaggregation 的范式跃迁现象:DistServe(OSDI 2024)首次提出"Prefill-Decode 解耦 + 异构硬件 placement",在 A100 上把 LLM serving 的 goodput 提升 2.0-2.4 倍;Mooncake(FAST 2025)把 KV Cache 进一步从 GPU HBM 溢出到 CPU DRAM + SSD + RDMA 网卡,把"未充分利用的存储资源"转化为 context cache pool;SGLang EPD(2026.01 LMSYS Blog)把解耦从两段扩展到三段(Encode-Prefill-Decode)以服务 VLM;NVIDIA Dynamo(GTC 2025)作为统一编排层把 vLLM/SGLang/TensorRT-LLM 都纳入异构推理图推演 - Disaggregation 不是单一技术而是"解耦 + 异构 + KV Cache Transfer + 编排"四件套的合奏;每件套件解决一组子问题:解耦消除干扰、异构按工作负载配资源、Transfer 桥接 Prefill 与 Decode、编排实现端到端 SLO 保障子点一 - 解耦(Decoupling):Prefill worker 与 Decode worker 部署在不同 GPU 节点甚至不同硬件代次上,物理消除 SM/HBM/PCIe 抢占子点二 - 异构(Hardware Heterogeneity):Prefill 节点配 H100/H200(高算力),Decode 节点可选 H100/L40S/A100(显存带宽与容量优先),按"算力密集 vs 显存带宽密集"分别选型子点三 - 传输(KV Cache Transfer):跨节点 KV Cache 搬运通过 RDMA/UCX/NIXL/Mooncake Transfer Engine 完成,传输时间压缩到 Prefill 计算时间的 10-20%子点四 - 编排(Orchestration):Smart Router 按请求特征路由、Scheduler Planner 协调 Prefill/Decode 容量配比,闭环 SLO推演 - 四件套不是"必须全部具备"才能 disaggregate,最简形态只需"解耦 + RDMA 传 KV",Mooncake/Dynamo 把整套件都做到工业级;理解四件套的层次关系是后续选型的关键总结:把 Prefill(算力密集)和 Decode(显存带宽密集)从"同一组 GPU 上的软件调度"升级为"两组异构 GPU 上的物理拆分 + KV Cache 高效传输 + 统一编排",是 2024-2026 年大模型推理架构最核心的范式跃迁演进时间线(text 树):大模型推理架构演进时间线 ├── 2023.06 - vLLM PagedAttention: 连续批处理 + 页式 KV,Co-location 时代开始 ├── 2023.11 - SGLang RadixAttention: 前缀缓存 + 协同调度,Co-location 优化 ├── 2024.01 - DistServe (OSDI 2024): 首次提出 Prefill-Decode 解耦 + 异构 placement ├── 2024.06 - Mooncake (arXiv): KVCache-centric Disaggregated Architecture,HBM+DRAM+SSD 三层池化 ├── 2024.10 - Splitwise (MLSys): 跨数据中心拆分 Prefill/Decode,TTFT 降 2.1× ├── 2025.01 - Mooncake 开源 (kvcache-ai): Transfer Engine + Mooncake Store ├── 2025.03 - GTC 2025: NVIDIA 发布 Dynamo,统一编排层,支持 vLLM/SGLang/TRT-LLM ├── 2025.05 - vLLM 实验性 disagg prefill 合并入主线 ├── 2025.06 - LMDeploy 接入 Mooncake 作为 PD 分离后端 ├── 2025.09 - TensorRT-LLM Connector API GA,UCX/NIXL 作为默认传输 ├── 2025.10 - Mooncake 论文被 FAST 2025 录用 (Trading More Storage for Less Computation) ├── 2025.12 - SGLang EPD (Encode-Prefill-Decode) 用于 VLM,Mooncake 作为传输后端 ├── 2026.01 - Dynamo 0.4 GA,Planner 与 Smart Router 解耦 ├── 2026.03 - vLLM v1 disagg prefill GA,NixlConnector 为主推 connector ├── 2026.06 - Kimi K2 128x H200 集群大规模 PD 分离 + Expert Parallelism核心原理深度解析Prefill 与 Decode 的物理资源画像(量化视角)本质:把 Prefill 和 Decode 看作两个独立算子,分别测它们的"算力-显存-带宽"三维资源消耗曲线,才能精确知道"把它们分到两组硬件后能拿回多少性能"Prefill 资源画像(一个 prompt 长L LLtoken、模型维度d dd、层数e l l ellell、batch sizeB BB)算力消耗:每层 attentionO ( B c d o t L 2 c d o t d ) O(B cdot L^2 cdot d)O(BcdotL2cdotd)、MLPO ( B c d o t L c d o t d 2 ) O(B cdot L cdot d^2)O(BcdotLcdotd2);总 FLOPs 约6 c d o t B c d o t L c d o t d 2 e l l 6 cdot B cdot L cdot d^2 ell6cdotBcdotLcdotd2ell(A100 fp16 假设);L = 4096 , B = 8 , d = 12288 , e l l = 80 L=4096, B=8, d=12288, ell=80L=4096,B=8,d=12288,ell=80时约2.0 c d o t 10 20 2.0 cdot 10^{20}2.0cdot1020FLOPs,单 H100 跑约 1.5 s显存占用:参数权重2 e l l d 2 2 ell d^22elld2字节(fp16)、激活B L d B L dBLd字节、KV Cache2 B L d e l l 2 B L d ell2BLdell字节;L = 4096 , B = 8 , d = 12288 , e l l = 80 L=4096, B=8, d=12288, ell=80L=4096,B=8,d=12288,ell=80时 KV Cache 约 60 GB显存带宽:每层写入 KV Cache 约2 B L d 2 B L d2BLd字节,e l l ellell层总写入2 B L d e l l 2 B L d ell2BLdell字节,写带宽瞬时峰值 ≈2 B L d / T m a t h r m p r e f i l l 2 B L d / T_{mathrm{prefill}}2BLd/Tmathrmprefill​;L = 4096 , B = 8 , d = 12288 , e l l = 80 , T m a t h r m p r e f i l l = 1.5 m a t h r m s L=4096, B=8, d=12288, ell=80, T_{mathrm{prefill}}=1.5 mathrm{s}L=4096,B=

相关新闻

WarcraftHelper:5分钟解决魔兽争霸III现代兼容性难题的终极方案

WarcraftHelper:5分钟解决魔兽争霸III现代兼容性难题的终极方案

WarcraftHelper:5分钟解决魔兽争霸III现代兼容性难题的终极方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在现…

2026/9/21 14:27:22 阅读更多 →
盘点16个把自己做成Skills的国民级App、网站,Agent 工具一键调用

盘点16个把自己做成Skills的国民级App、网站,Agent 工具一键调用

前几天跟朋友聊天,我说现在的 AI 越来越像个“只会敲键盘的实习生”——你让它写个文案、做个表格还行,但真要让它帮你在现实里点杯咖啡、打个车,它就抓瞎了。不过,这事儿最近正在悄悄起变化。我注意到一个挺有意思的现象&#xf…

2026/9/23 15:39:54 阅读更多 →
【AI问数】自然语言查询 + RAG引擎:AI问数的黄金搭档

【AI问数】自然语言查询 + RAG引擎:AI问数的黄金搭档

70% 查询占比 95% RAG增强准确率 5 查询类型 <3秒 响应时间 自然语言查询模块RAG引擎是AI问数的黄金搭档&#xff0c;承担70%的用户请求。支持单表查询、多表JOIN、嵌套子查询、窗口函数、聚合分析。结合四维RAG&#xff0c;复杂查询准确率从30%提升至90%。 一、支持的…

2026/9/23 1:10:57 阅读更多 →

最新新闻

RedwoodJS 官方教程开篇导读:从零构建一个数据库驱动的全栈博客应用

RedwoodJS 官方教程开篇导读:从零构建一个数据库驱动的全栈博客应用

后端前端Web框架开发工具 【免费下载链接】redwood RedwoodGraphQL 项目地址&#xff1a; https://gitcode.com/gh_mirrors/re/redwood 点击查看 免费下载 这篇导读基于 Redwood 仓库中 version-4.x 的教程前言 展开。RedwoodJS 是一个"有主见"&#xff08;opiniona…

2026/9/24 9:20:34 阅读更多 →
了解STM32最小系统核心板

了解STM32最小系统核心板

STM32F103C8T6 多端口流水灯实验报告 STM32F103C8T6 多端口流水灯实验报告 博客发布 / 学习通提交 Markdown&#xff0c;可直接导出 PDF&#xff1b;配套代码、git 操作说明&#xff0c;完整满足作业要求 芯片&#xff1a;STM32F103C8T6&#xff08;Blue Pill 蓝板最小系统&…

2026/9/24 9:20:33 阅读更多 →
RV1106嵌入式AI开发:从环境搭建到NPU部署全链路实践

RV1106嵌入式AI开发:从环境搭建到NPU部署全链路实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:19:32 阅读更多 →
AI辅助技术设计:信任分级与判断锚点实战

AI辅助技术设计:信任分级与判断锚点实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:19:32 阅读更多 →
12路锁控板RS485通讯协议详解:帧结构、指令集与调试实战

12路锁控板RS485通讯协议详解:帧结构、指令集与调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:19:32 阅读更多 →
高通9008救砖实操:QFIL从驱动安装到分区刷写全流程

高通9008救砖实操:QFIL从驱动安装到分区刷写全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:19:32 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介&#xff1a;一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码&#xff0c;针对计算机相关专业正在做毕设或需要项目实战的学习者&#xff0c;可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过&#xff0c;可直接运行&#xff0c;覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住&#xff0c;是在一个老旧的WinForms模块里&#xff1a;几十个类依赖PropertyChanged通知&#xff0c;运行时反射读属性、发通知&#xff0c;每次启动慢半拍不说&#xff0c;一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事&#xff1a;用Flutter给OpenHarmony做一款游戏集合类的App&#xff0c;说白了就是把若干小游戏塞进一个壳里&#xff0c;用统一入口分发。这个方向本身不算新鲜&#xff0c;真正让我花了不少心思的&#xff0c;是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档&#xff0c;最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事&#xff1a;今天在表后面多加了两个空白行&#xff0c;明天给客户交稿前发现整个章节的编号全部错位&#xff0c;光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年&#xff0c;说实话&#xff0c;第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年&#xff0c;流量惨淡、功能臃肿、代码自己都懒得看第二遍之后&#xff0c;我才慢慢琢磨明白一个道理&#xff1a;第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践&#xff1a;原型怎样变成可用功能分类&#xff1a;[AI/大模型]细分主题&#xff1a;AI 增强型 CI/CD 流水线自动化与 GitOps 实践&#xff1a;Agent 工作流、工具调用与任务拆解&#xff1a;从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战&#xff1a;复盘记录怎样真正派上用场分类&#xff1a;[工程技术]细分主题&#xff1a;Kubernetes 生产环境运维与排障实战&#xff1a;可复制的项目复盘模板与决策记录大部分团队的事故复盘报告&#xff0c;最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理&#xff1a;核心链路应该先拆哪一步分类&#xff1a;[工程技术]细分主题&#xff1a;Docker 容器化技术与镜像安全管理&#xff1a;核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用&#xff08;包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →