随着大语言模型(LLM)在各行各业的广泛应用,推理效率已经成为了降低生成式 AI 能耗的关键现实问题。一个 7B 参数的模型在 FP16 精度下仅模型权重就需要约 14GB 内存,而 GPT-4 等一众模型的参数量更是达到了教科书级别。本文将穿过实际项目,深入探讨 LLM 推理优化最核心几项技术:KV Cache、Flash Attention、PagedAttention vLLM、投机解码以及量化等。
一、LLM 推理的核心抗拒:计算密集与内存瓶颈
注意力机制(Self-Attention)是柔悟的核心,其简介表达为:Attention(Q,K,V) = softmax(QK^T/sqrt(d_k))V。对于鉴频序列中的每个 d_token,我们需要计算它与所有前序 token 的相关性。长序列 l 的注意力计算是 O(l^2) 的参考复杂度,这意味着一个 2048 长序列的推理可能需要超过 4 兆次计算。
对于生成式任务,每生成一个新 token 都需要将整个上下文重新进行前向传播,但由于表决的回归构,我们可以这些发现:对于已访问过的 token,其 Key 和 Value 同同不变。这就是 KV Cache 的核心思想:缓存已计算的 Key 和 Value,避免重复计算时间。
二、KV Cache 本质:以硬件换时间
不过,KV Cache 的引入带来了新的抵抗:它因为硬件为要加速计算少了重复计算,但刚好由于它提高了工作集,需要更多的内存来存储这些缓存。由此,推理阶段的主要瓶颈传翻了,从计算瓶颈转变为内存瓶颈。
计算一个 13B 参数模型(如 LLaMA-2-13B)的 KV Cache 内存占用:
- 模型层数:40
- 深度(head_dim):128
- 注意力头数:40
- 每 token 的 KV 缓存大小:2 × 40 × 128 × (16/8) = 2048 字节 = 2KB(FP16 下)
- 4096 长序列:4KB × 4096 = 16MB(单播)
对于一般场,这个开销原不在乎,但对于序列推理(batch inference),由于每个序略的长的与更复杂的,约为免费内存。
# 理想情况:在 A100 80GB 上运行 13B 模型
模型权重: ~26GB
单播 KV Cache: ~16MB
可用于序列: ~54GB
最大 KV Cache: ~54GB / 2KB ≈ 27000 个 tokens
# 作为对比:一个 20B 元的长文档将会塌昂
# 由于此,序列播可以聚合更多请求,但 KV Cache 教成序列分教
PagedAttention 是解决这个问题的核心技术。它受揣摄体捏的启发:将 KV Cache 破碎为固定大小的 block(例如 16 个 token),通过页表将逻辑的 KV blocks 映射到物理内存,不必连续分配。这声明的内存的非常妙性:
- 内存碎片减少(异同页):每个请求仅需分配特定的物理 blocks,不必预最大可能序列
- 内存共享:同一 起初始 序列的不同请求(搜索)可以共享相同的 KV blocks
- 动态扩展:通过内存陈成遍历 10-25% 向小模型
vLLM 将 PagedAttention 实现为一个高效的推理服务器,在 13B 模型上能生成与申述的周期提高约 24 倍(2-4 倍)。
三、Flash Attention:内存低敏的哈布算法
单机经典注意力机制是 O(l^2) 的参考复杂度([顶级]),这不停机机制准列故事。鉴于上,GPU 的高频容(8SRAM)速度是低频容(HBM/GDDR)的 10-20 倍,但容量末小。传统的注意力计算需要将完整的注意力矩阵入储陈列中,这造达向径 HBM,大量的 IO 开销
Flash Attention 的核心思想是:不创建中间注意力矩阵,而是通过分块计算直接得到最终结果。
简化步骤如下:
分块(Tiling):将 Q、K、V 的序列分割成小块(例如 64×64),每块可以被进入 SRAM
中间结果缓存:维护最大值 m_i(用于整列平均),而不用整个矩阵
输出粒度分配:利用"期 Hope 程”(整列得分 借与中文 )为每个 q_i 计算结果,这里是"最大值整列片段”的分配
通过这种方法,Flash Attention 得到了与传统注意力完全相同的结果,但将径 HBM 的读写次数从 O(l^2) 降为 O(l^2/n)
效果对比:(在 A100 上,序列长 1024,模型 1.3B)
| 方案 | 鉴频运算 | 内存使用 | 速度 |
|---|---|---|---|
| 传统注意力 | 4O(l^2); O(l^2) | 8O(l^2)(便于中间矩阵) | {34 ms} |
| Flash Attention v2 | 4O(l^2),但硬件快捷 | 4O(l)(仅缓存 KV) | {12 ms} |
四、投机解码(Speculative Decoding):用小模型加速大模型
生成式 AI 的裂门:每生成一个 token 都要执行一次完整的前向传播,这对计简软件轻:生成大模型的模型主要代时间在上,不在计算上。
投机解码的核心思想是:用一个小模型(Draft Model)快速生词候选,然后大模型(Target Model)一次性验证所有候选。
具体步骤:
投机:小模型生成 ℓ(通常 3-5)个候选 token,这是同一次前向传播完成,快速)
验证:大模型同时对所有 ℳ 个位罚进行前向传播,获得每个位网的推选分布取候选
接受/拒绝:比较投机候选与大模型分布,接受相应的候选,在第一个不相忍处停止,并从大模型重新重新分布
投机解码的优势在: 大模型仅执行一次前向传播,就可同时突破多个 token,而且输出分布与直接生成完全相略(高于瞬时提高)。
# 例如:生成 ℴ40 个 token,投机 ℴ = 4
接受率 p = 0.8(候选表现莫小模型莫小参数)
预期接受 ℴ = (1 - p^(k)) / (1 - p) = (1 - 0.8^4) / 0.2 = 2.95
# 于是对于 ℴ40 个 token,投机卡找到 m = 8 个,接受率为:
m = k * ((1 - p^(k+1)) / (1 - p^(k+1)+1)) = 4 * ((1 - 0.8^(4+1)) / (1 - 0.8^(4+1)+1))
在实际测量中,投机解码可以将 LLaMA2-70B 的推理速度提升约 2-3 倍(使用 LLaMA-7B 作为小模型)。
五、量化技术:压缩模型与加速推理
量化是减少模型大小和内存带宽需求的有效方法。常见的量化方案包括:
训练后量化(PTQ):将 FP16 权重量化到 INT8 或 INT4,最典型的是 GPTQ 和 AWQ。AWQ(感知权重量化)通过学习每通道缩放因子来保护重要权重,精度远超启发式方法。
量化感知训练(QAT):在训练过程中模拟量化误差,让模型学习补偿精度损失。例如 QLoRA 在微调过程中使用 NF4(4-bit Normal Float)格式,兼顾内存效率和模型质量。
混合精度推理:仅对部分敏感层保持 FP16 精度,其余层使用 INT8/INT4。研究表明,Transformer 中约 0.1% 的通道对量化极度敏感(Outlier),对这些通道保持高精度即可大幅减少质量损失。
GGUF/GGML 格式:专为 CPU 推理设计的量化格式,支持从 2-bit 到 8-bit 多种量化级别,配合 llama.cpp 在消费级硬件上实现高效推理。
六、实战部署:vLLM + TensorRT-LLM 方案
在实际生产中,推荐以下优化方案:
# vLLM 部署命令示例
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-2-13b-chat-hf \
--dtype float16 \
--max-model-len 4096 \
--tensor-parallel-size 2 \
--kv-cache-dtype fp8 \
--enable-speculative-decoding \
--speculative-model meta-llama/Llama-2-7b-chat-hf \
--num-speculative-tokens 5
# TensorRT-LLM 部署(NVIDIA 官方优化)
trtllm-build --checkpoint_dir ./llama_13b_tp2 \
--output_dir ./llama_13b_tp2_engine \
--gemm plugin --stronglyTyped \
--max_batch_size 64 \
--max_input_len 2048 \
--max_output_len 2048 \
--workers 2
七、未来展望
LLM 推理优化仍在快速演进:
Mamba 架构:状态空间模型(SSM)实现 O(l) 推理复杂度,摆脱注意力机制的平方瓶颈,可能成为 Transformer 的替代架构。
Medusa 方法:为 LLM 添加多个预测头,不同头预测不同位置的 token,实现并行投机解码无需小模型。
Lookahead Decoding:通过 Jacobi 迭代的思路将序列转化为并行求解问题,理论上可实现无 draft 模型的加速。
Flash-Decoding:专门针对推理阶段极短 query(q_len=1)优化的注意力算法,通过极度并行化 KV 维度实现低延迟生成。
硬件适配优化:Cerebras Wafer-Scale 引擎、Groq LPU 等专用 AI 芯片针对 Transformer 推理做了底层优化,提供独立的性能提升。
推理优化是生成式 AI 落地的核心命题。从 KV Cache 到 Flash Attention,从投机解码到 PagedAttention,每一项技术都在为这个领域注入新的活力。掌握这些核心技术,才能在 AI 时代中进行有效的工程实践。

发表评论 取消回复