在數據庫上運行MLflow項目

一個MLflow項目是一種以可重用和可再現的方式打包數據科學代碼的格式。MLflow Projects組件包括用於運行項目的API和命令行工具,這些工具還與跟蹤組件集成,以自動記錄源代碼的參數和git提交,以實現可再現性。

本文介紹MLflow項目的格式,以及如何使用MLflow CLI在Databricks集群上遠程運行MLflow項目,這使得垂直擴展數據科學代碼變得很容易。

Databricks社區版不支持MLflow項目執行。

MLflow項目格式

任何本地目錄或Git存儲庫都可以被視為MLflow項目。定義項目的約定如下:

  • 項目的名稱就是目錄的名稱。

  • Conda環境是在conda.yaml,如果有的話。如果沒有conda.yaml如果存在文件,MLflow在運行項目時使用隻包含Python(特別是Conda可用的最新Python)的Conda環境。

  • 任何. py. sh項目中的文件可以是一個入口點,沒有顯式聲明參數。當您使用一組參數運行這樣的命令時,MLflow在命令行上使用——關鍵<值>語法。

您可以通過添加MLproject文件指定更多選項,這是一個YAML語法的文本文件。一個示例MLproject文件如下所示:

名字我的項目conda_envmy_env.yamlentry_points主要參數data_file路徑正則化類型浮動默認的0.1命令“pythontrain.py- r{正規化}{data_file}”驗證參數data_file路徑命令“pythonvalidate.py{data_file}”

運行一個MLflow項目

要在默認工作空間的Databricks集群上運行MLflow項目,使用以下命令:

Mlflow運行 -b databricks——backend-config 

在哪裏< uri >是一個Git存儲庫URI或文件夾包含MLflow項目和< json-new-cluster-spec >JSON文檔是否包含new_cluster結構.Git的URI應該是這樣的:https://github.com/ <回購> # <項目文件夾>

一個集群規範的例子是:

“spark_version”“7.3.x-scala2.12”“num_workers”1“node_type_id”“i3.xlarge”

如果需要在worker上安裝庫,請使用“集群規範”格式。注意,輪子必須上傳到DBFS並指定為pypi依賴關係。例如:

“new_cluster”“spark_version”“7.3.x-scala2.12”“num_workers”1“node_type_id”“i3.xlarge”},“庫”“pypi”“包”“tensorflow”},“pypi”“包”“/ dbfs / path_to_my_lib.whl”

重要的

  • .egg而且. jarMLflow項目不支持依賴項。

  • 不支持在Docker環境下執行MLflow項目。

  • 在Databricks上運行MLflow項目時,必須使用新的集群規範。不支持在現有集群上運行項目。

使用SparkR

為了在MLflow項目運行中使用SparkR,您的項目代碼必須首先按如下方式安裝和導入SparkR:

如果file.exists“/磚/火花/ R /包裹”))install.packages“/磚/火花/ R /包裹”回購其他的install.packages“SparkR”圖書館SparkR

然後你的項目可以初始化SparkR會話並正常使用SparkR:

sparkR.session()...

例子

本示例展示了如何創建實驗、在Databricks集群上運行MLflow教程項目、查看作業運行輸出以及在實驗中查看運行。

需求

  1. 使用以下命令安裝MLflow皮普安裝mlflow

  2. 安裝和配置磚CLI.在Databricks集群上運行作業需要使用Databricks CLI鑒權機製。

步驟1:創建一個實驗

  1. 在工作區中,選擇創建> MLflow實驗

  2. 在Name字段中輸入教程

  3. 點擊創建.注意實驗ID。在本例中,它是14622565

    實驗ID

步驟2:運行MLflow教程項目

下麵的步驟設置MLFLOW_TRACKING_URI環境變量並運行項目,記錄訓練參數、指標和訓練後的模型到前一步所述的實驗中:

  1. 設置MLFLOW_TRACKING_URI環境變量到Databricks工作空間。

    出口MLFLOW_TRACKING_URI
  2. 運行MLflow教程項目,培訓一個葡萄酒模型.取代< experiment-id >使用您在前一步中注意到的實驗ID。

    Mlflow運行https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine -b databricks——backend-config cluster-spec。——experimental -id < experimental -id> . Json
    ===從https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine獲取項目到/var/folders/kc/l20y4txd5w3_xrdhw6cnz1080000gp/T/tmpbct_5g8u ======上傳項目到DBFS路徑/ DBFS /mlflow-experiments/< experimental -id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ====== Finished upload project to /dbfs/mlflow-experiments//projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ======在Databricks上運行項目https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine的入口點main ======啟動MLflow以Databricks作業運行,ID為8651121。正在獲取運行狀態頁麵URL…======在https://#job//run/1查看運行狀態===
  3. 複製URLhttps:// < databricks-instance > #工作/ <作業id > /運行/ 1在MLflow運行輸出的最後一行。

步驟3:查看Databricks作業運行情況

  1. 在瀏覽器中打開前麵步驟中複製的URL,查看Databricks作業運行輸出:

    作業運行輸出

第四步:查看實驗和MLflow運行細節

  1. 導航到Databricks工作區中的實驗。

    去做實驗
  2. 點擊實驗。

    視圖的實驗
  3. 若要顯示運行詳細信息,請單擊“日期”列中的鏈接。

    運行細節

控件可以查看運行中的日誌日誌Job Output字段中的link。

資源

有關一些示例MLflow項目,請參見MLflow應用程序庫,它包含了一個準備運行的項目庫,旨在使您可以輕鬆地將ML功能包含到代碼中。