跟踪机器学习训练运行

MLflow跟踪组件允许您记录与训练机器学习模型相关的源属性、参数、指标、标签和工件。要开始使用MLflow,请尝试其中一个MLflow快速入门教程

MLflow跟踪与实验和运行

MLflow跟踪基于两个概念,实验而且运行

  • 一个MLflow实验是MLflow运行的组织和访问控制的主要单元;所有MLflow运行都属于一个实验。通过实验,您可以可视化、搜索和比较运行,还可以下载运行工件和元数据,以便在其他工具中进行分析。

  • 一个MLflow运行对应于模型代码的一次执行。每次运行记录以下信息:

    • :启动运行的笔记本的名称或运行的项目名称和入口点。

    • 版本:如果从Databricks工作区中的笔记本运行,则修改笔记本;如果从Databricks工作区运行,则Git提交哈希砖回购或者从MLflow项目

    • 开始和结束时间:运行的开始和结束时间。

    • 参数:保存为键值对的模型参数。键和值都是字符串。

    • 指标:保存为键值对的模型评估指标。取值为数字。每个指标都可以在整个运行过程中更新(例如,跟踪模型的损失函数是如何收敛的),MLflow记录并让您可视化指标的历史。

    • 标签:运行以键值对形式保存的元数据。您可以在运行完成期间和之后更新标记。键和值都是字符串。

    • 工件:输出任意格式的文件。例如,您可以将图像、模型(例如,pickle的scikit-learn模型)和数据文件(例如,Parquet文件)记录为工件。

MLflow跟踪API记录来自模型运行的参数、度量、标记和工件。跟踪API与MLflow通信跟踪服务器.当您使用Databricks时,由Databricks托管的跟踪服务器将记录数据。托管的MLflow跟踪服务器具有Python、Java和R api。

要了解如何控制对实验的访问,请参见实验权限而且更改实验权限

请注意

MLflow安装在Databricks Runtime ML集群上。要在Databricks Runtime集群上使用MLflow,必须安装mlflow图书馆。有关在集群上安装库的说明,请参见在集群上安装库.要为MLflow安装的特定包有:

  • 对于Python,请选择库源PyPI并进入mlflow字段。

  • 对于R,选择库源然后进入mlflow字段。

  • 对于Scala,安装这两个包:

    • 选择库源Maven,然后进入org.mlflow: mlflow-client: 1.11.0坐标字段。

    • 选择库源PyPI并进入mlflow字段。

MLflow运行的日志记录在哪里

所有MLflow运行都记录到活动实验中,可以使用以下任何一种方式进行设置:

如果未设置活动实验,则将运行记录到笔记本的实验

要将实验结果记录到一个远程托管的MLflow跟踪服务器,该服务器位于运行实验的工作空间之外的工作空间,请设置跟踪URI以引用远程工作空间mlflow.set_tracking_uri (),并在远程工作空间中使用mlflow.set_experiment ()

mlflowset_tracking_uri<uri_of_remote_workspace>mlflowset_experiment“远程工作空间实验路径”

日志记录示例笔记本

本笔记本演示如何将运行记录到笔记本实验和工作区实验。只有在笔记本中启动的MLflow运行才能记录到笔记本实验中。可以将从任何笔记本电脑或api启动的MLflow运行记录到工作区实验中。有关查看日志运行的信息,请参见查看笔记本实验而且查看工作区实验

日志MLflow运行笔记本

在新标签页打开笔记本

您可以使用MLflow Python、Java或Scala以及R api来启动运行并记录运行数据。详细信息请参见MLflow快速入门笔记本

组织MLflow实验训练

实验是模型训练运行的组织单元。有两种类型的实验:工作空间和笔记本。

  • 您可以从Databricks Machine Learning UI或MLflow API创建一个工作区实验。工作区实验不与任何笔记本相关联,任何笔记本都可以通过使用实验ID或实验名称来记录对这些实验的运行。

  • 一个笔记本实验与一个特定的笔记本相关联。当您开始使用时,如果没有活动的实验,Databricks会自动创建一个笔记本实验mlflow.start_run ()

若要查看您可以访问的工作区中的所有实验,请单击实验的图标实验在侧栏中。此图标仅当您处于机器学习角色

实验页面

要搜索实验,请在搜索字段,单击搜索.中包含搜索文本的实验列表将更改为仅显示那些实验的名字位置,或笔记列。

点击表格中任意一个实验名称,即可进入该实验页面:

视图的实验

实验页面列出了与实验相关的所有运行。从该表中,您可以通过单击其打开与实验相关的任何运行的运行页面开始时间.的列使您可以访问创建运行的笔记本版本。你也可以搜索和过滤器根据指标或参数设置运行。

创建工作空间实验

本节描述如何使用Databricks UI创建一个工作区实验。您可以直接创建一个工作区实验从工作空间从实验页面

你也可以使用MLflow API,或Databricks Terraform提供商databricks_mlflow_experiment

有关日志记录运行到工作区实验的说明,请参见日志记录示例笔记本

  1. 点击工作空间的图标工作空间在侧栏中。

  2. 进入要创建实验的文件夹。

  3. 做以下其中一件事:

    • 单击任意文件夹后的菜单下拉在文本的右侧,并选择创建> MLflow实验

      创建实验

    • 在工作空间或用户文件夹中,单击下脱字符号并选择创建> MLflow实验

  4. 在Create MLflow Experiment对话框中,为实验输入一个名称和一个可选的工件位置。如果您没有指定工件位置,那么工件将存储在其中dbfs: /砖/ mlflow-tracking / < experiment-id >

    砖支持DBFS、S3和Azure Blob存储工件位置。

    要在S3中存储工件,请指定表单的URIs3: / / <斗> / <路径>.MLflow从您的集群获取访问S3的凭据实例配置文件.存储在S3中的工件不会出现在MLflow UI中;需要通过对象存储客户端下载。

    请注意

    在AWS上上传到DBFS的MLflow工件的最大大小是5GB。

    要在Azure Blob存储中存储工件,请指定表单的URIwasbs: / / <容器> @ < storage-account > .blob.core.windows.net/ <路径>.存储在Azure Blob存储中的工件不会出现在MLflow UI中;您必须使用blob存储客户端下载它们。

    请注意

    当您将工件存储在DBFS以外的位置时,该工件不会出现在MLflow UI中。存储在DBFS以外位置的模型不能在模型注册表中注册。

  5. 点击创建.一个空的实验出现了。

您还可以从Experiments页面创建一个新的工作区实验。要创建一个新实验,请使用创建实验下拉菜单下拉菜单。从下拉菜单中,您可以选择AutoML实验或者一个空白的实验。

  • AutoML实验。的配置AutoML实验页面出现。有关使用AutoML的信息,请参见使用Databricks AutoML UI训练ML模型

  • 空白试验。的创建MLflow实验对话框出现了。在对话框中输入名称和可选的工件位置,以创建一个新的工作区实验。默认的工件位置是dbfs: /砖/ mlflow-tracking / < experiment-id >

    要记录此实验的运行情况,请调用mlflow.set_experiment ()与实验路径。实验路径显示在实验页面顶部。看到日志记录示例笔记本有关详细信息和示例笔记本。

创建笔记本实验

当你使用mlflow.start_run()命令在笔记本中,运行记录活动实验的指标和参数。如果没有活动的实验,Databricks将创建一个笔记本实验。一个笔记本实验与其对应的笔记本共享相同的名称和ID。笔记本ID是字符末尾的数字标识符笔记本URL和ID

有关日志记录运行到笔记本实验的说明,请参见日志记录示例笔记本

请注意

如果使用API删除一个笔记本实验(例如,MlflowClient.tracking.delete_experiment ()在Python中),笔记本本身被移动到垃圾文件夹。

视图的实验

你可以访问的每个实验都出现在实验页面.从这个页面,您可以查看任何实验。点击一个实验名称显示实验页面

访问实验页面的其他方式:

  • 您可以从工作区菜单中访问工作区实验的实验页面。

  • 您可以从笔记本中进入笔记本实验的实验页面。

查看工作区实验

  1. 点击工作空间的图标工作空间在侧栏中。

  2. 进入包含实验的文件夹。

  3. 点击实验名称。

查看笔记本实验

在笔记本的右侧侧栏中,单击实验图标实验的图标

将出现“实验运行”侧栏,并显示与笔记本实验相关的每次运行的摘要,包括运行参数和度量。在侧边栏的顶部是笔记本最近记录的运行到的实验的名称(笔记本实验或工作区实验)。

查看运行参数和度量

从侧边栏,您可以导航到实验页面或直接运行。

  • 单击,查看实验外部链接在最右边,挨着实验运行

  • 要显示运行,单击运行的名称。

管理实验

控件中拥有的实验的重命名、删除或管理权限实验页面,实验页面,或工作区菜单。

从实验页面或实验页面重命名实验

预览

此功能已在公共预览

重新命名一个实验实验页面或者是实验页面,点击三键图标并选择重命名

从工作区菜单重命名实验

  1. 点击工作空间的图标工作空间在侧栏中。

  2. 进入包含实验的文件夹。

  3. 点击菜单下拉在实验的右侧选择重命名

复制实验名称

如需复制实验名称,单击复制图标在实验页面的顶部。您可以在MLflow命令中使用此名称set_experiment设置主动MLflow实验。

实验名称图标

方法中的实验名称也可以复制实验侧边栏在笔记本

删除笔记本实验

笔记本实验是笔记本的一部分,不能单独删除。当你删除笔记本,删除相关的笔记本实验。如果使用API删除一个笔记本实验(例如,MlflowClient.tracking.delete_experiment ()在Python中)或UI中,笔记本也会被删除。

从工作区菜单中删除工作区实验

  1. 点击工作空间的图标工作空间在侧栏中。

  2. 进入包含实验的文件夹。

  3. 点击菜单下拉在实验的右侧选择转向垃圾

从实验页面或实验页面删除工作区或笔记本实验

预览

此功能已在公共预览

中删除一个实验实验页面或者是实验页面,点击三键图标并选择删除

当你删除一个笔记本实验时,笔记本也会被删除。

更改实验权限

控件更改实验的权限实验页面,点击分享

实验页面权限按钮

控件上拥有的实验的权限可以更改实验页面.点击三键图标行动列并选择许可

有关实验权限的更多信息,请参见实验权限

在工作空间之间复制实验

要在工作空间之间迁移MLflow实验,可以使用社区驱动的开源项目bob下载地址MLflow进出口

使用这些工具,你可以:

  • 在同一台或另一台跟踪服务器上与其他数据科学家共享和协作。例如,您可以将另一个用户的实验复制到您的工作区中。

  • 从本地跟踪服务器复制MLflow实验并运行到Databricks工作区。

  • 将关键任务实验和模型备份到另一个Databricks工作空间。

使用MLflow运行管理训练代码

所有MLflow运行都记录到活性实验.如果没有显式地将实验设置为活动实验,则运行将记录到笔记本实验。

查看运行

您可以从运行的父实验页面或直接从创建运行的笔记本访问运行。

实验页面,在运行表中,单击某一次运行的开始时间。

在笔记本上,点击外部链接在“实验运行”侧栏中运行的日期和时间旁边。

运行屏幕显示用于运行的参数、运行产生的度量以及任何标记或注释。来显示笔记参数指标,或标签对于这次运行,单击的箭头在标签的左边。

您还可以在此屏幕中访问从运行中保存的工件。

查看运行

用于预测的代码片段

如果您从运行中记录一个模型,该模型将出现在本页的Artifacts部分中。要显示演示如何加载和使用模型在Spark和pandas dataframe上进行预测的代码片段,请单击模型名称。

预测代码片段

查看用于运行的笔记本或Git项目

浏览笔记本版本这就产生了一个运行:

  • 在实验页面,点击列。

  • 在运行页面上,单击旁边的链接

  • 从笔记本中,在实验运行侧栏中,单击笔记本图标笔记本版本图标在实验跑的盒子里

与运行相关的笔记本版本将出现在主窗口中,并显示运行的日期和时间。

如果运行是从Git项目,单击Git提交字段以打开运行中使用的项目的特定版本。的链接field打开运行中使用的Git项目的主分支。

向运行中添加标记

标记是稍后可以创建和使用的键-值对搜索跑步

  1. 运行页面,点击标签图标如果它还没有打开。出现标签表。

    标签表
  2. 请按的名字而且价值字段并键入标记的键和值。

  3. 点击添加

    添加标签

编辑或删除运行的标记

控件中的图标可编辑或删除现有标记行动列。

标签的行为

再现一次运行的软件环境

通过单击,您可以为运行重新生成精确的软件环境复制运行.出现以下对话框:

重现运行对话框

使用默认设置,当您单击确认

  • 笔记本被克隆到对话框中显示的位置。

  • 如果原集群仍然存在,则将克隆的笔记本附加到原集群,并启动集群。

  • 如果原来的集群不再存在,将创建并启动一个具有相同配置的新集群,包括所有已安装的库。笔记本附加到新的集群。

您可以为克隆的笔记本选择不同的位置,并检查集群配置和已安装的库:

  • 如果选择其他文件夹保存克隆的笔记本,单击编辑文件夹

  • 要查看集群规格,请单击视图规范.若要只克隆笔记本而不克隆集群,请取消勾选此选项。

  • 若要查看安装在原始集群上的库,请单击查看库.如果您不关心是否安装与原始集群上相同的库,请取消选中此选项。

管理运行

重命名运行

如需重命名运行,单击三键图标在运行页面的右上角,选择重命名

过滤器运行

您可以根据参数或度量值搜索运行情况。您还可以通过标记搜索运行。

  • 若要搜索与包含参数和度量值的表达式匹配的运行,请在搜索字段中输入查询并单击搜索.一些查询语法示例如下:

    metrics.r2>0.3

    params.elasticNetParam0.5

    params.elasticNetParam0.5metrics.avg_areaUnderROC>0.3

  • 要按标签搜索运行,输入标签的格式如下:标签。<关键> = " < >价值”.字符串值必须用引号括起来,如图所示。

    tags.estimator_name = " RandomForestRegressor "

    tags.color = "蓝色"tags.size = 5

    键和值都可以包含空格。如果键包含空格,则必须将其括在反引号中,如所示。

    标签。' my custom tag ' = "my value"

您还可以根据运行的状态(Active或Deleted)以及模型版本是否与运行相关联来筛选运行。为此,单击过滤器在搜索框的右边。的状态而且关联模型出现下拉菜单。从下拉菜单中进行选择。

过滤器运行

比较这两种

您可以比较单个实验或多个实验的运行情况。的比较运行页以图形和表格格式显示有关选定运行的信息。

比较单个实验的运行情况
  1. 实验页面,通过单击运行左侧的复选框选择两个或多个运行,或通过选中列顶部的复选框选择所有运行。

  2. 点击比较.的比较' '运行屏幕出现了。

比较多个实验的运行情况
  1. 实验页面,单击实验名称前的复选框,选择需要比较的实验。

  2. 点击比较(n)n是你选择的实验数量)。将出现一个屏幕,显示所选实验的所有运行。

  3. 通过单击运行左侧的复选框选择两个或多个运行,或者通过选中列顶部的复选框选择所有运行。

  4. 点击比较.的比较' '运行屏幕出现了。

使用比较运行页面

比较运行页显示了运行结果的可视化以及运行信息、运行参数和度量的表。

要创建一个可视化:

  1. 选择绘图类型(平行坐标图散点图,或等高线图).

  2. 对于一个平行坐标图,选择要绘制的参数和指标。对于一个散点图等高线图,选择要显示在每个轴上的参数或指标。

    比较运行页面可视化

参数而且指标表显示所有选定运行的运行参数和度量。属性标识这些表中的列运行细节正上方的表格。为了简单起见,您可以通过切换隐藏所有选定运行中相同的参数和指标只显示差异按钮

比较运行页表

下载运行

  1. 选择一个或多个运行。

  2. 点击下载CSV.包含以下字段的CSV文件将下载:

    运行ID,名称,源类型,源名称,用户,状态,,…,,…

删除运行

  1. 在实验中,通过单击运行左侧的复选框,选择一个或多个运行。

  2. 点击删除

  3. 如果运行是父运行,则决定是否也要删除后代运行。该选项默认选中。

  4. 点击删除确认或取消取消。删除的运行将保存30天。若要显示已删除的运行,请选择删除在State字段中。

复制在工作空间之间运行

要从Databricks工作空间导入或导出MLflow运行,可以使用社区驱动的开源项目bob下载地址MLflow进出口

从Databricks外部访问MLflow跟踪服务器

您还可以从Databricks外部写入和读取跟踪服务器,例如使用MLflow CLI。

以编程方式分析MLflow运行

您可以通过以下两个DataFrame api以编程方式访问MLflow运行数据:

这个示例演示了如何使用MLflow Python客户端构建一个仪表板,该仪表板可以可视化评估指标随时间的变化,跟踪特定用户启动的运行次数,并测量所有用户的运行总数:

MLflow跟踪示例

下面的笔记本演示了如何训练几种类型的模型,并在MLflow中跟踪训练数据,以及如何在Delta Lake中存储跟踪数据。