本次查询:Chunked Prefill
中文解释:分块预填充
常见场景:大语言模型在线服务 / 长文本生成 / 流式输出 / 高并发推理场景
一句话解释
Chunked Prefill 就是把大模型一次性处理完整输入(Prefill)的动作,拆分成多个小块依次处理。就像吃蛋糕不一口吞下,而是一口一口吃,这样不会噎着,还能同时做其他事。
为什么会被关注
大模型处理超长上下文(如整本书或代码库)时,完整 Prefill 会瞬间占满显存,甚至直接 OOM(显存溢出)。Chunked Prefill 通过分块降低单次显存峰值,让长序列推理成为可能。
它还能提升批处理效率:在分块间隙可以插入其他请求的解码步骤,实现更细粒度的流水线并行,提高 GPU 利用率,降低用户感受到的首 token 延迟。
核心逻辑
传统 Prefill 将整个输入序列一次性计算所有注意力,产生完整 KV Cache。Chunked Prefill 先把输入切成长度固定的块(如 512 token),逐块计算注意力,每个块只更新当前块的 KV Cache。
关键在于块间注意力的衔接:后一个块仍需看到前面所有块的 Key/Value,因此需要维护全局 KV Cache 的增量更新,并通过特殊的注意力掩码保证因果性。分块大小需平衡显存开销和计算冗余。
常见场景
高并发长文本生成:在聊天机器人、文档总结等场景中,用户输入动辄数千 token。Chunked Prefill 允许服务端同时处理多条长请求而不过载。
流式文字输出:配合分块策略,模型可以更早输出第一个 token,实现逐字流式返回,提升交互体验。此外,在推理引擎如 vLLM、TensorRT-LLM 中已作为默认优化选项。
容易混淆的点
不要将 Chunked Prefill 与“分块推理”混为一谈。后者指将整个序列切块分别推理后再拼接,而 Chunked Prefill 仅改变预填充阶段的计算顺序,解码阶段仍逐 token 进行。
它也不等于“稀疏注意力”或“滑动窗口”。Chunked Prefill 并未减少注意力计算量,只是调整计算时机以缓解显存压力;而稀疏注意力是通过跳过部分 token 来降低计算复杂度。
