跳到主要内容

推理优化

问题

如何降低 LLM 推理的延迟和成本?量化、KV Cache 优化、投机采样各自是什么原理?

答案

LLM 部署的核心挑战是推理成本——一个 70B 模型推理需要 2-4 张 A100 GPU,API 成本高昂。本文汇总主流推理优化技术。

一、推理优化全景

二、量化(Quantization)

将模型权重从高精度(FP16/BF16)压缩为低精度(INT8/INT4)——显存减半/四分之一,速度提升 2-4 倍

量化精度对比

精度每参数字节70B 模型大小速度质量损失
FP162140GB
INT8170GB~1.5×极小
INT40.535GB~2×轻微
INT3/20.375/0.2526/18GB~3×明显

主流量化方法

方法类型特点
GPTQ训练后量化(PTQ)逐层校准,INT4 质量好
AWQ训练后量化保护重要权重,质量更高
GGUF训练后量化llama.cpp 格式,CPU 友好
SmoothQuant训练后量化权重-激活联合平滑,INT8
QAT量化感知训练训练时模拟量化,质量最高但成本高
FP8新精度格式H100 原生支持,接近 FP16 质量
实际选择指南
  • 云部署(A100/H100):FP8 或 INT8(SmoothQuant)
  • 消费级 GPU(4090/3090):INT4(AWQ / GPTQ)
  • CPU / 边缘:INT4-INT2(GGUF + llama.cpp)

三、推理引擎

引擎核心特性适用场景
vLLMPagedAttention、Continuous Batching高吞吐在线服务
TensorRT-LLMNVIDIA 深度优化、FP8、INT4NVIDIA GPU 最优性能
llama.cpp纯 CPU/Metal 推理、GGUF 格式本地部署、边缘设备
SGLangRadixAttention、结构化生成复杂 Prompt 工作流
Ollama一键本地部署个人开发者

四、投机采样(Speculative Decoding)

用小模型(Draft Model)快速生成候选 Token,大模型批量验证:

加速比 = 接受率 × 候选 Token 数。当小模型和大模型分布接近时,加速最明显。

自投机采样(Self-Speculative)

不使用单独的小模型,而是让大模型自身跳过部分层做"草稿"——省去了维护两个模型的复杂度。

五、KV Cache 优化

详见 LLM 中的注意力机制,这里汇总关键技术:

技术原理效果
PagedAttention按需分配 KV Cache 内存显存利用率 >95%
GQA减少 KV 头数KV Cache 减少 4-8×
KV Cache 量化将 KV 压缩为 INT8/INT4显存减少 2-4×
Sliding Window只保留最近 N 个 Token 的 KV固定 KV Cache 大小
Token Eviction淘汰不重要的 Token 的 KV自适应压缩

六、其他优化技术

Continuous Batching

不等一个 batch 全部完成才释放——每步判断每个请求是否完成,完成就替换为新请求。相比 Static Batching,吞吐提升 2-8×。

Prefix Caching

多个请求的 System Prompt 相同时,缓存其 KV Cache——首次计算后复用,避免重复 Prefill。

Structured Output 优化

生成 JSON 等结构化输出时,用 constrained decoding(约束解码)在每步只允许合法 Token,避免生成格式错误白白浪费 Token。

七、关键指标

指标含义在线服务目标
TTFTTime to First Token,首 Token 延迟< 500ms
TPSTokens Per Second,每秒输出 Token 数> 30
Throughput系统吞吐(requests/sec)尽可能高
P99 Latency99 分位延迟< 5s

常见面试问题

Q1: INT4 量化模型和 FP16 模型的质量差多少?

答案: 使用 AWQ/GPTQ 等方法,INT4 量化的质量损失通常在 1-2% 以内(在主流 benchmark 上)。对于大模型(70B+),INT4 量化几乎无感知质量损失。对于小模型(7B),损失会更明显——参数量本来就少,精度损失的影响更大。

Q2: vLLM 为什么比 Hugging Face transformers 快?

答案

  1. PagedAttention:高效管理 KV Cache,显存利用率高
  2. Continuous Batching:动态调度请求,GPU 利用率高
  3. CUDA Kernel 优化:Flash Attention、融合算子
  4. Prefix Caching:共享 System Prompt 的 KV Cache

总效果:同等 GPU 下吞吐提升 5-24×。

Q3: 投机采样的局限性是什么?

答案

  1. 需要找到和大模型分布接近的小模型(接受率才高)
  2. 如果接受率低,反而不如直接用大模型
  3. 增加了系统复杂度(需要维护两个模型)
  4. 对 batch 推理优化有限(主要帮单请求场景)

Q4: 如何评估一个推理优化方案?

答案: 需要综合考虑:

  1. 质量:量化后 benchmark 分数下降多少
  2. 延迟:TTFT 和 TPS 是否满足产品需求
  3. 吞吐:每 GPU 每秒能处理多少请求
  4. 成本:每百万 Token 的 GPU 成本
  5. 复杂度:部署和维护的工程成本

相关链接