AI 入门到精通 07 · AI 推理与部署

训练只决定模型上限,推理决定模型能不能被用户用上。 工业界 80% 的算力账单花在推理而不是训练。

一、推理工程的目标矩阵

维度 含义 优化对象
Latency (TTFT / TPOT) 首 token 延迟 / 每 token 延迟 用户体验
Throughput (tokens/s) 单卡吞吐 成本
Concurrency 并发用户数 服务能力
Cost ($/1M tokens) 单位 token 成本 商业可行性
Quality 量化 / 蒸馏后是否掉点 用户感知
可控性 结构化输出、安全策略 应用集成

工程上你必须同时关注以上六者,单点优化会拆东墙补西墙。

二、知识点

2.1 推理的"快"从哪来

  • KV Cache:自回归生成的核心,省去重复算 K/V。理解显存计算:
    KV = 2 * num_layers * num_kv_heads * head_dim * seq_len * batch * dtype_size
    
  • Attention 优化:FlashAttention、PagedAttention(vLLM 的核心创新)、Continuous Batching。
  • Batching 策略:static → dynamic → continuous batching;In-flight batching。
  • 算子融合:FusedMLP / FusedRMSNorm / FusedRoPE。
  • CUDA Graph:减少 kernel launch overhead。
  • Speculative Decoding:小模型草稿 + 大模型验证;EAGLE / Medusa / Lookahead。
  • Chunked Prefill:把长 prompt 分块,平衡 TTFT 与吞吐。
  • Prefix Caching:相同 prompt 前缀复用 KV。

2.2 模型压缩

  • 量化 (Quantization):
    • PTQ:训练后量化。GPTQ / AWQ / SmoothQuant / GGUF (llama.cpp)。
    • QAT:量化感知训练;精度更高但成本高。
    • 精度档:fp16 / bf16 → int8 / fp8 → int4 → int2/三值/二值。
    • 当前主流:AWQ / GPTQ / FP8 (Hopper / Blackwell)。
  • 剪枝 (Pruning):结构化(按 head / 按层)vs 非结构化(按权重);现实中收益有限。
  • 蒸馏 (Distillation):大模型当老师,把能力传给小模型;当下小模型主流路径。
  • MoE 推理:Expert 调度、负载均衡。

2.3 推理引擎选型

引擎 适用 特点
vLLM 通用,社区活跃 PagedAttention,支持 LoRA、speculative decoding
SGLang 长 prompt / Agent RadixAttention(前缀复用),结构化输出
TensorRT-LLM NVIDIA 极致性能 编译期优化,部署链路长
TGI (HF) 易用 HF 全家桶友好
llama.cpp / Ollama 本地 / CPU / 边缘 GGUF 量化,能在 Mac 上跑
MLX Apple Silicon 苹果原生
lmdeploy 国内 中文社区支持好

2.4 部署架构

  • 单机直连 vs 网关 + 调度 + worker:QPS 上规模就要分层。
  • API 形态:OpenAI 兼容 (/v1/chat/completions) 是事实标准;流式 (SSE)。
  • 网关层:限流、鉴权、计费、路由、A/B test、灰度。
  • 多模型路由:按任务难度路由到不同尺寸模型(router model)。
  • 缓存策略:完全相同请求 → response cache;相似 → semantic cache。
  • 可观测性:tokens/s、TTFT、p50/p95/p99、错误率、安全过滤命中率。
  • 离线 / 在线:批量推理(OpenAI Batch API、vLLM offline mode)vs 在线服务。

2.5 端 / 边推理

  • 手机 / PC 本地:MLC-LLM / llama.cpp / Ollama / LM Studio。
  • 浏览器:WebLLM、ONNX Runtime Web、Transformers.js。
  • 边缘 GPU:Jetson、TensorRT。
  • NPU / 国产芯片:昇腾、寒武纪、MTT、海光等;适配生态在演进。

2.6 安全与合规

  • 内容安全:输入 / 输出过滤(Llama Guard / Shield Gemma / 国内合规模型)。
  • 提示注入 (Prompt Injection) 防御。
  • 数据脱敏 / 出网控制。
  • 计费与配额防滥用。

三、参考资料

四、动手实践

  1. 本地跑 vLLM:用 vLLM 部署一个 7B / 14B 模型,提供 OpenAI 兼容 API;写 client 测吞吐 / TTFT。
  2. 量化对比:把同一个模型分别用 fp16 / int8 / int4 (AWQ) 部署,测速度 / 显存 / MMLU 掉点。
  3. llama.cpp 边缘部署:在 Mac / 普通 PC 上用 GGUF 跑 7B 模型,测 token/s。
  4. Speculative Decoding:用 vLLM 启用 spec decoding(大模型 + 小 draft 模型),对比加速比。
  5. Prefix Caching 实验:用相同长 prompt 多次发请求,测 cache 命中前后 TTFT 差异。
  6. 结构化输出:用 SGLang 或 outlines,让模型严格输出 JSON Schema 定义的结构。
  7. 写一个 LLM 网关:用 FastAPI 套在 vLLM 前面,做:鉴权、限流、计费、日志、流式转发。
  8. 离线批量推理:用 vLLM offline 跑 10 万条数据的批量打标,对比在线接口的成本差。
  9. benchmark 自己:用 vllm-benchmarks 或 sglang bench,画 throughput-latency 曲线。

五、通关标志

  • 能解释 KV Cache 占多少显存,能算"7B fp16 + 4096 ctx + batch=32"占多大。
  • 能讲清 Continuous Batching 解决了什么、PagedAttention 解决了什么。
  • 跑通过 vLLM / SGLang / TensorRT-LLM 中至少两个,并能讲清各自定位。
  • 完成至少一次量化部署并能量化精度损失。
  • 你能提供一个生产级可部署的 LLM 服务(带网关、监控、计费)。
  • 看到一个推理性能问题,能给出 5 个排查方向(batch / cache / 量化 / 调度 / 通信)。

下一站:08. AI Agent