在数据库上运行MLflow项目
一个MLflow项目是一种以可重用和可再现的方式打包数据科学代码的格式。MLflow Projects组件包括用于运行项目的API和命令行工具,这些工具还与跟踪组件集成,以自动记录源代码的参数和git提交,以实现可再现性。
本文介绍MLflow项目的格式,以及如何使用MLflow CLI在Databricks集群上远程运行MLflow项目,这使得垂直扩展数据科学代码变得很容易。
Databricks社区版不支持MLflow项目执行。
MLflow项目格式
任何本地目录或Git存储库都可以被视为MLflow项目。定义项目的约定如下:
项目的名称就是目录的名称。
软件环境在
python_env.yaml
,如果有的话。如果没有python_env.yaml
如果存在文件,MLflow在运行项目时使用只包含Python(具体来说,是virtualenv可用的最新Python)的virtualenv环境。任何
. py
或. sh
项目中的文件可以是一个入口点,没有显式声明参数。当您使用一组参数运行这样的命令时,MLflow在命令行上使用——关键<值>
语法。
您可以通过添加MLproject文件指定更多选项,这是一个YAML语法的文本文件。一个示例MLproject文件如下所示:
的名字:我的项目python_env:python_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功能包含到代码中。