免费技术解读

Prefill和Decode有什么区别?看懂首字等待与逐字生成

详解大语言模型自回归推理中的Prefill预填充与Decode解码两个阶段,剖析首字等待时间(TTFT)与逐字生成间隔的底层机制与瓶颈。

阿军图解产业 · AI 辅助整理 · · 约 4 分钟阅读

图解产业阿军编辑 · AI 辅助整理与编辑核查

在日常使用大语言模型(LLM)对话时,用户通常会经历两个不同的响应阶段:发送提示词后屏幕出现第一个字前的明显停顿,以及首字跳出后文字像打字机一样逐个排出的过程。

在自回归大语言模型的推理流程中,这两个阶段分别对应 Prefill(预填充) 与 Decode(解码):

  • Prefill 阶段负责处理输入的上下文:它并行处理输入提示词的词元(Tokens),也可分块或复用已有前缀缓存,构建键值缓存(KV Cache),其耗时是**首字等待时间(TTFT, Time to First Token)**的重要组成部分;排队、网络和调度也会影响它。
  • Decode 阶段负责逐字输出内容:它基于已输入的上下文及历史 KV Cache,以自回归方式逐个预测并输出下一个 Token,决定了**词元生成间隔(ITL, Inter-Token Latency)**与吐字流程度。

要全面了解模型从训练参数转化为线上可用服务的全貌,可参考我们的AI训练与推理的区别基础指南。


术语与底层运行机制拆解

大模型在处理输入与生成回答时,计算特征截然不同:

1. Prefill(预填充阶段)

用户发送的 Prompt 中所有 Token 在初始时刻均已确定,系统可调用 GPU 的大规模矩阵乘法单元并行处理整个序列。参考 NVIDIA 开发者技术博客关于大模型推理优化 的分析,Prefill 阶段通过并行前向传播完整处理输入内容,并构建初始的键值对缓存(KV Cache)。当单次输入上下文较长或并发 Batch 适中时,该阶段通常倾向于计算受限(Compute-bound),即运算单元的浮点计算吞吐量直接影响首字出现快慢。

2. Decode(解码阶段)

自回归生成模式下,模型每一步前向传播仅产出 1 个 Token。为了预测下一个词,系统需要访问本步计算用到的权重和历史 KV 数据;实际读取量取决于模型架构、缓存及注意力实现。在小并发或单请求场景下,计算强度相对较低而数据搬运需求极高,因而通常倾向于显存带宽受限(Memory-bandwidth bound)。关于存储与算力通道的瓶颈机制,可进一步查阅显存容量与显存带宽的作用分析。


完整推理执行步骤

  1. 输入解析与切分:用户输入的自然语言被词元化(Tokenization)为连续的 Token 序列。
  2. 执行 Prefill 计算:推理引擎将整个输入序列一次性送入神经网络各层,完成并行注意力矩阵计算,生成第 1 个新 Token,并将各层 Key/Value 向量存入 KV Cache。
  3. 首字吐出(TTFT):客户端接收到第 1 个 Token,等待结束。
  4. 循环自回归 Decode:系统将最新 Token 结合已缓存的历史 KV Cache 进行单步推演,生成下一个 Token 并追加进缓存。
  5. 达到终止条件:重复 Decode 循环,直到触发结束符(EOS)或达到最大输出长度限制,结束本次推理。

核心维度对比速查

比较维度 Prefill(预填充)阶段 Decode(解码)阶段
主要目标 消化输入文本并建立上下文缓存 逐词推导并生成后续回答内容
处理模式 输入 Token 并行处理,可分块或复用缓存 自回归单步串行推演
主要性能指标 首字等待时间(TTFT) 词元生成间隔(ITL)与吞吐速率
典型瓶颈倾向 序列较长或批量适中时偏向计算受限 单请求或小并发时偏向显存带宽受限
KV Cache 操作 计算输入对应缓存,或复用已有前缀 每步读取历史数据并增量追加

理论推演示例(假设场景)

说明:以下数据仅作为解释阶段差异的理论演示模型,并非特定硬件或线上环境的实测数据。

假设用户向大模型提交了一段包含 1,000 个 Token 的参考资料,要求生成一段约 200 个 Token 的提炼摘要:

  • Prefill 阶段:系统在首个时间窗口内对 1,000 个输入 Token 展开并行矩阵运算,同时写入对应的 KV 缓存。在此期间客户端处于等待状态,其耗时构成 TTFT 的一部分。
  • Decode 阶段:模型紧接着进入后续约 199 次单词元解码步骤(首个输出已在预填充结束时产生)。每次解码会访问所需的历史 KV 数据,推导出 1 个新 Token 并发送到前端,用户感知为文字平稳吐出。

常见认知误区与评估边界

实际评估时需注意以下边界:

  • 误区一:把吐字慢单纯归咎于 GPU 算力不够。在小批量的 Decode 阶段,瓶颈主要落在显存带宽与数据搬运上。如果不提升显存带宽或改善缓存复用率,盲目堆砌浮点算力往往无法显著缩短逐字生成间隔。
  • 误区二:认为计算瓶颈或带宽瓶颈是固定不变的。阶段属性与并发批处理大小(Batch Size)及上下文长度紧密相关。当并发规模极大时,Decode 阶段聚集的大量请求也能填满计算单元转向计算受限;反之极短的提示词在 Prefill 阶段也可能受制于冷启动与数据载入。
  • 误区三:混淆系统吞吐量与单用户延迟。服务商通过批处理提升整体吞吐量时,往往需要积攒请求或动态调度,这可能会对单用户的首字响应时间带来排队妥协。

延伸阅读与下一步

搞清 Prefill 与 Decode 的分工,是理解当前大模型推理优化技术(如 Chunked Prefill、PagedAttention 与算力分离部署)的关键切入点。读者可结合显存容量与显存带宽指南,进一步理清底层硬件参数对模型运行效能的具体影响。

声明:本文为产业技术科普指南,旨在解析通用软硬件原理,不构成任何商业投资、设备采购或选型承诺建议。

文中算例用于解释原理,具体参数请按引用资料与产品条件核对。发现问题,可将文章链接与依据发送至 support@packscena.com。

查看全部产业指南 →