在大型语言模型(LLM)推理中,经常会听到“Prefill 阶段”和“Decoder 阶段”这两个术语,以及最近业界提出的Prefill-Decoder 分离架构。对于初学者来说,这些概念可能有些陌生。简单来说,可以将整个推理过程想象成两部分:**第一部分(Prefill)**就像模型阅读并“记忆”输入内容,第二部分(Decoder)则是模型根据记忆逐字逐句生成回答。这两部分对计算资源的需求和运行方式截然不同,带来了很多工程上的挑战和优化空间。
在本文中,我们将以通俗易懂的方式介绍大型模型推理中的 Prefill 与 Decoder 阶段,并重点讲解为何要将这两阶段解耦为分离架构。我们还将结合 Moonshot 团队的 Kimi 大模型实际案例,看看它如何通过 Prefill-Decoder 分离架构克服推理中的资源挑战,实现高效的模型服务。文章将包含以下内容:
- 引言:大型模型推理的资源挑战,以及 Prefill 阶段和 Decoder 阶段的基本概念。
- 技术背景:Transformer 模型的推理流程、KV Cache(键值缓存)的作用,以及 Prefill 和 Decoder 两阶段在计算资源占用和时序上的差异。
- Prefill-Decoder 分离的动机&#x