LLM推理优化技术深度解析:从量化到投机解码
大语言模型(LLM)的能力越来越强,但推理成本始终是生产环境部署的核心瓶颈。本文从技术原理出发,系统梳理当前主流的LLM推理优化技术,帮助你理解各项技术的适用场景和效果边界。
一、模型量化:以小博大的艺术
量化是降低推理成本最直接有效的手段。核心思想是将模型参数从高精度(FP16/FP32)压缩到低精度(INT8/INT4),在几乎不损失精度的情况下大幅减少显存占用和计算量。
主流量化方案对比
| 方案 | 精度 | 显存节省 | 速度提升 | 精度损失 |
|---|---|---|---|---|
| FP16 | 16位浮点 | ~50% | 1.5-2x | 几乎无 |
| INT8 (GPTQ) | 8位整数 | ~75% | 2-3x | 极小 |
| INT4 (AWQ) | 4位整数 | ~87% | 3-4x | 轻度 |
| NF4 (QLoRA) | 4位归一化浮点 | ~87% | 2-3x | 极小(微调后) |
量化技术选型指南
GGUF(llama.cpp):适合CPU推理和本地部署。支持各种量化级别(Q2_K到Q8_0),灵活选择精度/性能比。
GPTQ:适合GPU推理。INT4量化后的模型在RTX 4090上可达100+ tokens/s。
AWQ:GPTQ的改进版,通过激活感知的权重量化策略进一步减少精度损失,是目前INT4量化的首选方案。
二、KV Cache优化
LLM在生成每个token时需要重新计算之前所有token的注意力。KV Cache通过缓存已计算的Key和Value矩阵来避免重复计算。
但KV Cache的显存增长是线性的——长对话的Cache可能比模型参数本身更大。优化方案包括:
PagedAttention(vLLM):将KV Cache分页管理,类似操作系统的虚拟内存。非连续存储大幅减少显存碎片,可以将显存利用率从60%提升到95%以上。
Multi-Query Attention(MQA):多个注意力头共享同一组Key-Value矩阵,将KV Cache压缩到原来的1/n(n为注意力头数)。
Grouped-Query Attention(GQA):MQA和标准Multi-Head Attention的折中方案,将注意力头分组共享KV。
三、投机解码(Speculative Decoding)
投机解码是2024-2026年最重要的推理加速突破。核心思路:
- 用一个极小的「草稿模型」(如几十MB的TinyLlama)快速生成多个候选token
- 大模型一次性验证这些候选token的正确性
- 接受正确的token,丢弃错误的,继续生成
因为大模型一次前向传播可以验证多个token(而非生成一个),在生成类任务上可实现2-3倍的速度提升,且不损失任何精度。
四、连续批处理(Continuous Batching)
传统推理服务的处理方式是:收到一个请求→生成完整回复→返回结果→处理下一个。这种方式在请求并发时显存利用率极低。
连续批处理(vLLM、TGI等框架支持)允许在生成过程中动态加入新请求,将多个请求的推理步骤交错执行。显存利用率可以从30%提升到90%以上,总吞吐量提升3-5倍。
五、FlashAttention
FlashAttention通过优化注意力计算的显存访问模式,将标准注意力机制的显存读写量从O(N²)降低到接近理论下限。在长序列推理中效果尤为显著——可以将4096 token序列的推理速度提升2-3倍。
FlashAttention-3进一步支持了FP8计算和Hopper架构的异步指令,性能继续提升30-50%。
技术组合建议
实际部署中,这些技术往往是组合使用的:
生产环境标准配置:AWQ INT4量化 + vLLM(PagedAttention+连续批处理) + FlashAttention-3。在单张A100上可以实现每秒处理100+个并发请求。
本地部署配置:GGUF Q4_K_M量化 + llama.cpp。在M2 Ultra Mac Studio上可以流畅运行70B级别的模型。
极致性能配置:FP8 + TensorRT-LLM + 投机解码 + FlashAttention-3。适合对延迟极度敏感的实时应用场景。

