Spark團隊開源新做:全流程機器學習平臺MLflow

策劃編輯 | Natalie
做者 | Matei Zaharia
譯者 | 無明
編輯 | Vincent
AI 前線導讀:在昨天開幕的 Spark+AI Summit 大會上,Spark 和 Mesos 的核心做者兼 Databrick 首席技術專家 Matei Zaharia 宣佈推出開源機器學習平臺 MLflow,這是一個可以覆蓋機器學習全流程(從數據準備到模型訓練到最終部署)的新平臺,旨在爲數據科學家構建、測試和部署機器學習模型的複雜過程作一些簡化工做。Matei 表示,研究工做主要圍繞着「如何爲開發者提供相似谷歌 TFX、Facebook FBLearner Flow 等平臺相似的好處,可是要以開放的方式——不只在開源的意義上開放,並且是可使用任何工具和算法的意義上開放"的想法展開。

Matei 爲 MLflow 撰寫了一篇介紹文章,AI 前線對文章進行了編譯。這個全新的機器學習平臺到底有何新特性?讓咱們來一探究竟。

更多幹貨內容請關注微信公衆號「AI 前線」,(ID:ai-front)

每一個作過機器學習開發的人都知道機器學習的複雜性,除了軟件開發中常見的問題以外,機器學習還存在不少新的挑戰。做爲一家大數據解決方案公司,Databricks 與數百家使用機器學習的公司合做,因此可以清楚地瞭解他們的痛點,好比工具太過複雜、難以跟蹤實驗、難以重現結果、難以部署模型。因爲這些挑戰的存在,機器學習開發必須變得與傳統軟件開發同樣強大、可預測和普及。爲此,不少企業已經開始構建內部機器學習平臺來管理機器學習生命週期。例如,Facebook、谷歌和優步分別構建了 FBLearner Flow、TFX 和 Michelangelo 來進行數據準備、模型訓練和部署。但這些內部平臺存在必定的侷限性:典型的機器學習平臺只支持一小部份內置算法或單個機器學習庫,而且被綁定在公司內部的基礎設施上。用戶沒法輕易地使用新的機器學習庫,或與社區分享他們的工做成果。html

Databricks 認爲應該使用一種更好的方式來管理機器學習生命週期,因而他們推出了 MLflow,一個開源的機器學習平臺。python

MLflow:開放式機器學習平臺

MLflow 的靈感來源於現有的機器學習平臺,但以開放性做爲主要設計目標:git

  1. 開放接口:MLflow 可與任何機器學習庫、算法、部署工具或編程語言一塊兒使用。它基於 REST API 和簡單的數據格式(例如,可將模型視爲 lambda 函數)而構建,可使用各類工具,而不僅是提供一小部份內置功能。用戶能夠很容易地將 MLflow 添加到現有的機器學習代碼中,並在組織中共享代碼,讓其餘人也能運行這些代碼。github

  2. 開源:MLflow 是一個開源項目,用戶和機器學習庫開發人員能夠對其進行擴展。此外,利用 MLflow 的開放格式,能夠輕鬆地跨組織共享工做流步驟和模型。算法

Mlflow 目前仍處於 alpha 階段,但它已經提供了一個可用的框架來處理機器學習代碼。接下來將詳細介紹 MLflow 和它的組件。編程

MLflow 的組件(alpha 版)

MLflow 的 alpha 版本包含了三個組件:安全

MLflow 的跟蹤組件支持記錄和查詢實驗數據,如評估度量指標和參數。MLflow 的項目組件提供了可重複運行的簡單包裝格式。最後,MLflow 的模型組件提供了用於管理和部署模型的工具。服務器

MLflow 的跟蹤組件

MLflow 的跟蹤組件提供了一組 API 和用戶界面,用於在運行機器學習代碼時記錄參數、代碼版本、度量指標和輸出文件,以便在後續進行可視化。經過幾行簡單的代碼就能夠跟蹤參數、度量指標和文件:微信

用戶可以使用跟蹤組件(經過獨立腳本或 notebook)將結果記錄到本地文件或服務器上,而後經過 Web UI 來查看和比較屢次運行結果。團隊也可使用這些工具來比較不一樣用戶的運行結果。框架

MLflow 的項目組件

MLflow 的項目組件提供了一種用於打包可重用代碼的標準格式。項目能夠是一個包含代碼的目錄或 Git 倉庫,並使用一個描述符文件來描述依賴關係以及如何運行代碼。MFflow 項目經過一個叫做 MLproject 的 YAML 文件進行定義。

項目能夠經過 Conda 來指定依賴關係。一個項目可能包含多個帶有命名參數的運行入口。用戶可使用 mlflow run 命令行工具來運行項目,項目代碼能夠在本地,也能夠在 Git 倉庫裏:

MLflow 將自動爲項目設置合適的環境並運行它。另外,若是在項目中使用了 MLflow Tracking API,MLflow 將記住執行過的項目版本(即 Git 的提交操做)和參數,這樣就能夠很輕鬆地從新運行徹底相同的代碼。

不管是在企業仍是在開源社區,項目格式讓共享可重用代碼變得更加容易。結合 MLflow 的跟蹤組件,MLflow 項目爲可重現性、可擴展性和實驗提供了很好的工具。

MLflow 的模型組件

MLflow 的模型組件提供了一種將機器學習模型打包成多種格式的規範,這些格式被稱爲「flavor」。MLflow 提供了多種工具來部署不一樣 flavor 的模型。每一個 MLflow 模型被保存成一個目錄,目錄中包含了任意模型文件和一個 MLmodel 描述符文件,文件中列出了相應的 flavor。

在這個例子中,模型能夠與支持 sklearn 或 python_function 的工具一塊兒使用。

MLflow 提供了將常見模型部署到不一樣平臺的工具。例如,任何支持 python_function 的模型均可以部署到基於 Docker 的 REST 服務器或雲平臺上(如 Azure ML 和 AWS SageMaker),也能夠做爲 Apache Spark 的用戶定義函數,用於進行批量和流式推斷。若是使用 Tracking API 將 MLflow 模型輸出爲文件,MLflow 還會自動記住它們是由哪一個項目運行生成的。

MLflow 入門

要使用 MLflow,請按照 mlflow.org 上的說明進行操做,或使用 Github 上的 alpha 版代碼。

在 Databricks 上託管 MLflow

若是要使用 MLflow 的託管版本,能夠在 databricks.com/mlflow 註冊。Databricks 上的 MLflow 與 Databricks Unified Analytics 平臺集成,包括 Notebooks、Jobs,Databricks Delta 和 Databricks 安全模型,爲用戶提供了安全、生產就緒的方式大規模地運行現有的 MLflow 做業。

後續計劃

MLflow 剛剛展露頭角,所以還有不少事情要作。後續計劃引入新組件(如監控)、與其餘庫的集成以及擴展已發佈的組件(例如支持更多環境類型)。

MLflow 官網

http://www.mlflow.org

MLflow GitHub 地址

https://github.com/databricks/mlflow

英文原文

https://databricks.com/blog/2018/06/05/introducing-mlflow-an-open-source-machine-learning-platform.html

相關文章
相關標籤/搜索