Skip to content

推理优化与量化

本页速览 训练一次、推理无数次——推理成本才是 LLM 应用的最大账单。本文拆解 KV Cache、INT4 量化、蒸馏、投机解码、连续批处理、FlashAttention 等推理优化技术,并给出服务框架选型与端到端调优路径。

本页含时效性内容,数据截止于 2025-06;JD、榜单、产品功能等信息可能已变化,引用前请核对原始出处。

推理优化与量化 ​

推理优化(Inference Optimization) 是通过量化、缓存、批处理、蒸馏等手段,降低大语言模型(LLM)推理延迟与成本、提升吞吐量的技术集合。如果说训练是"造发动机",推理优化就是"让发动机在高速公路上以最低油耗长跑"——它决定了你的大模型应用能不能规模化赚钱、够不够快、稳不稳。

一句话判断:推理成本是 LLM 应用的最大账单;训练只花一次钱,推理每响应一次都在花钱。本文从成本动机讲起,逐个拆解 KV Cache、量化、蒸馏、投机解码、批处理、结构优化六大核心技术,最后给出框架选型表与端到端调优路径。

一、为什么推理优化如此重要 ​

1. 账本结构:训练一次,推理无数次 ​

训练和推理的成本结构完全不同。训练是"一次性投入",而推理是"每次调用都在扣费":

环节成本量级(约,截至 2025-06)频率
预训练GPT-4 级模型估计数千万美元 GPU 算力一次性
微调(PEFT)数百至数千美元(单 GPU 数天)偶尔
推理每百万 token 输入约 $0.1~$0.8、输出约 $0.4~$4(取决于模型与厂商)每秒都在发生

一个 10 万日活的对话应用,一天产生数亿 token 推理量,一天的推理账单就可能超过一次小模型微调的成本。这也是为什么业界常说"训练贵在单次,推理贵在累积"——大语言模型(LLM)的规模越大,这条规律越残酷。

2. 延迟决定产品体验 ​

推理优化不只是省钱,还直接决定产品生死:

  • TTFT(首 token 延迟):用户按下回车到第一个字出现的时间,超过 2 秒流失率显著上升;
  • TPOT(每输出 token 延迟):打字机般逐字输出的速度,决定"流畅感";
  • 吞吐量:单卡/单集群同时服务多少请求,决定单位成本。

ChatGPT、Perplexity 这类对话与搜索产品能成为标杆,背后是持续的推理优化投入,详见ChatGPT 与对话式 AI。而 DeepSeek-R1 更是把"低成本高吞吐推理"做成了核心竞争力。

二、核心技术总览 ​

推理优化大体可分"算法层"和"系统层"两类。先给全景,再逐个展开:

技术类别优化目标典型收益(约)
KV Cache算法/系统省重复计算、省显存推理速度提升 10~100 倍(相比每步重算)
量化(INT8/INT4)算法减小模型体积与计算量显存减半以上,速度提升 1.5~3 倍
模型蒸馏算法用小模型逼近大模型效果体积小 5~50 倍,延迟大降
投机解码算法降低逐 token 串行延迟端到端加速 1.5~3 倍
连续批处理系统提高 GPU 利用率吞吐提升 2~10 倍
PagedAttention系统消除 KV cache 碎片显存浪费从 60~80% 降到 <4%
FlashAttention系统减少显存读写注意力部分加速 2~4 倍
稀疏注意力算法降低长文本注意力复杂度长文本显存/时间大幅下降

三、KV Cache:让重复计算消失 ​

Transformer 自回归解码的本质是"逐 token 生成":每生成一个新 token,都要重新对全部历史 token 做注意力计算。KV Cache 就是把这个瓶颈砍掉的缓存技术。

理解它的前提是注意力机制:注意力层对每个 token 计算 Query(Q)、Key(K)、Value(V)三个向量,新 token 需要与所有历史 token 的 K、V 做点积。没有缓存时,第 N 步要重算前 N-1 个 token 的 K、V;有了 KV Cache,历史 K、V 存进显存,每步只算新 token 的 K、V 并追加到缓存即可——把 O(序列长度²) 的重复计算降为 O(1) 追加计算。

无缓存:  第 N 步  计算 token 1..N 的 K、V  → 与 Q 做注意力   ← 前面全白算了
有缓存:  第 N 步  只算 token N 的 K、V     → 追加到 KV Cache → 直接做注意力

KV Cache 的显存占用与上下文长度成正比,是推理显存的最大变量。以 7B 模型为例,单请求上下文 2048 时 KV Cache 约需 0.5GB 级显存,且随 batch 和序列长度线性增长——这直接引出了后面的 PagedAttention(见第七节)。KV Cache 的机制细节完全建立在注意力之上,可回看 Transformer 与注意力机制 一文。

一句话判断

KV Cache 是"用显存换速度"的经典交易——它让生成阶段避免重复计算,但让显存成了新的瓶颈。所有大模型推理框架默认开启,你只需要操心它怎么放、怎么省。

四、量化:把权重"瘦身" ​

量化(Quantization) 用更低比特数表示模型权重(有时也包括激活值),从而减小显存占用、提升计算速度。权重精度每降一半,模型体积几乎减半:

精度每权重字节数7B 模型权重体积相对 FP16典型效果
FP324~28GB200%训练与高精度基线
FP16/BF162~14GB100%推理默认精度
INT81~7GB50%精度损失极小
INT40.5~3.5GB25%精度略降,多数任务可接受

1. 权重量化:GPTQ 与 AWQ ​

大模型推理最常用的是训练后权重量化(Post-Training Quantization, PTQ)——不需要重训模型,直接用预训练权重做低位表示。主流方法:

  • GPTQ(2022,arXiv:2210.17323):逐层(layer-wise)量化,用 Hessian 矩阵的二阶信息做误差补偿,把量化误差在层内做二次近似校正。4bit 量化后困惑度损失很小,是开源社区 INT4 部署的经典方案。
  • AWQ(Activation-aware Weight Quantization,2023,arXiv:2306.00978):根据激活值的分布识别"重要通道",对它们保留更高精度,其他通道做 INT3/INT4。在保持精度的同时不依赖重校准,部署友好。

2. 动态量化 vs 静态量化 ​

维度静态量化动态量化
权重离线量化好离线量化好
激活值用校准集统计出的固定范围运行时实时计算范围
速度更快(范围已知可预计算)略慢(有额外运行时开销)
精度依赖校准集代表性更稳(逐层实际范围)
适用云端固定场景CPU 推理、输入分布波动大的场景

3. 量化不是免费的 ​

量化省显存、提速度,但精度一定有所牺牲。质量如何验证?必须在业务相关的 LLM 评估与基准 上跑对比,而不是只看困惑度:

量化的三个坑

  1. 只看困惑度会骗人:困惑度损失小不代表数学、代码、长文本任务不退化——请用真实任务集对比 FP16 基线;
  2. 激活值量化的风险高于权重量化:激活值随输入剧烈波动,异常 token 可能被"截断"出大错误;
  3. 不是所有层都该均匀量化:首层、末层和注意力投影层通常更敏感,AWQ 的做法(按通道加权)比一刀切更稳。

一句话判断:先上 INT8(几乎无损),不够再上 INT4(配评估兜底),蒸馏等其他手段见下节。

五、模型蒸馏:大模型教小模型 ​

模型蒸馏(Knowledge Distillation) 让一个"老师"大模型教一个"学生"小模型:训练时小模型不仅学老师的正确答案(hard label),还学老师的概率分布(soft label),从而继承大模型学到的泛化知识。2015 年 Hinton 等人的经典论文将其总结为"把知识从大模型蒸馏到小模型"。

蒸馏 vs 量化 ​

维度量化蒸馏
模型结构不变,只改数值精度换成更小的结构/更少参数
显存收益4~8 倍(INT4)数十倍(取决于小模型规模)
质量损失通常较小与压缩比强相关
成本几乎免费(PTQ 无需训练)需要训练(可复用大模型生成的数据)
与微调的关系独立可结合 微调与 PEFT(LoRA)

两者可以叠加:先蒸馏出小模型,再对小模型做 INT4 量化——这也是移动端、端侧场景的通行做法。蒸馏的副作用是"数据飞轮":老师模型的输出可以当作训练数据反复迭代,越用越强。

什么时候选蒸馏

  • 追求极致低延迟/端侧部署(比如要跑在手机上)→ 蒸馏;
  • 只是云端省钱、希望改动最小 → 先量化;
  • 混合预算→ 先量化(一天上线),跑出瓶颈后再蒸馏(数周)。

六、投机解码:小模型打草稿,大模型把关 ​

自回归生成是串行的:每个 token 都要等前一个 token 算完,GPU 利用率天然上不去。投机解码(Speculative Decoding) 的思路是"用一个快的小模型打草稿,再用大模型并行验证":

  1. 草稿模型(小模型,通常 1B 级)快速生成 n 个候选 token;
  2. 目标模型(大模型)并行一次前向,为这 n 个候选 token 算出真实概率;
  3. 拒绝采样:从草稿中按概率接受正确 token,遇到不一致就回退——由于并行验证 n 个 token 只需一次前向,端到端延迟可降低 1.5~3 倍,且输出分布与不加投机完全一致(这是它最大的优点)。
草稿:  "今天天气真" → 生成 ["不","错","我"]
验证:  大模型一次前向算这三个位置的概率 → 全接受 → 一次前向"赚"了 3 个 token

投机解码的正确性有理论保证(输出与原始自回归采样同分布),因此它几乎零质量代价。适合:流式对话、代码补全等对逐 token 延迟敏感的场景。注意它优化的是延迟而非吞吐,且需要额外加载一个草稿模型,显存占用略有增加。

七、批处理:吞吐量的发动机 ​

1. 连续批处理(Continuous Batching) ​

传统推理框架按"请求批次"调度:一批请求要么全部结束、要么一起等最慢的——慢请求拖累整批(队头阻塞),吞吐打折扣。连续批处理(Continuous Batching,也叫 iteration-level scheduling) 把调度粒度从"请求"细化到"一次前向迭代":每步动态决定哪些请求参与计算、哪些请求可以进出,GPU 显存和算力始终被填满。相比请求级批处理,吞吐可提升 2~10 倍,是 vLLM 等现代框架吞吐碾压旧方案的核心原因之一。

2. PagedAttention:给 KV Cache 装"分页" ​

KV Cache 会随请求增长,预分配大量显存又浪费、动态分配又产生碎片。PagedAttention(vLLM 的核心创新,见论文 arXiv:2309.06180)借鉴操作系统虚拟内存分页思想:

  • 把 KV Cache 切成固定大小的"页"(block),用页表把逻辑连续映射到物理上分散的显存块;
  • 请求增长时按需分配页面,相邻请求还能共享相同前缀的页面(如系统提示词);
  • 显存浪费率从传统方案的 60~80% 降到 4% 以下,同一批能塞进更多请求。

这也是"共享前缀"场景(RAG 应用先注入同一段文档、检索增强生成(RAG) 与 向量数据库与语义检索 的查询前缀高度相似)吞吐暴涨的原因。

八、结构优化:FlashAttention 与稀疏注意力 ​

1. FlashAttention:让注意力别"进出显存" ​

标准注意力要把 N×N 的注意力矩阵整体写进/读出显存(HBM),显存带宽是瓶颈。FlashAttention(2022,arXiv:2205.14135)用 IO-aware 的 tiling 技术把计算分块在 SRAM 内完成,避免物化完整注意力矩阵:训练加速 2~4 倍、显存占用从 O(N²) 降到 O(N)。FlashAttention-2(2023)进一步把并行度、warp 划分优化到接近理论峰值——如今所有主流框架已默认集成,属于"你用了但感觉不到"的隐形优化。

2. 稀疏注意力 ​

注意力复杂度是 O(N²)(N 为序列长度)。稀疏注意力(Sparse Attention) 让每个 token 只对"局部窗口 + 少数全局 token"做注意力,把复杂度降到近似 O(N)。代表做法有 Longformer、BigBird 的滑动窗口 + 全局哨兵 token。代价是信息可能丢失,长文本质量有损;许多前沿工作在做"稀疏 + 稠密混合"来兼顾两者,见 前沿进展 一文。

方法复杂度质量影响适用
全注意力O(N²)无损通用基线
FlashAttentionO(N²) 但带宽优化无损所有场景(默认开启)
稀疏注意力~O(N)有损(长距离依赖弱化)超长文本、边缘部署

九、推理服务框架选型 ​

同一套优化技术,不同框架的实现深度差异巨大。截至 2025-06 的主流选择:

框架核心特色定位上手难度典型场景
vLLMPagedAttention、连续批处理、兼容 OpenAI API云端开源主力中生产 API 服务、RAG/Agent 后端
TensorRT-LLMNVIDIA 出品,TensorRT 内核融合、深度绑定 GPU云端极致性能高NVIDIA GPU 生产环境、追求极限吞吐
llama.cppGGUF 量化格式、CPU/Apple Silicon 优化本地/边缘低无 GPU 机器、端侧、个人部署
SGLangRadixAttention 前缀复用、结构化输出、Agent 场景云端新兴中多轮对话/Agent、JSON 输出约束
Ollama基于 llama.cpp 的一键体验本地个人最低本地试用、开发者玩具、教育

选型一句话判断:要上线对外服务选 vLLM(生态最成熟)或 TensorRT-LLM(吃满 NVIDIA);跑自己电脑上选 llama.cpp/Ollama;Agent/结构化生成任务多可评估 SGLang。详细部署细节见 部署与推理优化实战。

十、端到端调优路径 ​

优化不是堆砌技术,而是按"性价比"顺序决策。推荐的端到端路径:

步骤动作收益陷阱
1. 模型选择先用能满足效果的最小模型(参考 模型与榜单速查)源头省钱一上来就用最大的模型
2. 量化上 INT8/INT4(GPTQ/AWQ)显存减半+跳过评估直接上线
3. 缓存开启 KV Cache、共享前缀/提示词缓存延迟大降忽略长上下文的显存占用
4. 批处理连续批处理 + PagedAttention 类框架吞吐 2~10 倍批大小拍脑袋
5. 硬件按显存与带宽选 GPU(带宽决定解码速度)单卡吞吐提升只看显存不看带宽
6. 部署vLLM 等框架 + 观测延迟/吞吐指标可运维、可扩容上线后不监控

硬件选择的常识:解码(生成)阶段是显存带宽瓶颈,带宽型 GPU(H200、A100 等)比纯算力型更适合生成密集负载;多请求并发场景才吃算力。给团队的完整作战手册见 部署与推理优化实战。

先跑基线再优化

任何优化都先建立基线:同一个数据集上测好未优化的 TTFT、TPOT、tokens/s 和单 token 成本,然后一项项加优化、逐项对比。不要上来就全上——每一项优化的边际收益递减,先解决最大的瓶颈。

十一、权衡与取舍 ​

1. 速度 vs 质量 vs 成本三角 ​

取舍说明
速度 ↔ 质量INT4、蒸馏、投机草稿都可能损失或改变输出质量,用评估兜底
速度 ↔ 成本高吞吐框架与集群要算总账:省了单 token 成本,多了工程与硬件投入
质量 ↔ 成本大模型质量高但贵;蒸馏正是用训练成本换推理成本
延迟 ↔ 吞吐投机解码降延迟但加显存;连续批处理提吞吐但单请求延迟略升

2. 用指标说话,而不是感觉 ​

衡量推理优化的三把尺子(标准定义见 LLM 评估与基准,落地见 搭建一套 LLM 评估):

指标全称/含义测什么典型目标(聊天场景,约)
TTFTTime To First Token,首 token 延迟响应"起跑"快慢< 1~2 秒
TPOTTime Per Output Token,每输出 token 时间生成"步频"20~60ms/token
吞吐tokens/s(生成/秒)单位时间产量越高越好(成本越低)

优化后的上线纪律

上线前必须做回归评估:量化/蒸馏/投机解码都会改变输出分布,先跑一轮业务评估再发布,量化模型尤其要做。评估体系搭法见 搭建一套 LLM 评估,面试与岗位视角可看 面试题库。术语口径统一见 术语表。

一句话总结:推理优化的本质是用工程手段把"模型能力"按最低成本、最低延迟交付出去——先量化,再批处理,必要时蒸馏,永远用指标验证。

延伸阅读 ​

参考资料 ​