第18章 §01 · ML 系统设计总览 · 讲解稿¶
章节定位: Ch18 §00 总览扩展 承接: Ch15 软件工程 + Ch17 AI 推理 篇幅: ~5500 字 / 阅读 14 分钟
一 · 一句话总览¶
ML 系统设计 = 把训练好的模型变成可靠服务。涵盖云架构 + 数据流 + 训练 pipeline + 部署 + 监控, 是 ML 工程师最重要的能力。
二 · 章节地图¶
Ch18 ML 系统设计
├── §01 系统设计基础 (CAP / 水平扩展 / 分布式存储)
├── §02 云计算 (AWS / GCP / Azure)
├── §03 大规模基础设施 (Kubernetes / Ray / Spark)
├── §04 ML 系统设计 (Data / Training / Serving / Monitoring)
└── §05 ML 设计案例 (推荐 / 搜索 / LLM)
三 · 章节主线 (5 段)¶
第 1 段 · 系统设计基础 (10 分钟)¶
3.1.1 CAP 定理¶
分布式系统三选二: - Consistency: 所有节点同一时刻看到相同数据 - Availability: 每个请求都收到响应 - Partition tolerance: 网络分区时仍能工作
实际: 必须 P (网络总会断), 选 C (强一致) 还是 A (高可用)
3.1.2 水平扩展 vs 垂直扩展¶
| 维度 | 水平 (Scale Out) | 垂直 (Scale Up) |
|---|---|---|
| 方法 | 加机器 | 加 CPU/RAM |
| 上限 | 高 | 受硬件限制 |
| 成本 | 线性 | 指数 |
| 故障域 | 小 | 大 |
| 适用 | 大规模 | 小规模 / 关键 |
3.1.3 负载均衡¶
- L4 (Transport): 基于 IP+Port, 高性能 (LVS / Nginx Stream)
- L7 (Application): 基于 URL/Header, 灵活 (Nginx HTTP / Envoy / HAProxy)
3.1.4 一致性哈希¶
问题: N 个节点, 节点变动时全部 rehash 解决: 一致性哈希 → 只影响 1/N 数据
第 2 段 · 云计算 (10 分钟)¶
3.2.1 三大云厂商¶
| 云厂商 | 优势 | 特色服务 |
|---|---|---|
| AWS | 市场份额最大 | SageMaker / Bedrock |
| GCP | AI/数据强 | Vertex AI / BigQuery |
| Azure | 企业集成 | Azure ML / OpenAI 合作 |
3.2.2 GPU 实例¶
| 实例 | GPU | 显存 | 适用 |
|---|---|---|---|
| A100 | A100 | 40/80 GB | 训练 / 推理主力 |
| H100 | H100 | 80 GB | 大模型训练 |
| H200 | H200 | 141 GB | 超大模型 |
| B200 | B200 | 192 GB | 最新旗舰 |
3.2.3 存储¶
- S3 / GCS / Blob: 对象存储, 大文件
- EBS / Persistent Disk: 块存储, 数据库
- EFS / Filestore: 文件存储, 共享
第 3 段 · 大规模基础设施 (10 分钟)¶
3.3.1 Kubernetes¶
K8s = 容器编排: - Pod (1+ 容器) → Deployment → Service - 自动伸缩 (HPA / VPA / Cluster Autoscaler) - 服务网格 (Istio)
3.3.2 Ray¶
Ray = 分布式 Python 框架: - 任务 (Task) / Actor (有状态) - Ray Serve: 在线服务 - Ray Train: 分布式训练 - Ray Data: 数据处理
3.3.3 Spark¶
Spark = 大数据处理: - RDD / DataFrame / Dataset - Spark MLlib: ML 算法 - Structured Streaming: 流处理
3.3.4 Feature Store¶
特征库 = 集中管理 ML 特征: - 在线 / 离线一致 - Feast / Tecton / Hopsworks
第 4 段 · ML 系统设计 (12 分钟)¶
3.4.1 设计框架 (Chip Huyen)¶
5 大阶段: 1. 项目目标: 业务目标 + 约束 2. ML 目标: 模型指标 + 失败成本 3. 数据: 来源 / 标签 / 处理 4. 建模: baseline → SOTA → 集成 5. 服务: 离线 / 在线 / 监控
3.4.2 离线训练 → 在线服务¶
训练数据 (S3) → Spark 处理 → 特征 (Feast) → 训练 (Ray) → 模型 (S3)
↓
部署 (K8s/SageMaker)
↓
用户请求 → API Gateway → Online Inference (vLLM) → 监控 (Prometheus)
3.4.3 在线学习 (Online Learning)¶
场景: 推荐系统 / 广告 CTR (数据分布快速变化) 架构: Kafka → Flink → Online Trainer → Model Update → Serving
3.4.4 监控¶
4 类监控: 1. 数据漂移: PSI / KL 散度, 监控输入分布 2. 模型性能: AUC / CTR 实时 3. 系统: 延迟 / QPS / 错误率 / GPU 利用率 4. 业务: 转化 / 留存 / 投诉
第 5 段 · 实战案例 (8 分钟)¶
3.5.1 案例 1: 推荐系统架构¶
用户 → API Gateway → Recsys Service
↓
┌───────────┴───────────┐
↓ ↓
召回 (Faiss) 精排 (TF Serving)
↓ ↓
└───────────┬───────────┘
↓
Re-rank
↓
返回 Top-K
3.5.2 案例 2: LLM 服务架构¶
用户 → LB → API Gateway → vLLM Cluster
↓
┌───────────┼───────────┐
↓ ↓ ↓
GPU 0 GPU 1 GPU 2
(TP shard) (TP shard) (TP shard)
↓ ↓ ↓
└───────────┼───────────┘
↓
NCCL AllReduce
↓
Token Stream
3.5.3 案例 3: 监控指标 (Prometheus + Grafana)¶
# 关键 SLI/SLO
- name: latency_p99
query: histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
threshold: < 2s
- name: error_rate
query: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
threshold: < 0.1%
- name: gpu_utilization
query: nvidia_smi_utilization_gpu
threshold: > 60%
四 · 一句话总结¶
ML 系统设计 = 分布式系统 + 云架构 + ML pipeline。3 大能力: ① 选型 (K8s vs Ray vs Spark); ② 设计 (离线-在线一致 + 监控); ③ 优化 (延迟/吞吐/成本三角)。