LLM INFERENCE EXPLAINER

什么是大模型的 Prefill(预填充)

一句话搞懂:大模型回复你之前,一口气“通读并记笔记” 的准备阶段!
第一阶段 (Phase 1)

📖 Prefill 预填充

像考试前:一口气读完题目并列提纲
输入提示 全部 Prompt ⚡ 并行计算 KV 缓存笔记
全量并行 生成 KV Cache 产生第 1 个字 (TTFT)
VS
第二阶段 (Phase 2)

✍️ Decode 解码

像答题时:看着提纲,逐字逐句写答案
查阅笔记 KV Cache 一次蹦 1 字 字1 字2 ...
逐字单步生成 查阅已有缓存 流式打字输出

🎮 动态演示:亲眼看看 Prefill 是怎么跑的

点击下方按钮,观察 GPU 算力和 KV 缓存如何在这两个阶段切换

就绪待命 (IDLE)
📥 输入提示词 (Prompt) 5 Tokens
* Prefill 阶段所有词会同时被点亮
⚡ GPU 运算核心 (Parallel Cores) 空闲
Core 1
Core 2
Core 3
Core 4
Core 5
Core 6
Core 7
Core 8
🧠 显存 KV Cache 笔记本 0 / 0
等待 Prefill 写入记忆...
📤 模型回复 (Output Stream) 0 Tokens
* Decode 阶段逐个蹦出
-- ms
首字时延 (TTFT / Prefill 耗时)
-- ms/字
每字耗时 (TPOT / Decode 速度)
--
当前瓶颈类型 (Bottleneck)

1. 为什么 Prefill 是并行的?

因为你发给模型的 Prompt 已经完整存在了!模型不需要等下一句话,GPU 的成千上万个计算单元可以同时处理所有输入词,一口气算完它们之间的注意力关系。

📝

2. 为什么要存 KV Cache?

如果不存笔记,当模型吐到第 100 个字时,就必须把前 99 个字从头重新算一遍!Prefill 就是提前把所有提示词的“精华特征(Key / Value)”算好存进显存,后续直接查表。

⏱️

3. Prefill 决定了什么体验?

Prefill 的快慢直接决定了 TTFT (Time to First Token,首字延迟)!当你上传一本 50 页的 PDF 时,对话框转圈圈等待的那几秒,就是 GPU 正在飞速进行 Prefill。

📊 Prefill vs Decode 全景对比表

大模型推理的“阴阳两极”

对比维度 ⚡ Prefill 阶段(预填充) ✍️ Decode 阶段(解码)
形象比喻 开卷快速通读整张试卷 动笔一个字一个字写答案
输入特征 一次性拿到完整 Prompt 每一步只有前一步刚生成的 1 个字
计算方式 高度并行 (All tokens at once) 严格串行 (One by one)
硬件瓶颈 算力瓶颈 (Compute-Bound)
矩阵乘法狂吃 GPU 算力
显存带宽瓶颈 (Memory-Bound)
吐每个字都要从显存搬运全套权重
核心影响指标 TTFT (Time to First Token 首字时间) TPS / TPOT (吞吐量 / 每字生成时延)
KV Cache 动作 批量创建 & 写入 显存 读取历史笔记 + 追加 1 条 新记录