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

AI前線發表於2018-06-06
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 來進行資料準備、模型訓練和部署。但這些內部平臺存在一定的侷限性:典型的機器學習平臺只支援一小部分內建演算法或單個機器學習庫,並且被繫結在公司內部的基礎設施上。使用者無法輕易地使用新的機器學習庫,或與社群分享他們的工作成果。

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

MLflow:開放式機器學習平臺

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

  1. 開放介面:MLflow 可與任何機器學習庫、演算法、部署工具或程式語言一起使用。它基於 REST API 和簡單的資料格式(例如,可將模型視為 lambda 函式)而構建,可以使用各種工具,而不只是提供一小部分內建功能。使用者可以很容易地將 MLflow 新增到現有的機器學習程式碼中,並在組織中共享程式碼,讓其他人也能執行這些程式碼。

  2. 開源:MLflow 是一個開源專案,使用者和機器學習庫開發人員可以對其進行擴充套件。此外,利用 MLflow 的開放格式,可以輕鬆地跨組織共享工作流步驟和模型。

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

MLflow 的元件(alpha 版)

MLflow 的 alpha 版本包含了三個元件:

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

MLflow 的跟蹤元件支援記錄和查詢實驗資料,如評估度量指標和引數。MLflow 的專案元件提供了可重複執行的簡單包裝格式。最後,MLflow 的模型元件提供了用於管理和部署模型的工具。

MLflow 的跟蹤元件

MLflow 的跟蹤元件提供了一組 API 和使用者介面,用於在執行機器學習程式碼時記錄引數、程式碼版本、度量指標和輸出檔案,以便在後續進行視覺化。通過幾行簡單的程式碼就可以跟蹤引數、度量指標和檔案:

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

使用者可使用跟蹤元件(通過獨立指令碼或 notebook)將結果記錄到本地檔案或伺服器上,然後通過 Web UI 來檢視和比較多次執行結果。團隊也可以使用這些工具來比較不同使用者的執行結果。

MLflow 的專案元件

MLflow 的專案元件提供了一種用於打包可重用程式碼的標準格式。專案可以是一個包含程式碼的目錄或 Git 倉庫,並使用一個描述符檔案來描述依賴關係以及如何執行程式碼。MFflow 專案通過一個叫作 MLproject 的 YAML 檔案進行定義。

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

專案可以通過 Conda 來指定依賴關係。一個專案可能包含多個帶有命名引數的執行入口。使用者可以使用 mlflow run 命令列工具來執行專案,專案程式碼可以在本地,也可以在 Git 倉庫裡:

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

MLflow 將自動為專案設定合適的環境並執行它。另外,如果在專案中使用了 MLflow Tracking API,MLflow 將記住執行過的專案版本(即 Git 的提交操作)和引數,這樣就可以很輕鬆地重新執行完全相同的程式碼。

無論是在企業還是在開源社群,專案格式讓共享可重用程式碼變得更加容易。結合 MLflow 的跟蹤元件,MLflow 專案為可重現性、可擴充套件性和實驗提供了很好的工具。

MLflow 的模型元件

MLflow 的模型元件提供了一種將機器學習模型打包成多種格式的規範,這些格式被稱為“flavor”。MLflow 提供了多種工具來部署不同 flavor 的模型。每個 MLflow 模型被儲存成一個目錄,目錄中包含了任意模型檔案和一個 MLmodel 描述符檔案,檔案中列出了相應的 flavor。

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

在這個例子中,模型可以與支援 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



相關文章