大模型推理优化是部署 LLM 服务的核心工程挑战。本文介绍几种关键的优化技术。

KV Cache

在自回归生成过程中,每个新 token 的计算都需要访问之前所有 token 的 Key 和 Value。如果不缓存,计算复杂度为 O(n²)。

KV Cache 将已计算的 K、V 矩阵缓存起来,新 token 只需计算自身的 Q、K、V 并与缓存拼接,将复杂度降至 O(n)。

# 伪代码示意
for token in generate():
    k, v = compute_kv(token)
    kv_cache.append(k, v)
    output = attention(q, kv_cache.keys, kv_cache.values)

内存占用

KV Cache 的内存开销为:

2 × num_layers × num_heads × head_dim × seq_len × batch_size × dtype_size

对于 70B 模型、32K 上下文,单请求 KV Cache 可达数 GB,是推理服务的主要内存瓶颈。

量化技术

量化通过降低数值精度减少模型体积和计算量:

方法精度压缩比精度损失
FP1616-bit极小
INT88-bit较小
INT4 (GPTQ/AWQ)4-bit可控

AWQ(Activation-aware Weight Quantization)GPTQ 是目前最流行的 4-bit 量化方案,在保持较高精度的同时显著降低显存需求。

连续批处理(Continuous Batching)

传统静态批处理需要等待 batch 内所有请求完成才能处理下一批。Continuous Batching(也称 In-flight Batching)允许:

  • 新请求随时加入正在运行的 batch
  • 已完成的请求立即退出,释放 KV Cache

vLLM 的 PagedAttention 进一步将 KV Cache 分页管理,类似操作系统的虚拟内存,大幅提升 GPU 利用率。

总结

推理优化是一个系统工程,需要在延迟、吞吐量和资源成本之间权衡。KV Cache + 量化 + 高效批处理是当前生产部署的标准组合。