在數據庫上運行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_env:my_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
而且. jar
MLflow項目不支持依賴項。不支持在Docker環境下執行MLflow項目。
在Databricks上運行MLflow項目時,必須使用新的集群規範。不支持在現有集群上運行項目。
例子
本示例展示了如何創建實驗、在Databricks集群上運行MLflow教程項目、查看作業運行輸出以及在實驗中查看運行。
需求
使用以下命令安裝MLflow
皮普安裝mlflow
.安裝和配置磚CLI.在Databricks集群上運行作業需要使用Databricks CLI鑒權機製。
步驟2:運行MLflow教程項目
下麵的步驟設置MLFLOW_TRACKING_URI
環境變量並運行項目,記錄訓練參數、指標和訓練後的模型到前一步所述的實驗中:
設置
MLFLOW_TRACKING_URI
環境變量到Databricks工作空間。出口MLFLOW_TRACKING_URI=磚
運行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查看運行狀態=== 複製URL
https:// < databricks-instance > #工作/ <作業id > /運行/ 1
在MLflow運行輸出的最後一行。
資源
有關一些示例MLflow項目,請參見MLflow應用程序庫,它包含了一個準備運行的項目庫,旨在使您可以輕鬆地將ML功能包含到代碼中。