在数据库上运行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_envpython_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功能包含到代码中。