第18章 · 机器学习系统设计 · 阶段测试题答案¶
一 · 单选 (8 题)¶
1.1 B - CAP 必 P, 选 C 或 A。
1.2 A - Kubernetes 容器编排。
1.3 C - Ray 是分布式 Python 框架。
1.4 B - Feast 是开源特征库。
1.5 A - Feature Store 解决离线-在线不一致。
1.6 C - H100 是当前最强训练 GPU。
1.7 B - 双塔模型用于召回。
1.8 A - DLRM 是 Meta 推荐模型。
二 · 多选 (4 题)¶
2.1 ABD - 都是云厂商。
2.2 ABC - ML 设计阶段。
2.3 ABD - 都是数据漂移监控方法。
2.4 ABD - C 错: Kafka 不是 ML 框架。
三 · 简答 (5 题)¶
3.1 CAP 定理¶
Consistency / Availability / Partition tolerance, 三选二。 - 实际: 网络总会断 (P 必须), 选 C (CP, 如 ZooKeeper) 或 A (AP, 如 Cassandra) - ML 系统多选 AP (可用性优先)
3.2 8 步系统设计框架¶
1. 需求澄清 (业务 + 约束)
2. 指标定义 (离线 + 在线)
3. 离线-在线 (一致性策略)
4. 数据流 (Kafka / Flink / Spark)
5. 特征工程 (特征库 Feast)
6. 模型选择 (baseline → SOTA)
7. 部署 (K8s + GPU)
8. 监控迭代 (PSI / AUC / QPS)
3.3 离线-在线不一致 3 大原因¶
- 特征不一致: 离线用历史快照, 在线用实时 → 用 Feast 统一
- 分布漂移: PSI 监控 + 周期性重训
- 反馈延迟: 用户行为延迟 → 实时反馈
3.4 Feature Store 价值¶
- 一致性: 同一特征定义, 离线在线一致
- 复用: 跨团队
- 版本管理: 特征变化可追溯
- 监控: 漂移检测
3.5 监控 4 类¶
- 数据漂移: PSI / KL 散度
- 模型性能: AUC / CTR
- 系统: 延迟 / QPS / 错误率 / GPU 利用率
- 业务: 转化 / 留存 / 投诉
四 · 编程 (2 题)¶
4.1 PSI 计算¶
import numpy as np
def psi(expected, actual, bins=10):
expected_pct = np.histogram(expected, bins=bins)[0] / len(expected) + 1e-10
actual_pct = np.histogram(actual, bins=bins)[0] / len(actual) + 1e-10
return np.sum((actual_pct - expected_pct) * np.log(actual_pct / expected_pct))
# PSI > 0.2: 严重漂移