⚡ LLM INFERENCE EXPLAINER
什么是大模型的 Prefill(预填充)?
一句话搞懂:大模型回复你之前,一口气“通读并记笔记” 的准备阶段!
第一阶段 (Phase 1)
📖 Prefill 预填充
像考试前:一口气读完题目并列提纲
全量并行
生成 KV Cache
产生第 1 个字 (TTFT)
VS
第二阶段 (Phase 2)
✍️ Decode 解码
像答题时:看着提纲,逐字逐句写答案
逐字单步生成
查阅已有缓存
流式打字输出
🎮 动态演示:亲眼看看 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 条 新记录 |