在大模型落地部署、推理优化中,KV Cache、Prefill/Decode、TTFT/TPOT、GPU算子、vLLM 是一套高度关联的核心体系。本文将系统性地讲解大模型自回归推理的核心原理、推理阶段特性、性能瓶颈与工程优化方案,梳理完整的底层落地逻辑。
一、大模型推理的核心痛点:重复计算
当前主流大模型(LLaMA、Qwen、GPT 系列)均为解码器自回归模型,生成文本的规则是:逐 Token 生成,生成一个 Token 后,将完整历史序列作为输入,预测下一个 Token。
如果不做任何优化,每生成一个新 Token,模型都会对所有历史 Token 重新做一次注意力计算。注意力机制的时间复杂度为O(n²),上下文越长,计算量爆炸式增长,推理速度极慢,完全无法落地商用。
基于这个痛点,业界诞生了大模型推理最核心的优化技术:KV Cache。
二、KV Cache:大模型推理的核心加速基石
2.1 什么是 KV Cache
KV Cache 是存储在 GPU 显存中的Key、Value 向量缓存数据,而非代码或算法。
模型注意力计算的核心公式为:$$\text{Attention}(Q,K,V)=\text{softmax}(\frac{QK^\top}{\sqrt{d_k}})V$$。在自回归推理中,历史 Token 的 K、V 向量一旦计算完成,永远不会改变,只有当前最新 Token 的 Q 向量是全新的。
因此我们可以将所有历史 Token 的 K、V 向量提前计算并缓存到显存中,后续生成新 Token 时,无需重复计算历史序列,直接读取缓存数据即可。
2.2 KV Cache 的核心价值与代价
核心价值:将解码阶段注意力复杂度从 O(n²) 降至 O(n),彻底解决长序列重复计算问题,大幅提升推理速度。
核心代价:占用大量 GPU 显存。对话序列越长、并发请求越多,KV Cache 显存占用越高,甚至会超过模型权重本身的显存占用,是限制推理并发和上下文长度的核心瓶颈。
2.3 主流 KV Cache 优化方案
GQA/MQA:减少 KV 头数量,直接压缩缓存体积,是主流模型标配方案;
KV 量化:将 FP16 精度转为 INT8/INT4,以微小精度损失换取大幅显存节省;
缓存淘汰策略:丢弃低权重不重要 Token 的 KV 向量,适配超长上下文场景;
PagedAttention:分页式内存管理,解决 KV Cache 内存碎片问题(vLLM 核心技术)。
三、推理两大核心阶段:Prefill 与 Decode
大模型每一次对话推理,都会严格分为Prefill(预填充)和Decode(解码生成)两个阶段,两个阶段的计算特征、瓶颈、作用完全不同,且直接决定推理性能指标。
3.1 Prefill 预填充阶段
Prefill 是推理的第一阶段,负责一次性处理用户输入的完整 Prompt,对所有 Prompt Token 进行并行计算。
该阶段的核心任务:计算所有输入 Token 的 Q、K、V 向量,初始化构建完整的 KV Cache,并输出对话的第一个 Token。
核心特征:算力密集型(Compute-Bound),矩阵运算量大,GPU 算力打满,时间复杂度 O(n²)。Prompt 越长、文档越大(RAG 场景),Prefill 耗时越高。
对应性能指标:TTFT(首 Token 延迟)。
3.2 Decode 解码阶段
Prefill 完成后,进入循环 Decode 阶段,这是模型逐字生成回答的阶段。
该阶段的核心逻辑:每次仅计算当前最新 1 个 Token的 Q、K、V,复用 Prefill 构建的历史 KV Cache,完成注意力计算,并将新的 K、V 追加缓存,循环迭代直到生成结束符。
核心特征:带宽密集型(Bandwidth-Bound),单次计算量极小,瓶颈在于反复读写显存中的 KV Cache,GPU 算力利用率偏低。
对应性能指标:TPOT(单 Token 生成耗时)。
四、推理核心性能指标:TTFT 与 TPOT
4.1 TTFT(Time To First Token,首 Token 延迟)
定义:从用户提交请求,到模型返回第一个输出 Token的总耗时。
TTFT 几乎完全由Prefill 阶段耗时决定,同时受网络延迟、请求排队、GPU 算力影响。
业务意义:直接决定用户聊天体感,TTFT 过高会让用户误以为服务卡顿。RAG 场景下超长检索文档会显著拉高 TTFT。
优化思路:Prompt 缓存、限制并发 Prefill 数量、Prefill/Decode 分离部署、高性能算子加速。
4.2 TPOT(Time Per Output Token,单 Token 耗时)
定义:首个 Token 生成后,后续每生成一个 Token 的平均耗时,对应 Decode 阶段。
TPOT 瓶颈是显存带宽和 KV Cache 读写效率,决定了模型后续的打字速度。
两者的区别可以概括为:TTFT 决定模型响应的等待时长,TPOT 决定模型持续生成文本的速度。
五、底层执行单元:GPU 算子
Prefill 计算、KV Cache 读写、Decode 解码等所有模型运算逻辑,最终都依靠 GPU 算子(Kernel)执行。算子是 GPU 硬件层面最小的可执行计算单元,是模型推理的底层执行载体。
常见核心算子分类:
基础计算算子:矩阵乘法、归一化、RoPE 位置编码、激活函数;
注意力优化算子:FlashAttention、PagedAttention;
缓存专用算子:reshape_and_cache,负责将 K、V 向量写入显存、更新 KV Cache。
算子的性能直接决定推理速度,原生 PyTorch 算子效率极低,商用推理均采用高度优化的定制 GPU 算子。
六、工程落地框架:vLLM
vLLM 是当前业界主流的大模型高吞吐推理引擎,它没有发明 KV Cache 原理,而是解决了传统 KV Cache 的致命缺陷:显存碎片多、并发能力弱、内存利用率低。
vLLM 核心创新是PagedAttention 分页注意力机制,借鉴操作系统虚拟内存思想:
将整块 KV Cache 显存切分为固定大小的物理 Block 块;
通过 Block-Table 映射逻辑地址与物理地址,支持 KV Cache 零散存储;
实现 Block 块的复用、分配、回收,彻底消除内存碎片;
上层调度 Prefill/Decode 请求,底层调用高性能算子完成计算与缓存读写。
三者的层级关系清晰明确:KV Cache是推理过程中产生的显存数据,算子是负责计算和读写的底层工具,vLLM 是统筹调度资源、优化整体推理效率的工程平台。
七、完整推理链路串联
用户发送对话请求 → vLLM 调度器接收请求并排队 → 进入Prefill 阶段→ 调用 FlashAttention 算子并行计算全部 Prompt Token 的 Q/K/V → 通过缓存算子写入显存、初始化 KV Cache → 输出第一个 Token(完成 TTFT 计时) → 进入Decode 循环阶段→ PagedAttention 算子读取历史 KV Cache → 计算新 Token 并追加更新缓存 → 持续生成文本(TPOT 计时)→ 直到生成结束。
八、核心点总结(面试/工作可用)
1.KV Cache是显存中存储的 K、V 向量缓存,通过复用历史计算结果,将解码复杂度从 O(n²) 降至 O(n),是自回归推理的核心加速技术,痛点是显存占用高、易产生内存碎片。
2.Prefill处理完整用户 Prompt,并行计算构建 KV Cache,算力密集,决定首 Token 延迟 TTFT;Decode逐 Token 生成,复用缓存,带宽密集,决定单 Token 生成速度 TPOT。
3.算子是 GPU 底层计算内核,所有模型计算、KV 缓存读写都依赖优化后的 GPU 算子实现。
4.vLLM基于 PagedAttention 分页内存管理,解决传统 KV Cache 内存碎片问题,通过高效请求调度和高性能算子调用,大幅提升推理并发和吞吐。
九、核心概念关系对照表
概念 | 本质 | 核心作用 | 对应阶段/瓶颈 |
|---|---|---|---|
KV Cache | 显存张量数据 | 缓存历史 K/V,避免重复计算 | 全程复用,显存瓶颈 |
Prefill | 推理计算阶段 | 初始化 KV Cache,生成首 Token | 算力密集、TTFT |
Decode | 推理计算阶段 | 逐字生成文本,迭代更新缓存 | 带宽密集、TPOT |
算子 | GPU 计算内核 | 执行所有张量运算、缓存读写 | 底层执行载体 |
vLLM | 推理服务框架 | 调度请求、管理显存、优化吞吐 | 工程落地层 |