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提供預測的監控樣例數據對新的模型效果進行監控。
閱讀更多 娃娃學軟件 的文章