推理优化技术演进:PagedAttention / FlashAttention / Speculative Decoding 深度解析
LLM 推理性能 = 算法 + 软件 + 硬件。硬件(H100、B300、Rubin)只决定了理论上限。实际推理性能可以通过算法优化提升 5-30 倍。本文深度解析 PagedAttention、FlashAttention、Speculative Decoding 三大推理优化技术。
推理优化 vs 训练优化
| 维度 | 训练 | 推理 |
|---|---|---|
| 算力利用 | 满载(高 batch) | 低(batch 1-32) |
| 瓶颈 | GPU 算力 | 显存 + 内存带宽 |
| 优化方向 | 数据并行 / 模型并行 / ZeRO | KV Cache + 注意力 + 批处理 |
| 性能指标 | tokens/sec (训练) | TTFT, TPOT, throughput |
| 典型优化 | FlashAttention, gradient checkpointing | PagedAttention, Speculative, 量化 |
推理优化比训练优化更复杂——因为延迟敏感 + 内存受限 + 多种工作负载。
三大核心技术
1. PagedAttention(vLLM 核心)
PagedAttention 是 UC Berkeley 团队(李卓、@woody-yc 等)在 vLLM 论文(SOSP 2023) 中提出的KV Cache 内存管理革命。
问题:传统 KV Cache 浪费严重
- 传统方式:为每个请求预分配最大长度的 KV Cache 空间
- 例:70B 模型 + 4K 上下文 = ~2 GB KV Cache / 请求
- 100 个并发请求 = 200 GB——爆显存
| 方案 | KV Cache 管理 | 内存浪费 |
|---|---|---|
| 传统 (HuggingFace) | 连续预分配 | 60-80% 浪费 |
| PagedAttention | 分页按需分配 | <4% 浪费 |
原理:操作系统分页思想
传统方式:
[请求1: 2GB 连续] [请求2: 2GB 连续] [请求3: 2GB 连续] -- 大量内部碎片
PagedAttention:
[请求1: page 0,1,2,3] [请求2: page 4,5,6,7] [请求3: page 8,9,10,11] -- 页表管理
- 每个 page = 16 tokens 的 KV Cache
- 按需分配 page,无需预分配
- page table 跟踪映射关系
- 碎片化 < 4%(vs 60-80%)
性能提升
| 指标 | 传统 (HF) | PagedAttention (vLLM) | 提升 |
|---|---|---|---|
| 吞吐量 (70B 推理) | 100 tok/s | 800-1500 tok/s | 8-15× |
| 最大并发 | ~30 | 200+ | 6× |
| 显存利用率 | 30% | 96% | 3.2× |
| 长上下文支持 | 4K | 32K-128K | 8-32× |
PagedAttention 让 vLLM 成为 LLM 推理的事实标准——70B 模型吞吐量提升 8-15×。
适用场景
- ✅ 高并发在线推理(ChatGPT、Claude、文心一言)
- ✅ 长上下文(32K+ token)
- ✅ 多模型服务(共享 GPU 池)
- ❌ 单用户离线推理(提升有限)
2. FlashAttention(GPU 优化)
FlashAttention 是 Tri Dao 等 在 2022 年提出的 GPU 内存层次优化:
问题:注意力矩阵 O(N²) 内存
- 标准 attention:需要存储 N×N 注意力矩阵
- 8K 上下文:8K×8K = 64M floats = 256 MB
- 32K 上下文:32K×32K = 1G floats = 4 GB——爆显存
- 128K 上下文:128K×128K = 16G floats = 64 GB——不可能
原理:分块(tiling) + 重计算
标准 Attention:
Q @ K^T → 存储 N×N 矩阵 → softmax → @ V -- 需要 256MB+ HBM
FlashAttention:
分块计算,每块在 SRAM 内部处理,**不存储 N×N 矩阵**
Q 块 × K 块^T → 局部 softmax → × V 块 -- SRAM 内部
- 核心思想:利用 GPU 的 SRAM(HBM 上的高速缓存)
- HBM 读写次数:从 O(N²) 降到 O(N)
- 重计算:反向传播时重新计算 attention,不存中间结果
性能提升
| 指标 | 标准 Attention | FlashAttention v2 | 提升 |
|---|---|---|---|
| 训练速度 | 100% | 200-300% | 2-3× |
| 内存 | O(N²) | O(N) | 1/N 比例 |
| H100 速度 | 600 TFLOPS | 1100+ TFLOPS | 1.8× |
| 128K 上下文 | ❌ OOM | ✅ 可行 | — |
| 1M 上下文 | ❌ 不可能 | ✅ FlashAttention-3 | — |
FlashAttention 演进
| 版本 | 年份 | 关键改进 |
|---|---|---|
| FlashAttention v1 | 2022 | 分块 + 重计算 |
| FlashAttention v2 | 2023 | 并行化 + 减少 non-matmul 工作 |
| FlashAttention v3 | 2024 | FP8 支持 + H100 优化 |
| FlashAttention v4 (推测 2026) | 2026 | Rubin R200 / MI400 优化 |
FlashAttention v3 + H100/H200 达到 1100+ TFLOPS(FP16)——超过官方标称算力。
适用场景
- ✅ 所有 attention 计算(训练 + 推理)
- ✅ 长上下文(128K+ token)
- ✅ GPU 推理必备(H100/B200 标配)
- ❌ 边缘设备(不需要 attention 优化)
3. Speculative Decoding(投机解码)
Speculative Decoding(投机解码 / 推测解码)是 Leviathan et al. 2023 提出的推理加速技术:
问题:自回归生成慢
- LLM 一次生成 1 个 token
- 每个 token 需要完整 forward pass
- H100 FP16:~50ms/token——长生成耗时
原理:小模型 + 大模型协同
传统:
大模型 → token 1 → token 2 → token 3 → ... -- 每个 token 都用大模型
Speculative Decoding:
1. 小模型 (Draft Model) 一次生成 5 个候选 token: [t1, t2, t3, t4, t5]
2. 大模型 (Target Model) 一次验证 5 个 token(一次 forward pass)
3. 接受前 k 个匹配的 token(k+1 用大模型重新生成)
4. 重复
- 小模型:~100× 更快(70B → 1B)
- 大模型:一次 forward 验证多个 token
- 理论加速:2-4×(取决于小模型精度)
性能提升
| 指标 | 传统 | Speculative Decoding | 提升 |
|---|---|---|---|
| 70B 推理速度 | 30 tok/s | 60-100 tok/s | 2-3× |
| TTFT (首 Token) | 200ms | 200ms (同) | — |
| TPOT (单 Token) | 33ms | 10-17ms | 2-3× |
| 适用模型 | 任何 | 小模型 + 大模型 | — |
主流 Speculative Decoding 方案
| 方案 | 小模型 | 加速比 | 适用 |
|---|---|---|---|
| Self-Speculative | 同一模型不同层 | 1.5-2× | 通用 |
| Draft Model | 独立小模型 (e.g., 7B+70B) | 2-3× | 通用 |
| Medusa | 多个解码头 | 2-3× | 单一模型 |
| EAGLE | 特征预测 | 2-3× | 单一模型 |
| Lookahead Decoding | Jacobi 迭代 | 1.5-2× | 小模型 |
| REST | 检索增强 | 2-4× | 长生成 |
vLLM 0.6+ 默认支持 Speculative Decoding——配置简单,性能提升 2-3×。
适用场景
- ✅ 大模型离线批处理(效果最显著)
- ✅ 长输出生成(代码、文章、报告)
- ✅ 多轮对话(ReAct、Agent)
- ❌ 极短输出(1-5 个 token,加速比有限)
其他重要优化技术
4. Continuous Batching(连续批处理)
vLLM / TGI / TensorRT-LLM 全部支持:
- 传统:等 batch 满才处理,新请求等待
- Continuous:动态插入新请求到正在运行的 batch
- 提升:吞吐量 2-4×
5. Quantization(量化)
| 精度 | 模型大小 | 性能 | 质量损失 |
|---|---|---|---|
| FP16 | 70B = 140 GB | 1× | 0% |
| INT8 | 70B = 70 GB | 1.5-2× | <1% |
| INT4 (GPTQ/AWQ) | 70B = 35 GB | 2-3× | 1-3% |
| FP8 | 70B = 70 GB | 1.5-2× | <1% |
| FP4 (NVFP4) | 70B = 35 GB | 2-3× | 2-5% |
| INT2 | 70B = 17.5 GB | 3-5× | 5-15% |
NVFP4 (NVIDIA) + 量化感知训练 = 接近 FP16 质量 + 2-3× 性能。
6. Prefix Caching(前缀缓存)
- 场景:多个请求共享相同 system prompt
- 方法:缓存 KV Cache 的前缀
- 加速:相同 prefix 部分 0 计算,~10-100× 加速
7. Chunked Prefill(分块预填充)
- 问题:长 prompt 预填充阻塞其他请求
- 方法:将预填充分块,与解码交错
- 提升:TTFT -50%,总吞吐 +20%
推理优化软件栈
vLLM(最流行)
| 特性 | 支持 |
|---|---|
| PagedAttention | ✅ 核心 |
| Continuous Batching | ✅ |
| Speculative Decoding | ✅ 0.6+ |
| Quantization | ✅ INT4/INT8/FP8 |
| Prefix Caching | ✅ 0.4+ |
| Multi-LoRA | ✅ |
| 多 GPU | ✅ TP/PP |
| 支持模型 | Llama / Qwen / Mistral / Gemma / DeepSeek 全系列 |
TensorRT-LLM(NVIDIA)
| 特性 | 支持 |
|---|---|
| In-flight Batching | ✅ |
| PagedAttention | ✅ |
| Speculative Decoding | ✅ |
| Quantization | ✅ INT4/INT8/FP8/FP4 |
| Multi-GPU | ✅ TP/PP/EP |
| 性能 | NVIDIA GPU 上最佳(原生优化) |
SGLang(UC Berkeley 新作)
- RadixAttention:类似 Prefix Caching,更高效
- 结构化生成:JSON / regex guided generation
- 2025 增长迅速
llama.cpp(本地)
- GGUF 格式
- CPU / GPU / Apple Silicon 全支持
- 本地 LLM 首选
实际性能对比(70B 推理)
| 软件 | 硬件 | 量化 | 吞吐量 | 延迟 TPOT |
|---|---|---|---|---|
| vLLM + PagedAttn | H100 | FP16 | 1500 tok/s | 8ms |
| vLLM + Spec Decoding | H100 | FP16 | 3000 tok/s | 3ms |
| TensorRT-LLM | H100 | FP8 | 2500 tok/s | 4ms |
| TensorRT-LLM + NVFP4 | B200 | FP4 | 5000 tok/s | 2ms |
| vLLM | 8× A100 | INT4 | 800 tok/s | 12ms |
| llama.cpp | M3 Ultra | Q4_K_M | 12 tok/s | 80ms |
B200 + NVFP4 + TensorRT-LLM = 5000 tok/s = 比 FP16 H100 提升 20×。
推理优化对硬件选型的影响
优化 → 硬件需求降低
| 优化技术 | 所需算力 | 所需显存 |
|---|---|---|
| FP16 基线 | 1× | 1× |
| + PagedAttention | 1× | 0.4-0.6× |
| + Speculative | 0.5× | 1× |
| + INT4 量化 | 1× | 0.25× |
| + Prefix Cache | 1× | 1× |
| + Chunked Prefill | 1× | 1× |
| + Continuous Batch | 0.5× | 1× |
| + TensorRT-LLM 全套 | 0.3× | 0.4× |
全套优化后,硬件需求降低 3-5×——70B 推理从 8× H100 降到 1-2× H100。
选型建议
| 场景 | 推荐硬件 | 关键软件 |
|---|---|---|
| 云端高并发 | 8× H100 + vLLM | PagedAttn + Spec |
| 单卡大模型 | 1× B300 Ultra + TensorRT-LLM | NVFP4 + Spec |
| 本地 LLM | M3 Ultra 192GB + llama.cpp | GGUF Q4/Q5 |
| Agent 多轮 | 8× H100 + SGLang | RadixAttn + Spec |
| 代码生成 | 1× B200 + vLLM | NVFP4 + Spec |
未来展望
短期(2026-2027)
- FlashAttention v4 适配 Rubin R200
- Speculative Decoding 标准化(OpenAI API 支持)
- Multi-modal Speculative(视觉 + 语言联合)
- 端到端编译:torch.compile + TensorRT
中期(2027-2030)
- 端到端 GPU 内核生成:ML-based kernel synthesis
- PIM-HBM 推理:HBM 内部做 attention
- 100× 推理加速(vs 2023 基线)
长期(2030+)
- 神经符号推理:LLM + 符号系统
- 量子 + LLM 协同
- 真正"零延迟"AI 助手
详细产品页
- NVIDIA H100 (PagedAttn 主流硬件)
- NVIDIA B200 / B300 (NVFP4 + TensorRT-LLM 最佳)
- NVIDIA Groq 3 LPX (超低延迟推理新范式)
- Apple M3 Ultra 192GB (本地 LLM 之王)
- 完整对比表
总结
LLM 推理优化的三大核心技术:
- PagedAttention (vLLM):KV Cache 内存管理 → 8-15× 吞吐量
- FlashAttention (Tri Dao):GPU 内存层次优化 → 2-3× 训练 / 推理
- Speculative Decoding:小模型 + 大模型协同 → 2-3× 推理速度
全套优化后,硬件需求降低 3-5×——软件优化的 ROI 远超硬件升级。
未来 5 年,推理优化将让 AI 推理成本降低 10-100 倍。