本文详细解析了LLM从接收输入到生成输出的完整推理流程,包括Token化、嵌入、Transformer层的自注意力和前馈网络等关键阶段。文章分析了预填充和解码两个主要计算阶段的特点,指出预填充是计算密集型,解码是内存密集型,并深入探讨了KV缓存的作用及其优化策略,如量化、滑动窗口注意力等。此外,还介绍了现代推理服务器的优化技术,如连续批处理和推测解码,以及vLLM框架等。最后,文章提出了实际部署中可能遇到的瓶颈问题及解决方案,帮助读者更好地理解和优化LLM的推理性能。
每次对 LLM 调用 generate() 都会在同一块 GPU 上运行两个不同的计算阶段:
- 预填充(prefill),即处理提示词,属于计算密集型(compute-bound)
- 而解码(decode),即逐 token 生成,属于内存密集型(memory-bound)
大多数推理优化都针对其中一个阶段,诊断哪个阶段是瓶颈是让部署变快的第一步。
本文将带你走完整个流水线——从 token 化输入到流式输出,并分析每个阶段的时间都花在了哪里。
Token 化与嵌入
像字节对编码(BPE)这样的分词器将原始文本转换为来自约 50,000 个 token 词汇表的整数 ID。
prompt = "How does inference work?" ids = tokenizer.encode(prompt) # ids -> [2437, 1374, 32278, 670, 30]每个 ID 映射到嵌入表中的一行,嵌入表是一个形状为 [vocab_size, hidden_dim] 的学习矩阵。对于一个隐藏维度为 4,096 的模型,每个 token 变成一个 4,096 维的向量。
# embedding_table has shape [vocab_size, hidden_dim] vectors = embedding_table[ids] # shape: [num_tokens, 4096]位置信息在这一阶段被注入。
大多数现代架构使用旋转位置嵌入(RoPE),它通过旋转嵌入向量来编码位置,而不是加上一个单独的位置向量。
Transformer 层
嵌入后的序列会经过一个由多个 transformer 层组成的堆栈(通常在 32 到 80+ 层之间,取决于模型规模)。
每一层依次执行两个操作:
- 自注意力(self-attention) 通过已学习的权重矩阵为每个 token 计算三个投影(查询 Q、键 K、值 V)。
每个 token 的查询与所有其他 token 的键进行打分,这些分数(经过缩放和 softmax 后)决定了每个 token 的值被混入多少。
# scores: how much each token attends to every other token Q, K, V = x @ Wq, x @ Wk, x @ Wv scores = (Q @ K.T) / sqrt (d_k) weights = softmax(scaled) # one row per token, sums to 1 attn_output = weights @ V- 2. 前馈网络(FFN) 通过一个两层 MLP 独立地处理每个 token 的向量。注意力在位置之间传递信息,FFN 则对其进行变换。
经过最后一层后,模型将最后一个 token 的隐藏状态投影回词汇表大小([hidden_dim, vocab_size]),应用 softmax,并从结果分布中采样以生成第一个输出 token。
预填充(prefill):计算密集型阶段
处理输入提示词是第一阶段。所有 token 并行处理:同时为所有 token 计算 Q、K、V,注意力以大矩阵-矩阵乘法的形式运行。
这是计算密集型工作。GPU 的算术吞吐量是瓶颈,利用率很高。衡量这一阶段的指标是首 token 延迟(TTFT),即第一个输出 token 出现之前的等待时间。
在预填充阶段,模型还会填充 KV 缓存(KV cache):每一层的 K 和 V 张量被存储在 GPU 内存中以供复用。
# Prefill: process the whole prompt in one shot hidden = embed(prompt_tokens) + positions for layer in model.layers: Q, K, V = project(hidden) # for ALL tokens at once hidden = attention(Q, K, V) + hidden hidden = feedforward(hidden) + hidden cache_kv(layer, K, V) # save for later first_token = sample(project_to_vocab(hidden[-1]))解码(decode):内存密集型阶段
一旦第一个 token 生成,模型便切换为一次生成一个 token。对于每个新 token,它只计算该单个 token 的 Q、K、V。所有先前 token 的 K 和 V 已经在缓存中。
# Decode: one token per iteration token = first_token steps = 0 while token != STOP and steps < MAX_STEPS: x = embed(token) + position(steps) for layer in model.layers: q, k, v = project(x) K_all, V_all = caches[layer].append(k, v) # cached history + new x = layer.forward(q, K_all, V_all, x) # attention + FFN, residuals token = sample(project_to_vocab(x)) steps += 1 yield token每一步的计算量都很小(一个查询向量与缓存的键矩阵相乘,而不是完整的矩阵-矩阵乘法)。但 GPU 仍然需要为这点计算加载每一个权重矩阵和整个缓存中的 K/V。瓶颈从计算转向了内存带宽。
衡量这一阶段的指标是 token 间延迟(ITL):连续输出 token 之间的间隔时间。低 ITL 是让模型感觉流畅响应的关键。
KV 缓存
如果没有缓存,生成 1,000 个 token 的响应需要在每一步重新计算整个不断增长的序列上的注意力,导致二次复杂度。
KV 缓存一次性存储每一层的 K 和 V 张量,并逐步追加新条目。
对于长文本生成,加速比约为 5 倍或更高。
代价是缓存随序列长度线性增长,并且每一层都存在一份。对于一个 13B 参数的模型,缓存每 token 大约消耗 1 MB。一个 4K token 的上下文仅缓存就要烧掉 4 GB 的显存。
这就是长上下文变得昂贵的原因。缓存在 GPU 内存中与批量大小(batch size)直接竞争——即每个请求的缓存越多,每个 GPU 上能并发的请求就越少。
标准的缓解方案包括将缓存量化(quantization)到 INT8 或 INT4、滑动窗口注意力(丢弃固定窗口之外的 token)、分组查询注意力(GQA,在注意力头之间共享 K/V 以减少缓存的张量数量),以及分页注意力(PagedAttention,vLLM 背后的内存管理技巧,像操作系统分页虚拟内存一样对缓存进行分页,消除碎片)。
围绕缓存重新设计注意力
量化和分页将 KV 缓存视为一个需要管理的固定成本。DeepSeek 的 V4 系列(于 2025 年 4 月发布)采取了不同的思路:重新设计注意力,让缓存在一开始就结构性地更小。
V4 使用了两种压缩注意力机制的混合方案。
压缩稀疏注意力(CSA)使用 softmax 门控池化将 KV 条目压缩 4 倍,然后在压缩后的 token 上应用稀疏注意力。
重度压缩注意力(HCA)则更激进。它将 128 个 token 的 KV 条目合并为一个压缩条目,并在这些表示上应用密集注意力。
在 1M token 的上下文下,V4-Pro 仅需 DeepSeek-V3.2 单 token 推理 FLOPs 的 27% 和 KV 缓存的 10%。
按绝对值算,在 1M 上下文、bf16 精度下,每个序列的 KV 缓存为 9.62 GiB,而 V3.2 风格的架构预估需要 83.9 GiB。再叠加上 fp4/fp8 量化,缓存还能再缩小 2 倍。
KV 缓存已经成为该领域在模型架构层面围绕其进行优化的核心约束。
量化
训练使用 FP32 或 BF16 以保证梯度稳定性。推理不需要那么高的精度。降低位宽带来的内存节省是线性的:
- 7B 参数,FP32:28 GB
- 7B 参数,FP16/BF16:14 GB
- 7B 参数,INT8:7 GB
- 7B 参数,INT4:3.5 GB
INT4 正是 7B 模型能在 4-6 GB 显存的笔记本 GPU 上运行的原因。GPTQ 和 AWQ 等方法使用逐通道缩放因子,以最小化有损压缩带来的质量下降。
做得好的话,INT4 在标准基准测试上能达到与全精度模型相差 1-2 个百分点的水平。
从 FP16 到 INT8 通常能将推理延迟减半,且质量损失可忽略不计,这使得量化成为大多数部署中杠杆最高的单一优化手段。
推理服务基础设施
现代推理服务器在预填充-解码循环之上叠加了若干优化:
- 连续批处理(continuous batching) 在同一 GPU 计算步骤中交错处理来自多个请求的 token,即使在内存密集型的解码阶段也能保持高利用率。
- 推测解码(speculative decoding) 使用一个小型草稿模型提议多个 token,然后由大模型在单次前向传播中验证它们。当草稿模型的接受率较高时,这实际上将多个串行的解码步骤转换为一次并行验证。
- 分页注意力(PagedAttention)(vLLM)以固定大小的块管理 KV 缓存内存,消除碎片,使每个 GPU 能容纳更多并发请求。
vLLM、TensorRT-LLM 和 Text Generation Inference(TGI)等框架整合了这些技术。一块 GPU 可以同时服务数十个并发用户,因为解码阶段留下了大部分算术计算能力处于空闲状态,而连续批处理用其他请求填补了这些空闲算力。
完整的推理路径
Token 化: 文本通过 BPE 转换为整数 ID。
嵌入: ID 变为向量。RoPE 编码位置。
预填充: 所有输入 token 并行通过每一层处理。计算密集型。填充 KV 缓存。产出第一个 token。
解码循环: 每步一个 token:为新 token 投影 Q,在缓存的 K/V 上执行注意力,运行 FFN,采样。将新的 K/V 追加到缓存。内存密集型。
去 Token 化: Token ID 映射回文本并流式输出。
一些实际启示
- 长提示词在 TTFT(预填充)上代价高昂
- 长输出在 ITL(解码)上代价高昂
- 且它们施压于不同的硬件资源
- 上下文长度不是免费的,因为它会膨胀 KV 缓存并直接降低批处理容量
- 即使服务器满载,解码阶段的 GPU 利用率也可能降至 30%,因为瓶颈是内存带宽而非算术计算
- 解决方案不是更强的算力,而是更快的内存、更小的缓存或更好的批处理
当有人告诉你他们的模型很慢时,第一步诊断就是判断它是启动慢(预填充受限,优化 TTFT)还是流式输出慢(解码受限,优化 ITL)。
👉 轮到你来说:你的部署中遇到的是 TTFT 还是 ITL 瓶颈?你是如何解决的?
以上就是全部内容!
最后
如果说程序员已经是高薪职业,那么干AI的程序员,就是高薪中的高薪。
现在的市场,已经用数据给程序员指明了方向:学AI大模型,就是冲刺高薪的最优解!
看着身边越来越多的同行转型大模型、拿到高薪offer,很多人心里都动了心,但真正的难题来了:零基础小白不知道从哪入门?有基础的程序员找不到系统学习路径?实战项目练手无门?面试不知道考什么?
别慌!今天就给大家整理了一份【2026年最新版】AI大模型免费学习资源包,覆盖从入门到实战、从理论到面试、从基础到进阶的全流程,所有资料均已整理归档,无冗余、无套路,免费分享给每一位想抓住AI风口的程序员和小白!
👇👇扫码免费领取全部内容👇👇
1、大模型系统化学习路线
2、大模型学习书籍&文档
3、AI大模型最新行业报告
4、大模型项目实战&配套源码
5、大模型大厂面试真题
四阶段精细化学习规划(附时间节点,可直接照做)
结合上述资源,给大家整理了一份可直接落地的四阶段学习规划,总时长约2个月,小白可循序渐进,程序员可根据自身基础调整节奏,高效掌握大模型核心能力,快速实现从“入门”到“能落地、能面试”的跨越。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
👇👇扫码免费领取全部内容👇👇
6、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】