一句话定义:分离式推理(AI 词典:Prefill / Decode">Prefill / Decode Disaggregation)是把大模型推理的两个阶段——预填充(Prefill)和解码(Decode)——放到不同的机器上跑,让各自按自己的节奏扩缩容的一种服务架构。
为什么不放一起跑
- 预填充:把你输入的那一整段提示词(prompt)一次性读完,并行算出每个位置的键值缓存(KV Cache)。这是"计算密集"(compute-bound),算力被塞满,显存带宽用得相对少。
- 解码:开始一个字一个字往外蹦。每生成一个 token,都要把前面所有 token 的 KV Cache 读一遍。算力用得不多,但要在显存里搬大量数据,属于"显存带宽密集"(memory-bound)。
打个比方:预填充像后厨备菜,几百份食材一次性切好腌好,需要一群厨师和一堆砧板同时开工;解码像上菜,一位一位慢慢端出去,快不起来是因为服务员在餐厅里来回跑的速度(显存带宽)。把两者塞进同一个厨房,切菜的人一多,端菜的人就被挤得走不动——表现出来就是:来了一个长提示词的请求,正在生成的其他用户会明显卡一下。
拆开之后怎么工作
预填充机器算完 KV Cache,通过网络传给解码机器,解码机器接着往下生成。所以这条"KV 传输"通道是命门:带宽不够、延迟高,省下的时间又赔回去。工程上通常用高速互联(如 RDMA)来扛。
好处很直接:两个池子分别扩缩容。长文档问答、代码库分析这类"提示词长、生成短"的业务,多配预填充节点;开放式写作这类"生成长"的业务,多配解码节点。延迟也更稳,首 token 延迟(TTFT)和每 token 延迟(TPOT)可以分开调,不互相拖累。代价是多一次网络传输、多一套调度、多一个资源池,规模小的时候大概率不划算。
跟相邻概念的区别
| 概念 | 拆的是什么 | 主要目的 |
|---|---|---|
| 分离式推理 | 预填充与解码拆到不同机器 | 两个资源画像不同的阶段各自最优 |
| 连续批处理(Continuous Batching) | 同一实例内动态拼批 | 提高单卡吞吐与利用率 |
| 张量并行 / 流水线并行(TP / PP) | 同一个模型切到多张卡 | 装得下、算得快 |
| 前缀缓存(Prefix Caching) | 复用相同前缀的 KV Cache | 省掉重复的预填充计算 |
| 投机解码(Speculative Decoding) | 用小模型先"打草稿" | 降低单个 token 的生成延迟 |
一句话:批处理和并行是"在一台机器上想办法",分离式推理是"把两件事分给两台机器"。
对从业者的实际意义
容量规划要分开做:预填充池按算力算,解码池按显存容量和带宽算。监控要分开看 TTFT 和 TPOT,混在一起会掩盖问题。KV Cache 的传输格式、压缩和调度策略会成为新的核心话题。
对普通用户和产品经理,感知到的是:处理长文档、长对话时第一个字来得更快,中途卡顿更少。各家推理框架和云服务的具体支持程度与配置方式,以官方页面为准。
