跳转至

第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):

scale = max(|x|) / 127
x_q = round(x / scale)
x_dq = x_q * scale

非对称量化 (INT8):

scale = (max - min) / 255
zero_point = round(-min / scale)
x_q = round(x / scale) + zero_point

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, 大模型并行验证, 接受合格者

小模型: [t1, t2, t3, t4] (1 ms)
大模型验证: 1 次 forward (2 ms)
接受率 70%: 节省 70% 时间

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 工业首选。