egolearner / paper-note

7 stars 2 forks source link

Scaling Machine Learning as a Service #3

Open egolearner opened 5 years ago

egolearner commented 5 years ago

http://proceedings.mlr.press/v67/li17a.html

1 概述

Uber使用机器学习的场景有预测供求、餐厅推荐、地图和自动驾驶等。 Uber机器学习的挑战

  1. Uber应用实时产生大数量,需要有可扩展性。
  2. Uber跨多个城市,每个城市分别训练和管理模型难以维护
  3. Uber的模型多样性

解决思路

  1. 建立feature store和相关计算引擎,以便于获取特征
  2. 训练和管理一个分层次的模型
  3. 自动的扩展和部署模型预测服务

2 系统架构总览

2.1 数据准备

Uber使用SQL作为各种数据源的查询接口,查询引擎底层进行优化。数据源都有metadata,不同的用例可以共享数据准备任务。

2.2 Feature Store

Batch和实时机器学习流水线共享特征计算引擎和Feature Store。只需要在数据流水线中指定UUID,就可以通过特征名称获取特征。 在线预测可以低延时地从在线存储(Cassandra)中查询特征。批量训练、预测和在线预测使用统一的标准(canonical)名称来访问特征,在线和离线可以使用相同的表达式来获取特征。

2.3 Model Training

3 特征计算和服务

3.1 需求与挑战

需求

特征计算的挑战 统一流批引擎的限制

特征Serving的挑战 批量训练和在线预测的特征分开存储,原因是

4 分区模型

4.1 挑战

之前的方案是每个城市训练一个模型,管理上百个模型既耗时又容易出错。

5 实时预测和监控

使用TChannel作为网络协议。 在请求Header中指定使用的模型,预测服务检查header路由到指定的模型。 预测结果写入Kafka,join实际结果,然后发布监控和报警指标。 使用API来上下线模型。上线前会打包必要的文件,验证模型可以正确运行,然后部署到容器。

6 经验教训

egolearner commented 5 years ago

https://www.youtube.com/watch?v=MpnszJ_3Ong https://eng.uber.com/michelangelo/ https://eng.uber.com/scaling-michelangelo/