大模型推理 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/10/18 6:18:02 阅读更多 →
盘点16个把自己做成Skills的国民级App、网站,Agent 工具一键调用

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

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

2026/10/18 6:18:03 阅读更多 →
【AI问数】自然语言查询 + RAG引擎:AI问数的黄金搭档

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

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

2026/10/18 6:18:07 阅读更多 →

最新新闻

Open-Code-Review实战:构建可追溯的代码评审机制

Open-Code-Review实战:构建可追溯的代码评审机制

1. 为什么“open-code-review”值得单独拿出来聊第一次听到“open-code-review”这个词&#xff0c;很多人会下意识把它理解成“把代码评审公开化”&#xff0c;或者“开源项目的代码评审流程”。这两种理解都不算错&#xff0c;但都只碰到了表面。我做了十多年研发&#xff0c…

2026/10/19 8:30:13 阅读更多 →
VTK纹理映射体绘制:原理、参数调优与避坑指南

VTK纹理映射体绘制:原理、参数调优与避坑指南

简介&#xff1a;这份资源围绕VTK纹理映射体绘制与三维纹理映射展开&#xff0c;面向具备一定C与三维可视化基础、希望掌握体绘制纹理应用的开发者与图形学学习者。内容涉及纹理图像加载、vtkTexture纹理对象创建、vtkVolumeMapper与vtkVolume体绘制、vtkVolumeProperty纹理与光…

2026/10/19 8:30:13 阅读更多 →
open-code-review:面向Git工作流的本地化AI代码审查框架

open-code-review:面向Git工作流的本地化AI代码审查框架

1. 这不是又一个“AI代码审查”玩具&#xff1a;open-code-review 的真实定位与设计哲学你肯定见过太多打着“AI code review”旗号的工具——点开网页&#xff0c;粘贴几行代码&#xff0c;等30秒&#xff0c;弹出几条泛泛而谈的“建议”&#xff0c;比如“变量名可读性有待提…

2026/10/19 8:30:13 阅读更多 →
本地化代码审查工具open-code-review:LLM Agent与Git工作流整合实践

本地化代码审查工具open-code-review:LLM Agent与Git工作流整合实践

1. 为什么我要自己动手做一个 open-code-review 工具代码审查这件事&#xff0c;做过团队协作的人都有体会。理想状态下&#xff0c;每次提交都应该有人认真看一遍&#xff0c;指出命名问题、边界条件、潜在的空指针、重复逻辑。但现实是&#xff0c;评审人自己手里一堆活&…

2026/10/19 8:30:13 阅读更多 →
OpenCV图像处理进阶:色彩空间、滤波、二值化与边缘检测实战指南

OpenCV图像处理进阶:色彩空间、滤波、二值化与边缘检测实战指南

刚把第一篇里读图、存图、窗口显示这些基本功跑通的时候&#xff0c;我一度觉得自己已经会 OpenCV 了。直到接了一个模糊照片里的文字区域提取需求&#xff0c;才发现“简单图像处理”这件事&#xff0c;越往后越考验对像素、滤波、阈值这些基础操作的组合能力。第二篇延续这个…

2026/10/19 8:30:13 阅读更多 →
Flutter组件鸿蒙适配实战:Windows与IANA时区转换

Flutter组件鸿蒙适配实战:Windows与IANA时区转换

做全球化的产品&#xff0c;时间问题永远比想象中麻烦。我维护的 Flutter 组件 win2iana_tz_converter&#xff0c;解决的就是 Windows 时区 ID 与 IANA 时区 ID 互转这件事。最近一个阶段&#xff0c;我把它完整适配到了鸿蒙 HarmonyOS 平台上&#xff0c;一边踩坑一边把方案沉…

2026/10/19 8:29:12 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介&#xff1a;本资源为电源技术方向的学术研究文档&#xff0c;聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略&#xff0c;面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

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

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集&#xff0c;共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →