跳转至

第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); ② 设计 (离线-在线一致 + 监控); ③ 优化 (延迟/吞吐/成本三角)。