跟踪机器学习训练运行
可以通过 MLflow 跟踪组件记录与训练机器学习模型相关的源属性、参数、指标、标记和项目。 若要开始使用 MLflow,请尝试 MLflow 快速入门教程之一。
MLflow 跟踪基于两个概念,即试验和运行:
- MLflow 试验是组织的基本构成单位,并且是对 MLflow 运行的访问控制;所有 MLflow 运行都属于一个试验。 可以通过试验来可视化、搜索和比较运行,以及下载运行项目和元数据以便在其他工具中进行分析。
- 一个 MLflow 运行对应于模型代码的单次执行。 每个运行都记录以下信息:
- 源:启动了此运行的笔记本的名称,或者此运行的项目名称和入口点。
- 版本:如果从笔记本运行,则为笔记本修订版本;如果从 MLflow 项目运行,则为 Git 提交哈希。
- 开始与结束时间:运行的开始时间和结束时间。
- 参数:保存为键值对的模型参数。 键和值都是字符串。
- 指标:保存为键值对的模型评估指标。 值为数字。 每个指标都可以在整个运行过程中更新(例如,用于跟踪模型的损失函数如何聚合),而 MLflow 会记录指标的历史记录并将其可视化。
- 标记:运行保存为键值对的元数据。 可以在运行过程中和运行完成后更新标记。 键和值都是字符串。
- 项目:任意格式的输出文件。 例如,可以将图像、模型(例如,pickle 格式的 scikit-learn 模型)和数据文件(例如,Parquet 文件)记录为项目。
MLflow 跟踪 API 可记录模型运行中的参数、指标、标记和项目。 跟踪 API 可与 MLflow 跟踪服务器通信。 使用 Databricks 时,Databricks 托管的跟踪服务器会记录数据。 托管的 MLflow 跟踪服务器具有 Python API、Java API 和 R API。
若要了解如何控制对试验的访问,请参阅 MLflow 试验权限和更改试验权限。
注意
MLflow 安装在 Databricks Runtime ML 群集上。 若要在 Databricks Runtime 群集上使用 MLflow,必须安装 mlflow 库。 请参阅在群集上安装库,获取相关说明。 MLflow 要安装的特定包有:
- 对于 Python,请选择“库源”PyPI,并在“包”字段内输入 。
- 对于 R,请选择“库源”CRAN,并在“包”字段内输入 。
- 对于 Scala,请安装以下两个包:
- 选择“库源”Maven,并在“坐标”字段内输入 。
- 选择“库源”PyPI,并在“包”字段内输入 。
本文内容:
在何处记录 MLflow 运行
所有 MLflow 运行都会记录到活动试验中,可以使用以下任一方法对其进行设置:
- 使用 mlflow.set_experiment() 命令。
- 使用
experiment_id中的experiment_id参数。 - 设置 MLflow 环境变量 MLFLOW_EXPERIMENT_NAME 或 MLFLOW_EXPERIMENT_ID 之一。
如果未设置活动试验,则会将运行记录到笔记本试验。
示例笔记本
此笔记本演示了如何将运行记录到笔记本试验和工作区试验。 只有在笔记本中启动的 MLflow 运行才能记录到笔记本试验中。 从任何笔记本启动的或从 API 启动的 MLflow 运行可以记录到工作区试验中。 若要了解如何查看已记录的运行,请参阅查看笔记本试验和查看工作区试验。
将 MLflow 运行记录到笔记本
可以使用 MLflow Python、Java 或 Scala 以及 R API 来启动运行并记录运行数据。 有关详细信息,请参阅 MLflow 快速入门笔记本。
试验
有两种类型的试验:工作区和笔记本。
- 可通过 Databricks 机器学习 UI 或 MLflow API 创建工作区试验。 工作区试验不与任何笔记本关联,任何笔记本都可以使用试验 ID 或试验名称将运行记录到这些试验中。
- 笔记本试验与特定笔记本相关联。 如果在使用 mlflow.start_run() 启动运行时没有活动的试验,Azure Databricks 会自动创建笔记本试验。
若要查看工作区中的所有试验,请在边栏中单击
“试验”。 仅当你是机器学习角色用户时,才会显示此图标。 单击表中任意试验的名称以显示其试验页:

试验页列出与试验关联的所有运行。 单击表中试验的“开始时间”,可打开与试验关联的任何运行的运行页。 使用“源”列,可访问创建运行的笔记本版本。 还可按指标或参数设置搜索和筛选运行。
创建试验
创建工作区试验
此部分介绍如何使用 Azure Databricks UI 创建工作区试验。 也可使用 MLflow API。
有关将运行记录到工作区试验的说明,请参阅示例笔记本。
单击边栏中的
“工作区”。转到要在其中创建试验的文件夹。
执行下列操作之一:
在任何文件夹旁边,单击文本右侧的
,然后选择“创建”>“MLflow 试验”。
在工作区或用户文件夹中,单击
,然后选择“创建”>“MLflow 试验”。
在“创建 MLflow 试验”对话框中,输入试验的名称,还可以选择输入项目位置。 如果未指定项目位置,则项目会存储在
dbfs:/databricks/mlflow-tracking/<experiment-id>中。Azure Databricks 支持 DBFS 和 Azure Blob 存储项目位置。
若要将项目存储在 Azure Blob 存储中,请指定
wasbs://<container>@<storage-account>.blob.core.windows.net/<path>格式的 URI。 存储在 Azure Blob 存储中的项目不会显示在 MLflow UI 中;必须使用 Blob 存储客户端下载它们。注意
如果将一个项目存储在 DBFS 以外的位置,则该项目不会显示在 MLflow UI 中。 存储在 DBFS 以外位置的模型无法在模型注册表中进行注册。
单击“创建”。 将显示一个空试验。
创建笔记本试验
在笔记本中使用 mlflow.start_run() 命令时,运行会将指标和参数记录到活动试验中。 如果没有活动的试验,Azure Databricks 会创建笔记本试验。 笔记本试验的名称和 ID 与相应笔记本的名称和 ID 相同。 笔记本 ID 是笔记本 URL 和 ID 末尾的数字标识符。
有关将运行记录到笔记本试验的说明,请参阅示例笔记本。
注意
如果使用 API(例如,Python 中的 MlflowClient.tracking.delete_experiment())删除笔记本试验,则笔记本本身会被移到回收站文件夹中。
查看试验
你有权访问的每个试验都将显示在试验页上。 可以在此页中查看任何试验。 单击试验名称,以显示试验页。
访问试验页的其他方法:
- 可以从工作区菜单访问工作区试验的试验页。
- 可以从笔记本访问笔记本试验的试验页。
查看工作区试验
- 单击边栏中的
“工作区”。 - 转到包含该试验的文件夹。
- 单击试验名称。
查看笔记本试验
在笔记本工具栏中,单击“试验”图标
。

此时会出现“试验运行”边栏,其中显示与笔记本试验有关的每个运行的摘要,包括运行参数和指标。 边栏顶部的信息是笔记本最近一次记录运行的试验(笔记本试验或工作区试验)的名称。

从边栏中,可导航到“试验”页面,也可直接导航到运行。
- 若要查看试验,请单击最右边“试验运行”旁的
。 - 若要显示运行,请单击运行日期和时间旁边的
。
管理试验
可以在试验页、试验页或工作区菜单中重命名、删除或管理所拥有的试验的权限。
从实验页重命名实验
重要
此功能目前以公共预览版提供。
从工作区菜单重命名试验
- 单击边栏中的
“工作区”。 - 转到包含该试验的文件夹。
- 单击试验右侧的
,然后选择“重命名”。
复制试验名称
若要复制试验名称,请在试验页顶部单击
。 可在 MLflow 命令 set_experiment 中使用此名称来设置活动 MLflow 试验。

还可从笔记本中的试验边栏复制试验名称。
删除笔记本试验
笔记本试验是笔记本的一部分,不能单独删除。 如果删除笔记本,则也会删除相关的笔记本试验。 如果使用 API(例如,Python 中的 MlflowClient.tracking.delete_experiment())或 UI 删除笔记本试验,则也会删除笔记本。
从工作区菜单中删除工作区试验
- 单击边栏中的
“工作区”。 - 转到包含该试验的文件夹。
- 单击试验右侧的
,然后选择“移至回收站”。
从试验页中删除工作区或笔记本试验
重要
此功能目前以公共预览版提供。
在删除笔记本实验时,该笔记本也会被删除。
更改试验权限
若要从试验页更改试验权限,请单击“共享”。

可以从试验页更改你拥有的试验的权限。 在“操作”列单击
,然后选择“权限”。
有关试验权限的详细信息,请参阅 MLflow 试验权限。
在工作区之间复制试验
若要在工作区之间迁移 MLflow 试验,可以使用社区驱动的开放源代码项目 MLflow Export-Import。
借助这些工具,你可以:
- 与同一或另一跟踪服务器中的其他数据科学家共享和协作。 例如,可以将另一个用户的试验克隆到你的工作区。
- 将 MLflow 试验和运行从本地跟踪服务器复制到 Databricks 工作区。
- 将任务关键型试验和模型备份到另一个 Databricks 工作区。
运行
所有 MLflow 运行都会记录到活动试验中。 如果尚未将某个试验显式设置为活动试验,则会将运行记录到笔记本试验。
查看运行
可以从运行的父试验页访问运行,或直接从创建运行的笔记本访问运行。
从试验页的运行表中,单击运行的开始时间。
在笔记本的“试验运行”边栏中,单击运行的日期和时间旁边的
图标。
运行屏幕显示了用于运行的参数、运行所生成的指标以及任何标记或注释。 若要显示此运行的“注释”、“参数”、“指标”或“标记”,请单击标签左侧的
。
你还可以在此屏幕中访问从运行中保存的项目。

用于预测的代码片段
如果从运行中记录模型,则该模型会显示在本页的“项目”部分。 若要显示代码片段,以便说明如何加载并使用模型来对 Spark 和 pandas DataFrames 进行预测,请单击模型名称。

查看用于运行的笔记本或 Git 项目
若要查看创建了运行的笔记本的版本,请执行以下操作:
- 在试验页上,单击“源”列中的链接。
- 在运行页上,单击“源”旁边的链接。
- 在笔记本的“试验运行”边栏中,单击试该验运行框中的“笔记本”图标
。
与该运行关联的笔记本版本会在主窗口中显示,并有一个高亮条显示运行日期和时间。
如果已从 Git 项目以远程方式启动了运行,则请单击“Git 提交”字段中的链接,以打开运行中所用项目的特定版本。 “源”字段中的链接可打开用于运行的 Git 项目的主分支。
向运行中添加标记
标签是键值对,你可以创建这些键值对,并在以后使用这些键值对来搜索运行。
在运行页面中,单击
(如果尚未打开)。 此时将显示标记表。
单击“名称”和“值”字段,然后键入标签的键和值。
单击“添加”。

编辑或删除运行的标记
若要编辑或删除现有标记,请使用“操作”列中的图标。

重现运行的软件环境
通过单击“重现运行”可重现运行所需的确切软件环境。 以下对话框随即出现:

单击“确认”使用默认设置时:
- 笔记本将克隆到对话框中显示的位置。
- 如果原始群集仍存在,则克隆的笔记本将附加到原始群集并启动该群集。
- 如果原始群集不再存在,则会创建并启动与原始群集配置相同(包括任何已安装的库)的新群集。 笔记本将附加到新群集。
可为克隆的笔记本选择不同的位置,并检查群集配置和已安装的库:
- 若要选择其他文件夹保存克隆的笔记本,请单击“编辑文件夹”。
- 若要查看群集规格,请单击“查看规格”。若要仅克隆笔记本而不克隆群集,请取消选中此选项。
- 若要查看原始群集上安装的库,请单击“查看库”。 如果无需考虑安装的库是否与原始群集上的库相同,请取消选中此选项。
管理运行
重命名运行
若要重命名运行,请单击运行页右上角的
,然后选择“重命名”。
筛选运行
可基于参数或指标值搜索运行。 你还可以按标记搜索运行。
若要搜索与包含参数和指标值的表达式匹配的运行,请在搜索字段中输入查询并单击“搜索”。 查询的部分语法示例如下:
metrics.r2 > 0.3params.elasticNetParam = 0.5params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3要按标记搜索运行,请按以下格式输入标记:
tags.<key>="<value>"。 字符串值必须用引号引起来,如下所示。tags.estimator_name="RandomForestRegressor"tags.color="blue" AND tags.size=5键和值都可以包含空格。 如果键包含空格,则必须将其括在反引号中,如下所示。
tags.`my custom tag` = "my value"
还可根据运行状态(“活动”或“已删除”)以及模型版本是否与运行关联来筛选运行。 要执行此操作,请单击搜索框右侧的“筛选器”。 随即将显示“状态”和“链接模型”下拉菜单 。 从下拉菜单进行选择。

比较运行
可以比较单个试验或多个试验中的运行。 “比较运行”页以图形和表格格式显示有关所选运行的信息。
比较单个试验中的运行
- 在试验页上,通过单击运行左侧的复选框来选择两个或更多个运行,或者通过选中列顶部的框来选择所有运行。
- 单击“比较”。 此时将出现“比较
<N>个运行”屏幕。
比较多个试验中的运行
- 在试验页上,通过单击试验名称左侧的框来选择要比较的试验。
- 单击“比较 (n) 个”(n 是选择的试验数)。 此时将出现一个屏幕,其中显示了所选试验中的所有运行。
- 通过单击运行左侧的复选框来选择两个或更多个运行,或者通过选中列顶部的框来选择所有运行。
- 单击“比较”。 此时将出现“比较
<N>个运行”屏幕。
使用“比较运行”页
“比较运行”页显示运行结果的可视化效果,以及运行信息、运行参数和指标的表。
若要创建可视化效果,请执行以下操作:
选择绘图类型(“平行坐标图”、“散点图”或“等高线图”)。
对于“平行坐标图”,请选择要绘制的参数和指标。 对于“散点图”或“等高线图”,请选择要在每个轴上显示的参数或指标。

“参数”和“指标”表显示所有选定运行中的运行参数和指标。 这些表中的列由紧靠其上的“运行详细信息”表标识。 为方便起见,可以通过切换
来隐藏所有选定运行中相同的参数和指标。

下载运行
选择一个或多个运行。
单击“下载 CSV”。 包含以下字段的 CSV 文件下载:
Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
删除运行
- 在试验中,通过单击运行左侧的复选框来选择一个或多个运行。
- 单击 “删除” 。
- 如果运行为父运行,则确定是否也要删除后代运行。 默认情况下选择此选项。
- 单击“删除”进行确认,或单击“取消”进行取消。 删除的运行保存 30 天。 若要显示删除的运行,请选择“状态”字段中的“已删除”。
在工作区之间复制运行
若要将 MLflow 运行导入或导出 Databricks 工作区,可以使用社区驱动的开放源代码项目 MLflow Export-Import。
从 Azure Databricks 外部访问 MLflow 跟踪服务器
你还可以从 Azure Databricks 外部写入和读取跟踪服务器,例如,使用 MLflow CLI 来这样做。
以编程方式分析 MLflow 运行
可使用以下两个数据帧 API 以编程方式访问 MLflow 运行数据:
- MLflow Python 客户端 search_runs API 返回 pandas 数据帧。
- MLflow 试验数据源返回 Apache Spark 数据帧。
此示例演示如何使用 MLflow Python 客户端生成一个仪表板。该仪表板可直观显示一段时间内的评估指标更改、跟踪特定用户启动的运行的数目,以及度量所有用户的运行总数:
示例
以下笔记本演示了如何在 MLflow 中训练多种类型的模型和跟踪训练数据,以及如何在 Delta Lake 中存储跟踪数据。