【LLM 推理图解】Transformer 如何完成一次推理?一文搞懂 Prefill 与 Decode
很多人学完 Self-Attention、QKV、FFN 之后,一打开 vLLM / SGLang 源码,立刻懵了。
文档里到处是:
- Prefill
- Decode
- KV Cache
- TTFT
- Tokens/s
几乎没人再聊 Attention 公式。
原因很简单:
Transformer 是模型结构;Prefill + Decode,才是它在 GPU 上真正的运行方式。
看不懂这两阶段,后面所有推理优化都会像在背名词。
本篇先不讲公式,先把 LLM 推理的「整体操作系统」立起来。
一、先建立整体流程
假设用户输入:
北京到上海有多少公里?
模型真正执行的,大致是下面这条链路。

| 用户输入 ↓ Tokenizer ↓ Embedding ↓ Transformer ↓ Linear ↓ Softmax ↓ 预测一个 Token ↓ 拼回输入,继续预测下一个 |
所以可以先记住一句非常粗暴、但也非常有用的话:
Transformer 本质就是一个 Next Token Predictor(下一个 Token 预测器)。
整个推理,就是不断重复:
| 预测一个 Token → 加入上下文 → 再预测 |
直到吐出<EOS>。
但问题来了:
如果 GPU 真的「从头到尾一直在做同一种事」,为什么工业界非要拆成 Prefill 和 Decode?
二、真正的推理其实分成两个阶段
整体流程看起来一直在循环,但 GPU 实际执行时,并不是同一种计算。
一次请求的生命周期,更像这样:

- Prefill 只发生一次
- Decode 会循环很多次
后面几乎所有推理优化——FlashAttention、PagedAttention、Continuous Batching、Speculative Decoding——都在围着这两段转。
所以这两个阶段,必须先搞懂。
三、Prefill:一次性处理整个 Prompt
假设 Prompt 被切成:
| 北京 到 上海 有 多远 ? → T1 T2 T3 T4 T5 T6 T7 |
很多人第一次会误以为:
Transformer 是一个 Token 一个 Token 往前算。
实际上不是。
Prefill 会把整个 Prompt一次性喂进 GPU,做一次 Forward。
这张图里,Prefill 至少干了三件事。
1. 并行计算整个 Prompt
所有 Token 同时进入 Transformer。
GPU 最擅长的就是大矩阵乘法,所以:
Prefill 通常是 GPU 利用率最高的阶段。
这也是为什么「长 Prompt」往往不如「长生成」那么可怕——至少 Prefill 端还能把算力打满。
2. 生成 Hidden States,并预测第一个回答 Token
每个 Token 都会得到自己的 Hidden State:
| T1 → H1 T2 → H2 … T7 → H7 |
真正用来预测「下一个 Token」的,通常是最后一个位置的 Hidden State:
| H7 → Linear → Softmax → 「大约」 |
所以 Prefill 不只是「读懂 Prompt」,它还直接产出了首个生成 Token。
这就是 TTFT(Time To First Token)里,很大一部分延迟从哪来。
3. 最重要:写出 KV Cache
每一层 Attention 都会产生 Q、K、V。
其中:
- K(Key)
- V(Value)
会被按层缓存下来:
| Layer1: K, V Layer2: K, V … Layer32: K, V |
这些内容统称:
KV Cache
后续 Decode 几乎完全依赖它。
很多教程把它当成「附带产物」。
在真正的推理引擎里,它才是 Prefill 最核心的交付物。
四、为什么 Prefill 只执行一次?
最容易问的问题是:
为什么不每生成一个 Token,就重新把整个上下文再 Forward 一遍?
比如:
| 第 1 次:北京 到 上海 有 多远? 第 2 次:北京 到 上海 有 多远?大约 第 3 次:北京 到 上海 有 多远?大约 1200 |
如果每一步都重新算:
| 7 Token → 8 Token → 9 Token → … |
历史部分明明没变,你却在反复重算同一段 K / V。
这正是 KV Cache 存在的理由:
历史 Prompt 的 K、V 先缓存;之后每来一个新 Token,只算它自己的增量,再拼进 Cache。
所以:
Prefill 不是「算一遍 Prompt 而已」,而是「为后面所有 Decode 交一张可复用的通行证」。
没有这张通行证,Decode 会贵到不可上线。
五、Prefill 和 Decode 的职责完全不同
初学者常见误区:
Prompt 很长,所以推理很慢。
实际上,慢在哪一段,要拆开看。

PrefillDecode整个 Prompt 一次 Forward每次只生成一个 TokenGPU 利用率高GPU 利用率往往更低建立 KV Cache复用并持续追加 KV Cache每个请求通常只执行一次重复执行直到结束决定首 Token 延迟(TTFT)决定生成速度(Tokens/s)
因此,工业界几乎不会把它们当同一种工作负载:
- Prefill 更像compute-bound
- Decode 更像memory-bound
于是框架也会分别优化:
- Prefill 延迟
- Decode 吞吐
混在一起谈「推理优化」,往往会对不上病。
六、先把这张思维框架钉死
如果本章只带走一张图,请带走这张:

Prompt
↓
Prefill(一次)
↓
生成 KV Cache
↓
Decode(很多次)
↓
不断生成 Token
↓
回答结束
后面你看到的所有「高级词」,其实都在优化这张图里的某一环:
- FlashAttention:加速 Prefill 的 Attention 计算
- PagedAttention:优化 Decode 的 KV Cache 管理
- Continuous Batching:提高 Decode 阶段 GPU 利用率
- Speculative Decoding:减少 Decode 次数
所以本系列的立场是:
理解 Prefill 和 Decode,是理解整个 LLM 推理体系的第一步。
公式可以后补;这两段生命周期,必须先立住。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐



所有评论(0)