ML 平台需要哪些模块?向 Uber Michelangelo 学习

2022年2月17日 4 min read

简介

在 notebook 中运行良好的 ML 模型并不等于一个 ML 系统。

生产环境的 ML 需要更多东西:正确的数据、可重复的训练、安全的部署、稳定的预测、部署后的监控以及出错时的回滚 (rollback) 能力。

Uber Michelangelo 是一个经典的案例研究,可以帮助理解为什么大公司需要 ML 平台。

1. Michelangelo 解决了什么问题?

根据 Uber Engineering 的说法,Michelangelo 旨在帮助团队在 Uber 的规模上构建、部署和操作机器学习解决方案。

它涵盖了端到端 (end-to-end) 的 ML 工作流:

  • 数据管理 (data management);
  • 训练 (training);
  • 评估 (evaluation);
  • 部署 (deployment);
  • 预测 (prediction);
  • 监控 (monitoring)。

简单来说,Michelangelo 试图将 ML 从孤立的项目转变为一个通用平台。

2. 为什么 ML 平台是必要的?

当每个团队都构建自己定制的管道 (pipeline) 时,问题就会出现:

  • 训练和提供服务 (serving) 的数据不一致;
  • 模型很难重现 (reproduce);
  • 手动部署;
  • 不知道模型是否发生漂移 (drifting);
  • 无法跟踪预测质量;
  • 每个项目都必须重复造轮子。

ML 平台的诞生就是为了减少这些重复的部分。

3. 一个极简的 ML 平台可以包含什么?

对于小型项目,你不需要构建 Michelangelo。但你可以学习它的结构:

数据源 (Data Source)
→ 特征 / 数据集版本 (Feature / Dataset Version)
→ 训练管道 (Training Pipeline)
→ 评估报告 (Evaluation Report)
→ 模型注册表 (Model Registry)
→ 模型服务 API (Model Serving API)
→ 监控 (Monitoring)
→ 回滚 (Rollback)

对于作品集 (portfolio),一个极其精简的版本:

PostgreSQL / CSV
→ 训练脚本 (Training script)
→ 评估指标 (Evaluation metrics)
→ 保存的模型 (Saved model)
→ FastAPI 端点 (endpoint)
→ Docker 部署 (deployment)
→ 基本日志 + 延迟指标 (Basic logs + latency metrics)

4. 示例:CRM 中的线索评分 (lead scoring)

一个想要对线索进行评分的 CRM 可能需要:

  • 线索数据;
  • 交互历史;
  • 交易 (deal) 结果;
  • 特征提取 (feature extraction);
  • 模型训练;
  • 预测分数的 API;
  • 显示分数的仪表板 (dashboard);
  • 监控分数是否仍然有用。

如果你只是训练一个模型然后就停下来,系统并没有创造太多价值。价值在于进入工作流的分数:应该先打给哪个线索,应该发送哪个跟进,应该优先处理哪个报价。

5. 结论

Uber Michelangelo 表明,ML 平台并不是奢侈品。当 ML 进入生产环境并被多个团队使用时,这是一种自然的反应。

对于小型项目,你不需要复制整个系统。但你应该学习这个原则:ML 必须有明确的生命周期,而不仅仅是一个 notebook。

参考资料

New posts, shipping stories, and nerdy links straight to your inbox.

2x per month, pure signal, zero fluff.


分享这篇文章: