第17章 §01 · AI 推理总览 · 讲解稿¶
章节定位: Ch17 §00 总览 + §01 量化扩展 承接: Ch16 硬件 + Ch18 系统 篇幅: ~5500 字 / 阅读 14 分钟
一 · 一句话总览¶
AI 推理 = 把训练好的模型部署到生产。3 大挑战: 延迟 (Latency) / 吞吐 (Throughput) / 成本 (Cost)。本章 = 工程师的"性能优化手册"。
二 · 章节地图¶
Ch17 AI 推理
├── §01 量化 (Quantization)
│ - INT8 / INT4 / FP8 / FP4 / 1.58-bit
├── §02 高效架构 (Flash Attention / Mamba-2)
├── §03 服务与批处理 (vLLM / SGLang / Continuous Batching)
├── §04 边缘推理 (端侧 NPU)
└── §05 扩展与部署 (Kubernetes)
三 · 章节主线 (5 段)¶
第 1 段 · 量化基础 (10 分钟)¶
3.1.1 什么是量化¶
量化 = 用低精度表示权重/激活: - FP32 → INT8: 4× 内存, 2-4× 速度 - FP32 → INT4: 8× 内存 - FP32 → FP8: 2× 内存 - FP32 → 1.58-bit (BitNet): 21× 内存
3.1.2 量化方法¶
| 方法 | 何时量化 | 精度 | 适用 |
|---|---|---|---|
| PTQ (Post-Training) | 训练后 | 中 | 快速部署 |
| QAT (Quantization-Aware Training) | 训练中 | 高 | 关键场景 |
| Dynamic | 推理时 | 中 | 小模型 |
| Static | 训练后校准 | 高 | 生产 |
3.1.3 量化公式¶
对称量化 (INT8):
非对称量化 (INT8):
3.1.4 GPTQ / AWQ / SmoothQuant¶
- GPTQ (Frantar 2022): OBQ 改进, GPU 友好
- AWQ (MIT 2023): 保护重要 1% 权重
- SmoothQuant (MIT 2023): 数学等价变换, 消除激活 outliers
第 2 段 · KV Cache 与 PagedAttention (12 分钟)¶
3.2.1 KV Cache 原理¶
推理时: 每生成 1 个 token, 复用历史 K, V: - 不用 cache: O(n²) (每次重算所有 token) - 用 cache: O(n) (只算新 token)
内存占用:
KV = 2 × n_layers × n_heads × head_dim × seq_len × batch × dtype_size
例如 7B 模型, 2048 context, FP16:
KV = 2 × 32 × 32 × 128 × 2048 × 1 × 2 = 1 GB
3.2.2 PagedAttention (vLLM)¶
类比 OS 虚拟内存: - KV 分成固定大小 block (e.g. 16 token) - 逻辑 → 物理映射 (block table) - 解决内存碎片 + 共享 prefix
3.2.3 连续批处理 (Continuous Batching)¶
传统批处理: 等最慢的完成才返回 (padding 浪费) 连续批处理: 每步可加入新请求, 已完成立即返回
vLLM / SGLang / TensorRT-LLM 均支持。
第 3 段 · Flash Attention (8 分钟)¶
3.3.1 标准 Attention 的 IO 瓶颈¶
标准 attention: O(n²) 内存 (存 attention matrix) - n=2048 → 16 MB (FP32) - n=32768 → 16 GB ❌
计算: FLOPs O(n²) 实际可达 GPU peak 的 30-50% (IO bound)
3.3.2 Flash Attention 核心¶
3 大技巧: 1. Tiling: 把 Q/K/V 分块, 在 SRAM 中计算 2. Recompute: 不存 attention matrix, 反向传播时重算 3. Online Softmax: 分块计算 Softmax
结果: 内存 O(n), IO 减少 10×, 速度 2-4×, 数学等价
3.3.3 Flash Attention 3 / 4¶
- FA3 (2024): Hopper 架构优化, FP8 加速
- FA4 (2025): 多 GPU + 动态 shape
第 4 段 · 推理引擎 (10 分钟)¶
3.4.1 主流推理引擎¶
| 引擎 | 出品 | 特色 |
|---|---|---|
| vLLM | UC Berkeley | PagedAttention |
| SGLang | Stanford | RadixAttention |
| TensorRT-LLM | NVIDIA | TensorRT 优化 |
| TGI | HuggingFace | 易部署 |
| LMDeploy | 上海AI Lab | 高吞吐 |
3.4.2 Speculative Decoding¶
核心: 小模型草拟 N 个 token, 大模型并行验证, 接受合格者
3.4.3 Prompt Caching¶
缓存相同前缀的 KV: - 长 system prompt (10K+) 节省 80% 成本 - Anthropic / OpenAI 均支持
第 5 段 · 实战 (8 分钟)¶
3.5.1 案例 1: INT8 量化 (PyTorch)¶
import torch
from torch.quantization import quantize_dynamic
# 动态量化 (LLM 适用)
model = load_model()
quantized = quantize_dynamic(
model,
{torch.nn.Linear}, # 只量化 Linear
dtype=torch.qint8
)
3.5.2 案例 2: vLLM 部署¶
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3-70B",
tensor_parallel_size=4,
gpu_memory_utilization=0.9,
quantization="awq", # INT4
)
outputs = llm.generate(["Hello, "], SamplingParams(max_tokens=100))
3.5.3 案例 3: Flash Attention¶
from torch.nn.functional import scaled_dot_product_attention
# 自动用 Flash Attention (PyTorch 2.0+)
out = scaled_dot_product_attention(q, k, v, is_causal=True)
四 · 关键论文¶
| 论文 | 年份 | 出品 |
|---|---|---|
| LLM.int8() | 2022 | Tim Dettmers |
| GPTQ | 2022 | Frantar |
| SmoothQuant | 2023 | MIT |
| Flash Attention 2 | 2023 | Tri Dao |
| AWQ | 2023 | MIT |
| PagedAttention | 2023 | UC Berkeley |
| BitNet | 2024 | Microsoft |
| Flash Attention 3 | 2024 | Tri Dao |
五 · 一句话总结¶
AI 推理 = 量化 + 缓存 + 高效注意力 + 批处理。INT8 省 4× 内存, KV Cache + PagedAttention 让 LLM 服务大规模化, Flash Attention 解 IO 瓶颈, vLLM/SGLang 工业首选。