Prefill和Decode有什么区别?看懂首字等待与逐字生成
详解大语言模型自回归推理中的Prefill预填充与Decode解码两个阶段,剖析首字等待时间(TTFT)与逐字生成间隔的底层机制与瓶颈。
图解产业阿军编辑 · 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)。关于存储与算力通道的瓶颈机制,可进一步查阅显存容量与显存带宽的作用分析。
完整推理执行步骤
- 输入解析与切分:用户输入的自然语言被词元化(Tokenization)为连续的 Token 序列。
- 执行 Prefill 计算:推理引擎将整个输入序列一次性送入神经网络各层,完成并行注意力矩阵计算,生成第 1 个新 Token,并将各层 Key/Value 向量存入 KV Cache。
- 首字吐出(TTFT):客户端接收到第 1 个 Token,等待结束。
- 循环自回归 Decode:系统将最新 Token 结合已缓存的历史 KV Cache 进行单步推演,生成下一个 Token 并追加进缓存。
- 达到终止条件:重复 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。
继续阅读产业指南
- 带宽、延迟和吞吐量有什么区别?先分清容量上限与实际等待
深入解析带宽、延迟与吞吐量的本质区别。从容量上限到实际往返耗时,拆解单向与往返延迟、排队抖动及理论计算场景,厘清为何不能凭带宽承诺业务响应速度。
- 单模和多模光纤有什么区别?按速率、距离和光模块一起核对
详细对比单模与多模光纤在波导传输机理、规格分级与光模块匹配上的差异,提供基于参数假设的损耗计算与多维度链路工程校验要点。
- 冷板式和浸没式液冷怎么选?沿散热路径比较改造条件
冷板和浸没式液冷如何把热量带出机房?比较介质接触、残余风冷、换热接口、硬件兼容和维护要求,核对能效结论的工况。
- 数据中心 N+1 和 2N 有什么区别?看懂冗余、维护与成本边界
围绕“数据中心N+1和2N区别”解释机制、关键参数、适用边界和核对步骤;用假设案例帮助读者避免把单一指标当成结论。
- 显存容量和显存带宽有什么区别?模型能放下不等于跑得快
深入解析GPU显存容量(GB)与显存带宽(GB/s)的核心差异。阐明模型装得下为何不等于跑得快,拆解Prefill与Decode阶段的计算瓶颈,并提供理论吞吐假设推导与选型边界。
- DAC、AOC 和光模块怎么区分?按距离与维护方式读懂互联
DAC、AOC与独立光模块的区别不只在距离。比较铜与光、一体与分体形态,核对端口速率、分拆支持、兼容性及后期维护。
- InfiniBand 和以太网怎么选?读懂 AI 集群的 Scale-out 网络
围绕“InfiniBand和以太网区别”解释机制、关键参数、适用边界和核对步骤;用假设案例帮助读者避免把单一指标当成结论。
- NVLink 和 PCIe 有什么区别?从互连拓扑到 GPU 通信路径看懂
围绕“NVLink和PCIe区别”解释机制、关键参数、适用边界和核对步骤;用假设案例帮助读者避免把单一指标当成结论。
- PCIe 和 CXL 有什么区别?从 I/O 连接到内存扩展
围绕“PCIe和CXL区别”解释机制、关键参数、适用边界和核对步骤;用假设案例帮助读者避免把单一指标当成结论。
- PUE 怎么计算?为什么数字更低不一定总耗电更少
PUE等于总设施能耗除以IT设备能耗。用算例解释辅助用电比例、负荷率与计量边界,说明低PUE为什么不等于总耗电更少。
- Scale-up 和 Scale-out 有何不同?读懂 AI 集群的两层互联
在AI集群中,Scale-up与Scale-out承担不同通信任务。比较通信域、带宽口径和扩展开销,理解增加GPU为何不保证吞吐同比增长。