引言
随着大语言模型参数量从百亿级迅速膨胀至万亿级,推理阶段的效率优化已成为AI基础设施领域最核心的工程挑战之一。训练可以用天甚至周为单位消耗算力,但推理必须以毫秒级响应服务用户。本文将从系统工程视角,深入拆解大模型推理优化的五大核心技术方向:KV Cache 管理策略、批处理调度优化、模型量化压缩、推测解码算法以及硬件感知部署架构。
一、KV Cache 的内存墙问题
在自回归生成过程中,Transformer 架构的注意力机制需要访问所有先前 token 的 Key 和 Value 向量。为避免重复计算,推理引擎将这些向量缓存在显存中,称为 KV Cache。对于一个 70B 模型(80层,128头,head_dim=128),生成 2048 token 序列时 KV Cache 的显存占用约为:
KV Cache = 2 × num_layers × num_heads × head_dim × seq_len × batch_size × sizeof(fp16)
= 2 × 80 × 128 × 128 × 2048 × 1 × 2 bytes
≈ 10.7 GB(仅 batch_size=1)
这意味着 KV Cache 在大 batch size 场景下会占据显存总量的 80% 以上,成为吞吐量的首要瓶颈。
1.1 PagedAttention:操作系统的虚拟内存思想
vLLM 提出的 PagedAttention 借鉴了操作系统中虚拟内存和分页机制。传统方法为每个序列预留一块连续的显存空间,导致严重的内部碎片——平均 20%~40% 的显存被浪费在预分配但未使用的 slot 上。PagedAttention 将 KV Cache 分割为固定大小的 block(通常 16~32 token),通过 block table 实现逻辑连续到物理离散的映射,将显存利用率提升至 96% 以上。
1.2 Token 级缓存复用
在多轮对话和 beam search 场景中,多个序列共享相同的 prefix tokens。SGLang 的 RadixAttention 使用基数树(Radix Tree)管理 KV Cache,实现跨请求的 prefix 共享。实验表明,在 ShareGPT 数据集上,RadixAttention 将 token 处理量减少 58%,端到端延迟降低 40%。
二、批处理调度:从静态到连续
GPU 的并行计算能力天然适合批处理——将多个推理请求合并执行以提高计算利用率。然而静态批处理(Static Batching)存在两个严重缺陷:等待凑批增加首 token 延迟,以及批次中最长序列完成后其他序列只能空转。
2.1 Continuous Batching(迭代级调度)
Orca 论文提出的 Continuous Batching 在每个 decoding step 动态调整批次组成。当某个序列生成 EOS token 后,立即移出并插入新请求,实现 100% 的 GPU 利用率。结合 PagedAttention,vLLM 在 A100×8 集群上实现了比 HuggingFace 基线高达 24 倍的吞吐量提升。
2.2 Chunked Prefill
长 prompt 的 prefill 阶段是计算密集型操作,可能持续数百毫秒,期间整个批次的 decoding 被阻塞。SGLang 的 Chunked Prefill 将 prefill 切分为与 decoding step 时间相当的 chunk,交替执行 prefill 和 decode,确保延迟敏感型请求不被长 prompt 饿死。
三、模型量化:精度与效率的博弈
量化是将模型权重和激活从 FP16/BF16 压缩到低比特表示(INT8/INT4/FP8)的技术,直接降低显存占用和内存带宽需求。
3.1 GPTQ 与 AWQ:权重量化方案对比
GPTQ 基于 Optimal Brain Quantization,利用 Hessian 矩阵信息指导量化,达到 4-bit 权重压缩。AWQ(Activation-aware Weight Quantization)则从激活分布出发,识别并保护携带显著信息的 0.1%~1% 的 "salient" 通道,对其不做量化,从而在相同压缩率下获得更低的困惑度损失。
3.2 FP8 与英伟达 Hopper 架构
H100 引入的 Transformer Engine 原生支持 FP8 训练和推理。与 INT8 相比,FP8 保留浮点格式,对大动态范围的激活值更为友好。实际部署中,FP8 推理相比 FP16 实现 1.5~2.0 倍加速,精度损失可控制在 0.1 perplexity 以内。
四、推测解码:小模型先行的加速术
推测解码(Speculative Decoding)利用小模型(Draft Model)快速生成多个候选 token,再由大模型(Target Model)一次性验证。由于 decoding 阶段是 memory-bound 操作,将 K 个 token 打包成 batch 验证的边际成本远低于逐 token 解码,因此当 draft 准确率 p > 1/(K+1) 时即可实现加速。
加速比 ≈ min(K, 1/p) / (1 + α)
其中 α = draft_model_flops / target_model_flops
当 α << 1 且准确率 p > 0.7 时,典型加速 2~3×
Medusa 模型通过在原始模型顶部增加多颗 "预测头"(prediction heads),使模型自身具备多 token 并行生成能力,无需独立的 draft 模型,实现了端到端 2.4 倍的加速。
五、硬件感知部署架构设计
工程实践中,推理系统的性能不仅取决于算法优化,还涉及计算图优化、算子融合、通信拓扑等全栈技术。
5.1 Tensor Parallelism vs Pipeline Parallelism
张量并行将单层内的矩阵乘法切分到多卡,通信频率高但实现简单,适合单节点多卡场景。流水线并行将不同层分配到各卡,通信量小但存在流水线气泡。LLM 推理通常优先使用 TP 单节点内切分,跨节点使用 PP 或 TP+PP 组合。
5.2 FlashAttention 与 IO 感知计算
标准 Attention 将完整的 QK^T 矩阵(N×N×sizeof(Material) Bytes)写入 HBM。FlashAttention 通过分块(tiling)和在线 softmax 重计算,将显存 IO 从 O(N²d) 降低至 O(N²d²/M),其中 M 为 SRAM 大小。在 A100(192KB SRAM per SM)上,H100 配合 FlashAttention-2 实现了端到端 Attention 近 3 倍的加速。
5.3 CUDA Graph 与 Kernel Fusion
CUDA Graph 将多个 kernel 录制为一张图后一起提交,消除 kernel 启动开销。在短序列(<2048 token)高频请求中,CUDA Graph 可减少 15%~25% 的延迟。同时,算子融合(如 LayerNorm + Linear 合并减少 HBM 读写)在 decoder-only 架构中可释放显著的计算效率。
六、工程实践:推理平台选型与调优建议
当前主流的开源推理引擎各有侧重:vLLM 以 PagedAttention 见长,适合高吞吐场景;SGLang 的 RadixAttention 在前缀缓存和复杂 batching 上表现出色;TensorRT-LLM 深度绑定英伟达生态,在 H100/B200 上性能极致;llama.cpp 则面向端侧和消费级 GPU 的 CPU/GPU 异构推理。
选型建议:生产环境的吞吐型服务优先选择 vLLM 或 TensorRT-LLM;多轮对话和 agent 场景侧重 SGLang 的 prefix caching 能力;面向国产芯片或端侧部署可考虑 llama.cpp 或 MLC-LLM。
调优核心指标首看 Time-To-First-Token(TTFT)和 Time-Per-Output-Token(TPOT)。TTFT 由 prefill 阶段决定,对 chunk size 和量化精度敏感;TPOT 由 decoding 阶段决定,关键在于 KV Cache 的显存带宽利用率。
总结
大模型推理优化是一个跨越算法、框架、硬件的多层系统工程。从 KV Cache 的虚拟内存化管理,到连续批处理消除算力浪费;从 AWQ/GPTQ 的精度-效率权衡,到推测解码的投机主义加速——每项优化都建立在对 memory-compute trade-off 的精确把握之上。随着 GQA/MQA 进一步压缩 KV Cache,以及混合专家(MoE)架构引入稀疏计算,推理优化的范式将持续演进。掌握这些核心机制,是构建高效 AI 服务的工程基础。

发表评论 取消回复