长输入与持续出字,可以分开组织
V06/b0 · 先看到干扰
同一资源混跑
prefill 与 decode 争用计算和带宽
受到干扰的输出
下一 token 等待前面的工作
分离带来新的 KV 传输与调度开销;网络和负载决定是否值得。
现在有一批请求正在稳定出字,另一个人突然送来很长的材料。它的 prefill 需要一段密集工作,如果和已有 decode 争同一资源,可能让后续 token 间隔变长。我们先说“可能”,因为实际调度能分块、交错,也可能已经有足够余量。但这确实给出一个系统问题:首 token 和持续出字的需求不同,是否应该让它们使用不同的资源组织?
教师备课:指图与模拟问答
指图与推进 · 不朗读教师指向当前高亮对象,随后推进。
V06/b1 · 分别安排两阶段
prefill 资源池
完成输入阶段,产生请求 KV
decode 资源池
接入请求状态,继续逐 token 生成
分离带来新的 KV 传输与调度开销;网络和负载决定是否值得。
一种办法是把 prefill 放到一组资源,decode 放到另一组资源,让它们分别选择合适的批量和容量。现在请看新增的箭头:prefill 已经为这份输入算好 K/V,decode 要接着用,状态就必须被传过去。它不是只传一句“请继续生成”就能开始工作。网络传输、排队和缓存放在哪里,都进入成本。若传输太贵,或者负载很轻,拆分未必划算。这个例子说明,减少一种干扰以后,往往需要认真处理另一项资源限制。所以判断拆分是否有效,要比较整条请求的代价,而不是只看其中一个阶段更忙或更快。
教师备课:指图与模拟问答
指图与推进 · 不朗读教师指向当前高亮对象,随后推进。
V06/b2 · 名字放回职责
prefill 资源池
完成输入阶段,产生请求 KV
decode 资源池
接入请求状态,继续逐 token 生成
同图定位:LMCache 支持 GPU 外 KV 保存/恢复;Mooncake 提供 KV 池与传输。它们不是每次部署必须依次安装的流水线。
在这张图上,Dynamo 可以作为分布式运行时的例子,帮助路由请求、协调不同工作者和资源。KV 暂时不在 GPU 上时,LMCache 所处理的保存、恢复和复用就出现在这一位置;需要更大的 KV 池和传输能力时,可以理解 Mooncake 对应的职责。它们不是三个必须依次安装的关卡,每个部署要按自己的瓶颈选择组合。把状态放到 GPU 外可以扩大可用容量,但取回来也有延迟。我们这三分钟只走完整一条链:长输入干扰持续生成,分开计算,再把状态可靠交接。更细的组件、缓存依赖和网络条件已经放进主题正文。最后再把这套服务能力接回前面讲过的训练。
教师备课:指图与模拟问答
指图与推进 · 不朗读教师指向当前高亮对象,随后推进。
补充推导、边界与来源
长 prefill 与持续 decode 在同一实例中竞争资源时,可能影响后续 token 的延迟。把两阶段分配给不同资源,可以分别安排批量和容量,但 prefill 已经建立的 KV 必须交给负责 decode 的实例;传输开销、网络、排队、负载差异与缓存位置都会影响收益,因此分离不是所有负载下都更优。
Dynamo 是分布式推理运行时的例子,用于路由和协调工作者等系统职责。LMCache 处理 GPU 外 KV 的保存、恢复及相关复用;Mooncake 提供面向 KV 的池化和传输等组件。它们处在同一系统的不同问题位置,不是每个部署必须依次安装的三个步骤。缓存移到较慢介质后,容量扩大可能以恢复延迟为代价。组件的具体组合和接口应绑定部署版本,课堂仅定位职责。
本页证据与条件
A08;A10;A11;A12;W03;W04