[控场AI]
· 10 分钟阅读· 5,125 字

一台变两台:LLM推理拆分解耦,吞吐提升75%的工程逻辑

一台变两台:LLM推理拆分解耦,吞吐提升75%的工程逻辑

PD分离把prefill与decode拆到不同硬件,用3%到4%的KV传输成本换取延迟与吞吐的结构性改善。

文章论证LLM推理的prefill(计算密集、决定TTFT)与decode(带宽密集、决定ITL)共享GPU会互相阻塞,在agent负载输入达输出14到16倍时尤为严重。队列模拟显示解耦把p99 ITL从5.0ms降到1.0ms、最坏卡顿从931ms降到1ms,而KV传输仅占TTFT的3%到4%。随后梳理五个系统构成的拆分光谱:Splitwise拆机器、HMA-Serve拆供应商、SPAD拆芯片、Disaggregated Quantization拆checkpoint、KITE拆架构内部。最后以Prime Inference在GB200 NVL72的生产调优(1:4配比、DEP8拓扑、NVFP4 KV、sparse-MLA kernel)佐证同GPU数量承载75%更多请求。

一台变两台:LLM推理拆分解耦,吞吐提升75%的工程逻辑

当Agent类应用的输入token量达到输出token量的14到16倍时,LLM推理的性能瓶颈在结构上已经非常明确:prefill(预填充)和decode(解码)这两个本质不同的任务挤在同一块GPU上,彼此挤压。2026年9月,两篇论文把这种拆分推进到了模型checkpoint和网络架构内部;而Prime Intellect在10月2日上线的Prime Inference,则用GB200 NVL72上"同GPU数量承载75%更多请求"的生产数据,把PD分离从论文概念变成了基础设施标配。

rss source: 75% More Requests, Same GPUs: Why LLM Serving Runs on Two Machines Now

两种计算模式,两种硬件需求

LLM推理可以拆成两个特征几乎完全相反的阶段,理解这个不对称是理解整个技术方向的前提。

Prefill是计算密集型的。 它把整段prompt一次性前向传播,构建KV cache,注意力计算量随prompt长度呈二次增长。它决定的是首token延迟(TTFT)——用户按下回车后要等多久才看到第一个字。

Decode是访存带宽密集型的。 它每次只生成一个token,每一步都要从HBM中重新加载模型权重和不断增长的KV cache。它决定的是inter-token延迟(ITL)——流式输出的节奏感。

把两者塞进同一块GPU,长prompt的prefill会冻结所有正在进行的decode。Agent类工作负载的prompt动辄10万token以上,这种阻塞在尾部延迟上体现得尤为明显:大多数token看起来正常,然后某一个token突然卡住将近一秒。Chunked prefill(把prefill切片与decode交错执行)能缓解这个问题,而解耦则从根本上消除它——decode池永远不会看到prefill。

KV cache(键值缓存) 是理解PD分离的物质基础。Transformer在自回归生成时,每个新token的注意力都要回看此前所有token的Key和Value向量;若不缓存,每生成一个token就要把整段上下文重算一遍,代价随序列长度线性膨胀。KV cache的做法是把每层、每个注意力头的K/V张量驻留在HBM中,decode阶段只追加、不重算。这带来两个直接后果:一是缓存体积随上下文长度、层数、头数和精度线性增长,10万token的agentic prompt可轻松占满数十GB显存;二是decode每步必须把全部权重和全部缓存从HBM搬进计算单元,算术强度极低,因而被带宽而非算力卡住。PD分离中的"交接",本质就是把prefill产出的这份KV cache从一台机器搬到另一台,其体积和传输耗时直接构成TTFT的固定附加成本。压缩KV精度(如NVFP4)既提升单卡可容纳的并发会话数,也等比缩小传输量,是同时优化两个瓶颈的少数手段之一。

Chunked prefill 是解耦之前的主流缓解方案,值得单独说明其边界。它的做法是把长prompt的prefill切成固定大小的块(例如每步2048或4096 token),与正在进行的decode步骤拼成同一个batch送进GPU,使每个调度周期都既有prefill块又有decode token,从而避免一次超长prefill长时间独占SM。代价是prefill被拉长、TTFT上升,且块大小成为需要调参的权衡:块越大,decode被阻塞的窗口越长;块越小,调度开销和权重重复加载越严重。更根本的局限在于,chunked prefill只是把干扰摊薄,prefill与decode仍共享同一份HBM带宽和同一批SM,在输入偏重达14到16倍的agent负载下,两者对资源的争夺无法消除。这正是Prime Inference把prefill预算从8K缩到4K tokens/step能显著降低队列等待的原因——它优化的仍是同一机制内的参数,而PD分离改变的是机制本身。

拆分实验:玩具模拟里的五倍差距

原文作者用一个队列模拟展示了机制层面的差异(1B级模型、16K到64K token的agentic长度prompt、seed 42,明确标注为玩具级模拟)。

在每秒1个请求的负载下,拆分解耦把p99 inter-token延迟从5.0ms降到1.0ms(5倍改善),最坏情况下的卡顿从931ms降到1ms,p90首token延迟从622ms降到448ms。当负载升到每秒2个请求时,混部系统的p99 ITL直接飙升到263ms,而分离系统依然稳定在1ms。KV传输开销约占TTFT的3%到4%——这笔"过路费"真实存在但很小,而且随着prompt变长,它的相对占比还会下降。

这也是全文最有价值的一句判断:交接成本就是产品本身。KV传输工程的成熟度,直接决定拆分是否划算。

五个系统,一条持续深入的拆分线

一篇综述梳理了拆分光谱上的五个代表性系统,方向高度一致:从拆分机器,到拆分模型内部。

Splitwise(ISCA 2024,微软研究院) 是基线方案:不同机器、相同模型,实现1.4倍吞吐、20%成本下降,在相同功耗和成本预算下最高可达2.35倍。其核心观察至今成立:token生成不需要最新GPU的计算能力,没必要为用不上的算力付费。

HMA-Serve(2026年6月) 走向拆分供应商:Tenstorrent Blackhole p150b卡(664 TFLOPS BFP8、约1300美元)跑prefill,NVIDIA HBM GPU跑decode,配合分阶段量化(prefill用BFP8、decode用BF16)和计算-传输流水线重叠。在Qwen3 4B到32B上实现3.2倍goodput、4.8倍每美元goodput,且无质量损失。其经济账很直白:A100在4K token prefill期间浪费超过97%的HBM带宽,而HBM占A100制造成本的18%,在B200上高达45%——昂贵的带宽只在decode阶段有用。

SPAD(普林斯顿/华盛顿大学) 是拆芯片、从零设计:HBM带宽砍掉40%,prefill只慢17%;计算砍掉50%,decode只慢22%——每个阶段都能容忍失去自己不用的资源。集群模拟显示硬件成本降低19%到41%。原文明确提示了局限:这是LLMCompass模拟结果,不是流片硅片,应视作上界而非报价单。

Disaggregated Quantization(2026年9月22日) 拆到checkpoint层面,核心发现是一个不对称性:单独量化decode的精度损失是单独量化prefill的2到4倍(Gemma3-1B上达7倍),因为prefill需要快速低精度数学,decode只需要权重完整加载。其QADD训练产出一个NVFP4的prefill checkpoint与独立的decode checkpoint配合,Qwen3.8-27B做1-bit GGUF压缩时MMLU-Pro提升32.5分,且不触碰decode checkpoint。第三个技巧是从SSD分块流式加载prefill权重,在8K上下文下TTFT快1.78倍。

KITE / Step Scale Transformer(2026年9月23日) 拆到架构内部的独立塔:Prefiller塔构建KV cache,Decoder塔读取它,新增容量从不参与KV构建,因此扩大模型不再扩大prefill成本。67B MoE版本相比63B经典Transformer,分析推理成本降低31.6%且质量更好。其动机来自账单:在OpenRouter 8月22日至9月20日的流量中,未缓存输入token对输出token的比值,Claude Fable 5为16.29倍,GPT-6 Astra为14.64倍——输入费用约占总成本的75%。

Goodput 是这类系统论文偏好的指标,指单位时间内满足服务目标(如TTFT与ITL的SLO)的有效请求量或有效token量,区别于不区分是否超时的原始throughput。它把延迟约束内嵌进分母,因而能反映"快但有用"与"快但排队"的差别。HMA-Serve报告的"每美元goodput"进一步把采购成本放进分子之外的维度:在prefill侧使用低带宽、低成本的加速器,只要其算力足以在SLO内完成预填充,每美元有效产出就会上升。理解这个指标有助于判断各家数字的可比性——1.4倍吞吐、3.2倍goodput、75%更多请求分属不同口径,前者衡量裸容量,后两者衡量在给定延迟目标下的经济效率,后者才是生产环境真正付费购买的东西。

生产验证:Prime Inference的GB200调优数据

研究数据之外,Prime在10月2日发布的生产数据更有说服力。其目标负载是agentic场景:每轮在14万token的prompt上新增6千token,用SemiAnalysis AgentX基准测试。关键调优结论包括:

  • 1:4的prefill/decode配比服务的用户最多:每个prefill组承载66个会话,每用户101 tokens/s
  • DEP8 prefill拓扑在同等硬件上的可用前缀缓存容量约为TEP8的5倍
  • 缩小prefill预算(从8K到4K tokens/step):中位队列等待从550ms降到110ms,中位TTFT降低约20%
  • NVFP4 KV压缩:每条MLA行从576字节降到352字节,每个decoder的缓存token数从109万增至163万
  • 原生sparse-MLA kernel:15个query token时12.0微秒,对比分阶段方案17.7微秒、FP8方案13.7微秒
  • BLHNC KV布局:传输描述符从19559降到1940,平均传输时间从146ms降到78ms

封装层面的进展同样重要:llm-d把PD分离包装成Kubernetes对象,GPU虚拟化让单卡共享约2倍数量的decode实例,换来约20%的集群吞吐提升。这种拆分还在向prefill/decode之外延伸——视觉编码器正从LLM中剥离,MoE系统则把attention与FFN分开。

文中反复出现的DEP8、TEP8是GB200 NVL72上两种不同的并行拓扑命名。字母组合通常表示并行维度的排列:E指 expert parallel(专家并行,针对MoE模型的专家分片),P指 pipeline parallel(流水线并行,把层切分到不同设备),D与T分别对应数据并行与张量并行。DEP8即在同一并行组内以数据/专家/流水线的组合跨8个GPU实例组织prefill或decode服务。不同拓扑决定了KV cache与前缀缓存如何在设备间分布:prefill拓扑若把请求分散到更多独立副本,每个副本可缓存的前缀就更完整,这解释了为何DEP8的可用前缀缓存容量约为TEP8的5倍。前缀缓存命中率直接换算成省掉的prefill计算,因而在高复用率的agent多轮对话中,拓扑选择本身就是成本决策,而不只是部署细节。

几条可以直接带走的判断

单卡跑一个请求,对两个阶段都是妥协。 PD分离已经成为标准基础设施:NVIDIA把它记录为Dynamo的常规配置,云厂商将其列为基线选项。

拆分在持续深入。 从机器(2024)到供应商(2026年中)再到checkpoint与架构(2026年9月)。一个尖锐的问题随之浮现:当两个阶段跑在不同硅片、不同数值格式、不同网络塔上,"服务一个模型"到底还意味着什么?

Prefill就是账单。 Agent流量呈现14到16倍的输入偏重;每一项prefill优化——预算控制、前缀缓存、NVFP4 KV、SST式架构——都直接落在成本上。

小规模别折腾。 调优良好的vLLM单池更简单,轻流量下完全够用。解耦在单模型大规模服务且用户能感知流式SLO时才有回报。

#LLM推理#PD分离#prefill decode disaggregation#KV cache#Prime Inference#vLLM#推理加速
分享:

相关推荐