Michelangelo是Uber内部建设的 ML-as-a-service平台。
让我们先了解通常情况下机器学习的工程流程有哪些:
- 数据的管理
- 模型的训练
- 模型的进化
- 模型的部署
- 模型的预测
- 预测的监控
下面我们介绍Michelangelo,来看看Michelangelo是如何对这些流程进行支持的。
数据的管理
Offline
Uber的交易和日志数据都存储在HDFS的Data Lake中,通过Spark或者Hive SQL就很容易的对Data Lake中的数据进行计算。Michelangelo提供了运行Spark或者Hive Job的容器,通过它可以提交或触发计算Job。计算的特征结果可以放入Hive中,这样可以让计算的特征数据进行共享,另外也可以将计算结果存入训练数据集存储中,这些数据后面主要用来对模型的训练。
Online
Online部分的数据主要来自于Kafka,通过流式计算提取特征,这些特征一部分存储离线部分的Hive中,用于离线的批量分析。另外,流式计算的结果写入Cassandra中,这部分的存储数据用与、Online部分的快速查询。
模型的训练
模型训练通过指定需要训练的模型类型(Michelangelo目前已经含有决策树、线性及逻辑回归、无监督模型、时序模型以及深度学习模型,也支持用户自定义上传的模型),同时配置模型的超参数,同时配置数据源信息以及训练所需要的计算资源,就可以完成模型的自动训练,将训练模型序列化存储到模型仓库Cassandra中。
模型的演进
Michelangelo提供模型版本的管理,同时提供各种可视化分析工具,帮助对模型的效果及性能进行分析和调试。
模型部署
1)Online部分的部署
Online模型部署到Online预测服务中,这些服务集群通过负载均衡器以及提供RPC调用来完成对单个数据或批量数据的快速预测。
2)Offline部分的部署
Offline部分将模型发布到模型运行容器环境中,然后可以根据需要去触发模型运行。
模型的预测
预测的监控
Michelangelo提供预测的监控样例数据对新的模型效果进行监控。
閱讀更多 娃娃學軟件 的文章