第18章 §05 · ML 设计案例 · 讲解稿¶
承接: Ch18 §04 方法论 → §05 实战案例 篇幅: ~4000 字
一 · 一句话总览¶
3 大典型 ML 系统案例: 推荐系统 / 搜索引擎 / LLM 服务。每个都是 8 步框架的应用 + 真实工程细节。
二 · 案例 1: 抖音推荐系统¶
2.1 需求¶
- 100 万视频库
- 给 1 亿 DAU 推 10 个视频
- 目标: 用户停留时长 + 完播率 + 长期留存
2.2 指标¶
| 类型 | 指标 |
|---|---|
| 离线 | AUC / NDCG / 召回率 |
| 在线 | CTR / 完播率 / 时长 / 留存 |
2.3 数据流¶
视频元数据 (MySQL) + 用户行为 (Kafka) → Flink → 特征 (Feast / Redis)
↓
训练样本 (S3)
↓
Spark + GPU 训练
↓
模型 (Model Registry)
2.4 特征¶
- 用户: 年龄 / 性别 / 兴趣 (向量) / 历史行为 (序列)
- 视频: 类目 / 标签 / 嵌入 / 热度
- 上下文: 时间 / 位置 / 设备 / 网络
2.5 模型架构¶
3 阶段: 1. 召回 (100 万 → 1000): 双塔 (User Tower + Item Tower) → Faiss ANN 2. 精排 (1000 → 100): DLRM / DIN (Deep Interest Network) 3. 重排 (100 → 10): 多样性 + 规则 + 探索
2.6 部署¶
- 离线算 embedding → Faiss
- 在线召回 → Faiss 检索
- 精排 → TF Serving
- 监控: PSI + AUC + CTR
2.7 挑战¶
- 冷启动: 新视频 / 新用户
- 兴趣漂移: 用户兴趣随时间变化
- 长尾: 1% 视频拿 90% 流量
- 平台期: 用户增长见顶, 需深度运营
三 · 案例 2: Google 搜索引擎¶
3.1 需求¶
- 10 亿网页
- 1 亿 QPS
- 100 ms 返回 Top-10
3.2 经典架构 (Pre-LLM)¶
3.3 索引层¶
- Inverted Index: 词 → 文档列表
- TF-IDF / BM25: 文本相关性
- PageRank: 链接权威性
- HNSW: 向量近邻
3.4 排序层¶
Learning to Rank: - RankNet: pairwise - LambdaRank: listwise - LambdaMART: GBDT 实现
特征: - 查询: 词数 / 实体识别 / 意图 - 文档: PageRank / 文本质量 / 时效 - 交互: BM25 / 点击率 / 停留时长
3.5 LLM 时代 (2024+)¶
Search Generative Experience (SGE): - 检索 + LLM 摘要 - 引用源 (citation) - 多模态 (图像 / 视频)
挑战: - 幻觉 (LLM 瞎编) - 时效性 (LLM 训练截止) - 成本 (每查询 $0.01-0.1)
3.6 监控¶
- NDCG@10 / MRR
- 用户满意度 (CSAT)
- 长尾查询质量
四 · 案例 3: ChatGPT 服务架构¶
4.1 需求¶
- 1 亿 MAU
- 平均 500 token/请求
- p99 latency < 5s
4.2 架构¶
用户 → CDN/Edge
→ API Gateway (限流 + 认证)
→ 路由 (按 region / 模型)
→ 推理集群
├─ Pod 1: GPT-5.6 (TP=8, H100)
├─ Pod 2: GPT-5.6
├─ Pod 3: o5 (reasoning)
└─ Pod 4: GPT-4o-mini (轻量)
→ 监控 (Prometheus + Grafana + Langfuse)
4.3 模型路由¶
按 query 复杂度: - 简单: GPT-4o-mini (\(0.15/1M) - **中等**: GPT-4o (\)2.5/1M) - 复杂: o5 / o5-mini ($15/1M) - 专家: 领域专用 (Codex / DALL-E)
4.4 关键技术¶
- PagedAttention (vLLM): KV cache 共享
- Speculative Decoding: 草拟+验证, 2× 加速
- Continuous Batching: 24× 吞吐
- Prompt Caching: 80% 成本节省
- Distillation: mini 版用于简单 query
4.5 容量规划¶
总 token/s = MAU × DAU/MAU × queries/DAU × tokens/query / 86400
= 1e8 × 0.3 × 20 × 500 / 86400
= 3.5M tokens/s
GPU 数 = 3.5M / (100 tokens/s/GPU) = 35000 H100
4.6 监控指标¶
- TTFT: Time To First Token (目标 < 500 ms)
- TPOT: Time Per Output Token (目标 < 50 ms)
- Throughput: tokens/s/GPU
- Cost / Query: $0.001-0.01
- CSAT: 用户满意度
五 · 案例 4: 实时风控系统 (银行)¶
5.1 需求¶
- 每秒 10 万笔交易
- 100 ms 内决策 (拒 / 通过 / 人工)
- 误杀 < 1%, 漏报 < 0.1%
5.2 架构¶
5.3 特征¶
- 用户: 历史交易 / 信用分 / 设备指纹
- 交易: 金额 / 商户 / 地点 / 时间
- 行为: 近 1h / 1d 交易频次
5.4 模型¶
- XGBoost / LightGBM: 主流, 解释性好
- GNN (GraphSAGE): 团伙欺诈
- LSTM-AE: 时序异常
5.5 决策¶
5.6 关键点¶
- 不平衡: 欺诈 0.1% → Focal Loss + SMOTE
- 实时性: Flink + 内存特征 (< 100 ms)
- 解释: SHAP (监管要求)
- A/B: 拒绝率 vs 误杀率 vs 漏报率
六 · 一句话总结¶
3 大案例 = 8 步框架的 3 次实战。推荐 (业务复杂 + 大流量) / 搜索 (LLM 革命) / LLM 服务 (前沿 + 高成本) / 风控 (低延迟 + 不平衡)。每个都是 ML 系统工程师的"必修案例"。