跳到主要內容
工程的博客

MLflow:開源機器學習平台Beplay体育安卓版本

分享這篇文章

每個嚐試過機器學習開發的人都知道它是複雜的。除了軟件開發中的常見問題,機器學習(ML)開發還帶來了許多新的挑戰。在Databricks,我們與數百家使用ML的公司合作,我們反複聽到同樣的擔憂:

  1. 有無數的工具。數以百計的開源工具涵蓋了ML生命周期的每個階段,從數據準備到模型訓練。然而,與傳統的軟件開發不同(團隊為每個階段選擇一個工具),在ML中,您通常希望這樣做嚐試所有可用的工具(例如算法),看看它是否能改善結果。因此,ML開發人員需要使用和生產幾十個庫。
  2. 很難追蹤實驗。機器學習算法有幾十個可配置的參數,無論你是單獨工作還是團隊合作,都很難跟蹤每個實驗中使用了哪些參數、代碼和數據來生成模型。

  3. 很難重現結果。如果沒有詳細的跟蹤,團隊通常很難讓相同的代碼再次工作。無論您是將培訓代碼傳遞給工程師用於生產的數據科學家,還是要返回過去的工作來調試問題,重現ML工作流的步驟都是至關重要的。

  4. 很難部署ML。由於運行模型所需的部署工具和環境過多(例如REST服務、批處理推理或移動應用程序),將模型移植到生產環境可能具有挑戰性。沒有標準的方法將模型從任何庫移動到任何這些工具,這會在每次新的部署中產生新的風險。

由於這些挑戰,很明顯,ML開發必須發展很多,才能變得像傳統軟件開發一樣健壯、可預測和廣泛。為此,許多組織已經開始建立內部機器學習平台Beplay体育安卓版本來管理ML生命周期。例如,Facebook、穀歌和Uber已經建立了FBLearner流的敏感性,米開朗基羅管理數據準備、模型培訓和部署。然而,即使是這些內部平台也是有限的:典型的ML平台隻支持一Beplay体育安卓版本小部分內置算法,或者單個ML庫,並且它們與每個公司的基礎設施綁定在一起。用戶不能輕易地利用新的ML庫,或與更廣泛的社區共享他們的工作。

在Databricks,我們相信應該有更好的方法來管理ML生命周期,所以我們很興奮地宣布MLflow:開源機器學習平台Beplay体育安卓版本,我們今天以α

MLflow:開放式機器學習平台Beplay体育安卓版本

MLflow的靈感來自於現有的ML平台,但它的設計初衷就是如此Beplay体育安卓版本開放在兩種意義上:

  1. 開放的接口:MLflow設計用於任何ML庫、算法、部署工具或語言。它是圍繞REST api和簡單的數據格式(例如,模型可以被視為lambda函數)構建的,可以從各種工具中使用,而不僅僅是提供一小部分內置功能。這也使得將MLflow添加到您的現有的ML代碼,以便您可以立即從中受益,並使用組織中其他人可以運行的任何ML庫共享代碼。
  2. 開源:我們釋放MLflow作為開源項目用戶和庫開發人員可以擴展。此外,MLflow的開放格式使共享工作流步驟和模型變得非常容易如果你希望開源你的代碼。

Mlflow目前仍處於alpha階段,但我們相信它已經提供了一個有用的框架來處理ML代碼,我們很樂意聽到您的反饋。在這篇文章中,我們將詳細介紹MLflow並解釋它的組件。

MLflow Alpha發布組件

MLflow的第一個alpha版本有三個組件:

MLflow組件

MLflow跟蹤

MLflow Tracking是一個API和UI,用於在運行機器學習代碼時記錄參數、代碼版本、指標和輸出文件,以便以後將它們可視化。隻需幾行簡單的代碼,您就可以跟蹤參數、度量和工件:

進口mlflow#日誌參數(鍵值對)mlflow.log_param (“num_dimensions”8mlflow.log_param (“正規化”0.1#記錄一個度量;指標可以在整個運行過程中更新mlflow.log_metric (“準確性”0.1...mlflow.log_metric (“準確性”0.45#記錄工件(輸出文件)mlflow.log_artifact (“roc.png”mlflow.log_artifact (“model.pkl”

您可以在任何環境(例如,獨立腳本或筆記本)中使用MLflow Tracking,將結果記錄到本地文件或服務器上,然後比較多次運行。通過web界麵,您可以查看和比較多次運行的輸出結果。團隊還可以使用這些工具來比較不同用戶的結果:

MLflow跟蹤UI
MLflow跟蹤UI

MLflow項目

MLflow項目為打包可重用的數據科學代碼提供了一種標準格式。每個項目都隻是一個包含代碼或Git存儲庫的目錄,並使用描述符文件指定其依賴項以及如何運行代碼。MLflow項目是由一個簡單的YAML文件定義的MLproject

項目名稱:conda_env: conda.yamlentry_points:主要:參數:data_file:路徑正則化:{類型:浮動默認的0.1命令:"python train.py -r {regularization} {data_file}"驗證:參數:data_file:路徑命令:"python validate.py {data_file}"

項目可以通過Conda環境指定它們的依賴項。一個項目還可以有多個調用運行的入口點,使用命名參數。方法運行項目mlflow運行命令行工具,從本地文件或從Git存儲庫:

mlflow運行example/project -P alpha=0.5Mlflow運行git@github.com:databricks/mlflow-example.git -P alpha=0.5

MLflow將自動為項目設置正確的環境並運行它。此外,如果在項目中使用MLflow Tracking API, MLflow將記住執行的項目版本(即Git提交)和任何參數。然後,您可以輕鬆地重新運行完全相同的代碼。

項目格式使得在公司內部或開源社區中共享可重複的數據科學代碼變得容易。與MLflow跟蹤相結合,MLflow Projects為再現性、可擴展性和實驗性提供了很好的工具。

MLflow模型

MLflow模型是一種將機器學習模型打包成多種格式(稱為“口味”)的約定。MLflow提供了各種工具來幫助您部署不同類型的模型。每個MLflow模型都保存為一個目錄,其中包含任意文件和MLmodel描述符文件,該文件列出了它可以用於的類型。

time_created: 2018 - 02 - 21 - t13:21:34.12口味:sklearn:sklearn_version: 0.19.1pickled_model: model.pklpython_function:loader_module: mlflow.sklearnpickled_model: model.pkl

在本例中,該模型可以與支持sklearnpython_function模型的味道。

MLflow提供了將許多公共模型類型部署到不同平台的工具。Beplay体育安卓版本例如,支持的任何模型python_functionflavor可以部署到基於docker的REST服務器上,部署到Azure ML和Amazon SageMaker等雲平台上,Beplay体育安卓版本並在Apache中作為用戶定義的函數火花用於批處理和流推理。如果您使用跟蹤API將MLflow模型輸出為工件,MLflow也會自動記住它們來自哪個項目並運行它們。

MLflow入門

要開始使用MLflow,請遵循mlflow.org或查看alpha發布代碼Github.我們很高興聽到您對概念和代碼的反饋!

在Databricks上托管MLflow

如果您想運行MLflow的托管版本,我們現在也在接受注冊www.eheci.com/product/managed-mlflow.MLflow on Databricks集成了完整的Databricks統一分析平台,包括筆記本電腦,工作,Beplay体育安卓版本磚δ,以及Databricks安全模型,使您能夠以安全的、可用於生產的方式大規模運行現有MLflow作業。

接下來是什麼?

我們剛剛開始使用MLflow,所以還有更多的東西要做。除了對項目的更新,我們還計劃引入主要的新組件(例如,Monitoring)、庫集成,以及對我們已經發布的組件的擴展(例如,支持更多的環境類型)。敬請期待我們的博客獲取更多信息。

查看MLflow Spark+AI峰會主題演講

免費試用Databricks

相關的帖子

看到所有數據科學與機器學習的帖子
Baidu
map