Ch18 ML 系统设计 · 讲解稿¶
章节定位: Ch18 工程层。教"如何把 ML 模型组合成生产系统": CAP / 云 / 大规模基础设施 / ML 平台 / 设计案例。 承接: Ch15 DevOps + Ch17 推理 → Ch18 系统组合 走向: Ch19 应用 AI / Ch20 前沿 篇幅: ~4500 字 / 阅读 13 分钟 / 讲解 30-35 分钟
一 · 一句话总览¶
ML 系统设计 = 模型 + 数据 + 算力 + 服务组合成生产系统: CAP (分布式基础) + 云 (IaaS/PaaS) + 大规模基础设施 (Kafka/Spark/数据湖) + ML 平台 (Feature Store/Registry) + 真实案例 (Netflix/Uber)。核心心智模型: ML 系统 = 数据流 + 计算流 + 模型流 + 监控。
二 · 心智模型¶
把 ML 系统想成"现代物流" : - 数据: 货流 - 特征: 货品清单 - 模型: 分拣机器人 - 推理: 派送 - 监控: 物流追踪
三 · 章节主线 (5 段)¶
第 1 段 · 系统设计基础 (10 分钟)¶
3.1.1 CAP 定理¶
分布式系统三选二:
| 维度 | 含义 |
|---|---|
| Consistency | 一致性, 所有节点同时看到相同数据 |
| Availability | 可用性, 每个请求都响应 |
| Partition tolerance | 分区容忍, 网络分区仍能工作 |
实际 P 必须, 选择 C+A。
代表: - CP: ZooKeeper, HBase, etcd - AP: Cassandra, DynamoDB, S3
3.1.2 扩展性¶
- 垂直: 加 CPU/内存, 单机有限
- 水平: 加机器, 主流
3.1.3 一致性模型¶
| 类型 | 含义 | 例子 |
|---|---|---|
| 强一致 | 立即看到写入 | ZooKeeper |
| 最终一致 | 异步传播 | DynamoDB |
| 因果一致 | 因果关系可见 | 部分分布式 DB |
3.1.4 一致性哈希¶
# 简版
def get_node(key, nodes, ring_size=2**32):
h = hash(key) % ring_size
for node in sorted(nodes, key=lambda n: hash(n) % ring_size):
if hash(node) % ring_size >= h:
return node
return nodes[0]
增删节点只影响 1/节点数 比例的数据。
第 2 段 · 云计算 (8 分钟)¶
3.2.1 三层模式¶
| 模式 | 控制 | 例子 |
|---|---|---|
| IaaS | 高 | EC2, GCE |
| PaaS | 中 | App Engine, K8s |
| SaaS | 低 | Office 365, Slack |
3.2.2 主流云厂商¶
| 厂商 | 优势 |
|---|---|
| AWS | 最全, 主导 |
| GCP | AI / TPU / 数据分析 |
| Azure | 企业 / Microsoft 集成 |
| 阿里云 | 中国, 电商 |
3.2.3 关键服务¶
- 计算: EC2 / GCE / ECS / EKS
- 存储: S3 / GCS / Blob
- 数据库: RDS / DynamoDB / Spanner
- ML: SageMaker / Vertex AI / 阿里 PAI
第 3 段 · 大规模基础设施 (10 分钟)¶
3.3.1 流处理: Kafka¶
- 高吞吐: ~1M msg/s
- 持久化: 日志存储
- 顺序: 分区内有序
适用: 日志收集, 事件流, 实时计算。
3.3.2 批处理: Spark¶
RDD/Dataset API, 内存计算, 比 MapReduce 快 100×。
3.3.3 数据湖: Iceberg / Delta / Hudi¶
| 特性 | Iceberg | Delta | Hudi |
|---|---|---|---|
| Schema 演进 | ✓ | ✓ | ✓ |
| 时间旅行 | ✓ | ✓ | ✓ |
| 增量 ETL | ✓ | ✓ | ✓ |
| 社区 | Apache | Databricks | Uber |
适用: 海量数据 + ML 训练 + 增量更新。
3.3.4 Lambda vs Kappa¶
Lambda: 批 + 流双链路, 复杂但稳健。 Kappa: 纯流, Kafka + Flink, 历史靠重放。
第 4 段 · ML 系统设计 (12 分钟)¶
3.4.1 核心组件¶
3.4.2 Feature Store¶
# Feast 风格
features = store.get_online_features(
features=["user:age", "user:city", "item:category"],
entity_rows=[{"user_id": 1, "item_id": 100}]
).to_dict()
在线 + 离线一致性, 跨团队共享。
代表: - Feast: 开源主流 - Tecton: 商业 - Hopsworks: 学术
3.4.3 数据漂移¶
| 类型 | 检测 |
|---|---|
| Covariate shift (\(P(X)\)) | PSI, KS |
| Prior shift (\(P(Y)\)) | 类别分布 |
| Concept shift ($P(Y | X)$) |
PSI 公式: $\(PSI = \sum (P_{\text{new}} - P_{\text{ref}}) \ln \frac{P_{\text{new}}}{P_{\text{ref}}}\)$
阈值: < 0.1 轻微, > 0.2 严重。
3.4.4 模型 Registry¶
工具: MLflow, DVC, W&B。
3.4.5 A/B Test¶
# 用户分流
user_hash = hash(user_id) % 100
if user_hash < 50:
return model_v1.predict(x) # 对照
else:
return model_v2.predict(x) # 实验
关键: 随机分流, 统计显著性 (p < 0.05), 长期指标。
3.4.6 回流闭环¶
自动化 retrain 是 ML 平台的核心。
第 5 段 · 设计案例 (10 分钟)¶
3.5.1 Netflix¶
- Zuul: API 网关, 流量路由
- Eureka: 服务发现
- 推荐: 协同过滤 + 深度学习
- A/B test: 长期 + 短期
3.5.2 DoorDash¶
- 派单: 实时 ML 决策
- ETA: 路况 + 餐厅 + 骑手
- 物流: 多目标优化
3.5.3 Uber Michelangelo¶
- 端到端 ML 平台
- 训练 + 部署 + 监控
- 大规模 (TB 级数据, 千级模型)
3.5.4 Airbnb¶
- ML 平台统一特征工程
- 价格推荐 + 搜索排序
- A/B test 框架
3.5.5 Pinterest¶
- PinSage: GraphSAGE 工业版
- 亿级用户 / 商品
- 视觉 + 文本多模态
3.5.6 TikTok¶
- 实时反馈 (点赞 / 完播率)
- 多模态 (视觉 + 音频)
- 兴趣演化建模
四 · 易错点 (5 条)¶
- CAP: 三选二, P 必须, 实际 C+A。
- Feature Store schema: 必须严格一致。
- A/B test: 流量分流要随机, 样本足够。
- 数据漂移: 不止 covariate, 还有 prior / concept。
- 回流闭环: 自动化是关键, 不是手动。
五 · 跨章连接¶
| 章节 | 关联 |
|---|---|
| Ch13 §03 OS | 分布式原理 |
| Ch15 §05 K8s | 部署基础设施 |
| Ch17 §03 vLLM | 在线推理 |
| Ch12 §03 GNN | 推荐系统 |
六 · 自测 5 题¶
- CAP 三选二?
- Kafka 三个角色?
- Feature Store 解决什么问题?
- 数据漂移三种?
- 主流云厂商?
七 · 一句话总结¶
ML 系统设计 = 把模型组合成生产系统。CAP + 云 + 大规模基础设施 + ML 平台 (Feature Store/Registry) + 设计案例。Ch18 是 AI 工程师"系统设计"面试必学。
八 · 板书建议¶
[板书 1: CAP]
C 一致 / A 可用 / P 分区
CP: ZooKeeper; AP: Cassandra
[板书 2: 云]
IaaS / PaaS / SaaS
AWS / GCP / Azure
[板书 3: 流批]
Kafka + Flink (实时)
Spark + Iceberg (离线)
[板书 4: ML 平台]
Feature Store / Registry
漂移检测 / A/B
[板书 5: 案例]
Netflix / DoorDash / Uber
Michelangelo / PinSage
九 · 参考资料¶
- Brewer, "CAP theorem", 2000
- Designing Data-Intensive Applications (Kleppmann)
- MLflow 文档
- Feast 文档
- Uber Michelangelo 论文
- Ch15 §05 K8s (本套书)
- Ch17 §03 vLLM (本套书)