引言
随着大语言模型从研究走向生产部署,推理效率成为决定服务成本的关键因素。一个 70B 参数的模型在 FP16 下仅需 140GB 显存,而生成一个 token 的计算涉及对整个模型权重的访问。如何在有限 GPU 资源上实现低延迟、高吞吐的推理服务,是现代 AI 基础设施的核心挑战。
一、Transformer 推理的计算特征
理解优化技术的前提是理解推理的两个阶段:
- Prefill(预填充):并行处理输入 prompt,计算所有 token 的 KV 对,计算密集度高,GPU 利用率好
- Decode(解码):逐 token 生成,每步只计算新 token 的 attention,属于 memory-bound 操作,GPU 算力利用率低
这两个阶段的截然不同的计算特性决定了优化策略的差异。Prefill 需要优化矩阵乘法的计算效率,而 Decode 需要优化内存带宽利用率。
二、KV Cache 与分页管理
K(Key)和 V(Value)矩阵是 Transformer Attention 机制中的中间产物。由于自回归生成时前面 token 的 KV 不会改变,可以缓存起来避免重复计算。但随着序列增长,KV Cache 的内存占用线性膨胀。
vLLM 的 PagedAttention 是这一领域的突破性工作。借鉴操作系统虚拟内存的分页思想:
# 传统方式:为每个序列预留最大长度的连续空间
# PagedAttention:将 KV Cache 分成固定大小的 block,按需分配
block_size = 16 # 每个 block 存 16 个 token 的 KV
# 逻辑块 → 物理块的映射表(类似页表)
block_table = {
"request_0": [block_3, block_7, block_1],
"request_1": [block_2, block_5],
}
优势:消除内存碎片、支持动态长度、实现内存共享(并行采样场景下共享 prefix KV)。实践中可节省 60-80% 的 KV Cache 内存。
三、Flash Attention:IO 感知的精确 Attention
标准 Attention 需要将完整的 Q、K、V 矩阵加载到 SRAM(快速但小)计算后再写回 HBM(慢但大)。Flash Attention 通过 tiling(分块)和 softmax 在线归一化,在不近似的前提下将 HBM 访问次数从 O(N²) 降低到 O(N²/d),其中 d 是 SRAM 大小。
Flash Attention 2 进一步优化了 Warp 级别的并行和序列长度的划分,在 A100 上实现接近理论峰值 FLOPS 的 Attention 计算。
四、模型量化:用精度换效率
量化是降低模型内存占用和加速推理的关键技术:
- GPTQ:后训练量化,逐通道优化 per-channel scale/zero-point,4-bit 量化下精度损失极小
- AWQ(Activation-aware Weight Quantization):识别并保护重要权重通道(由激活分布决定),在保护精度同时实现高效 4-bit 推理
- GGUF/GGML:面向 CPU 推理的量化格式,支持 K-quant(Q4_K_M, Q6_K 等),在消费级硬件上运行 70B 模型成为可能
量化对推理性能的影响:
| 精度 | 7B模型显存 | 70B模型显存 | 吞吐倍数 |
|---|---|---|---|
| FP16 | 14 GB | 140 GB | 1x |
| INT8 | 7 GB | 70 GB | 1.5x |
| INT4 | 3.5 GB | 35 GB | 2x |
五、推测解码(Speculative Decoding)
推测解码是一个巧妙的优化:用一个小型、快速的 "draft model" 一次性生成 K 个候选 token,再用大模型并行验证。由于验证是并行的(与计算一个 token 的解码时间相同),如果 K 个 token 中有 M 个被接受,则单步时间从 "生成 K 个 token" 降低到 "生成 M/K 个有效 token / 1 步验证"。
在实践中,使用 7B 模型作为 70B 的 draft model,可实现 2-3 倍 的吞吐提升,且输出分布与原始大模型完全一致(无精度损失)。
六、Continuous Batching 与调度优化
传统的 Static Batching 会等待一批请求全部完成后才处理新请求。vLLM 和 TensorRT-LLM 采用 Continuous Batching(也叫 iteration-level scheduling),在每个 decode step 都可以插入新请求或移出已完成请求,显著提升 GPU 利用率。
七、部署实践:vLLM vs TensorRT-LLM
- vLLM:基于 PagedAttention,生态丰富,支持大部分 HuggingFace 模型,部署简单
- TensorRT-LLM:NVIDIA 官方方案,深度优化 kernel,性能极致,但编译部署复杂
- SGLang:新兴方案,采用 RadixAttention 支持 prefix caching 和结构化输出
八、总结与展望
LLM 推理优化是一个系统工程,需要从内存管理(PagedAttention)、计算效率(Flash Attention)、模型压缩(量化)和并行策略(推测解码、continuous batching)多维度协同优化。随着模型规模持续增长,这些优化技术将在降低推理成本、使大模型普惠化方面发挥越来越关键的作用。

发表评论 取消回复