Microsoft Fabric 中的机器学习试验

机器学习试验是组织和控制所有相关机器学习运行的主要单元。 一次运行对应于模型代码的单次执行。 在 MLflow 中,跟踪基于试验和运行。

机器学习试验允许数据科学家在运行机器学习代码时记录参数、代码版本、指标和输出文件。 你也可以通过试验来可视化、搜索和比较运行,以及下载运行文件和元数据以便在其他工具中进行分析。

本文将详细介绍数据科学家如何与机器学习试验交互并使用它来组织开发过程和跟踪多个运行。

先决条件

创建试验

可以直接从 Power BI 用户界面 (UI) 中的数据科学主页或通过编写使用 MLflow API 的代码来创建机器学习试验。

使用 UI 创建试验

使用 UI 创建机器学习试验:

  1. 创建新的数据科学工作区,或选择现有的工作区。

  2. 从“新建”部分选择“试验”。

  3. 提供试验名称,然后选择“创建”。 此操作会在工作区中创建一个空试验。

    Screenshot showing where to select Experiment in the New menu.

创建试验后,可以开始添加运行以跟踪运行指标和参数。

使用 MLflow API 创建试验

还可以使用 mlflow.create_experiment()mlflow.set_experiment() API 直接从创作体验创建机器学习试验。 在以下代码中,将 <EXPERIMENT_NAME> 替换为你的试验的名称。

import mlflow
 
# This will create a new experiment with the provided name.
mlflow.create_experiment("<EXPERIMENT_NAME>")

# This will set the given experiment as the active experiment. 
# If an experiment with this name does not exist, a new experiment with this name is created.
mlflow.set_experiment("<EXPERIMENT_NAME>")

管理试验中的运行

机器学习试验包含用于简化跟踪和比较的运行集合。 在试验中,数据科学家可以在各种运行中导航并浏览基础参数和指标。 数据科学家还可以比较机器学习试验中的运行,以确定哪些参数子集能够产生所需的模型性能。

跟踪运行

一个机器学习运行对应于模型代码的单次执行。

Screenshot of machine learning run detail page.

每个运行包含以下信息:

  • :创建运行的笔记本的名称。
  • 已注册版本:指示运行是否保存为机器学习模型。
  • 开始日期:运行的开始时间。
  • 状态:运行进度。
  • 超参数:超参数以键值对的形式保存。 键和值都是字符串。
  • 指标:保存为键值对的运行指标。 值为数字。
  • 输出文件:任意格式的输出文件。 例如,可以记录图像、环境、模型和数据文件。

查看最新运行

还可以直接从工作区列表视图查看试验的最新运行。 通过此视图,可以跟踪最新的活动、快速跳转到相关的 Spark 应用程序,并根据运行状态应用筛选器。

Screenshot of machine learning recent runs and Spark application view.

比较和筛选运行

若要比较和评估机器学习运行的质量,可以比较试验中所选运行之间的参数、指标和元数据。

直观地比较运行

可以直观地比较和筛选现有试验中的运行。 通过视觉比较,可以轻松地在多个运行之间导航并对它们进行排序。

Screenshot showing a list of runs and the chart view.

要比较运行:

  1. 选择包含多个运行的现有机器学习试验。
  2. 选择“视图”选项卡,然后转到“运行列表”视图。 或者,可以直接从“运行详细信息”视图中选择“查看运行列表”选项。
  3. 通过展开“自定义列”窗格自定义表中的列。 在这里,你可以选择想要查看的属性、指标和超参数。
  4. 展开“筛选器”窗格,根据某些所选条件缩小结果范围。
  5. 选择多个运行以在指标比较窗格中比较它们的结果。 在此窗格中,可以通过更改图表标题、可视化效果类型、X 轴、Y 轴等来自定义图表。

使用 MLflow API 比较运行

数据科学家还可以使用 MLflow 在试验中的运行之间进行查询和搜索。 可以通过访问 MLflow 文档来浏览更多用于搜索、筛选和比较运行的 MLflow API。

获取所有运行

可以使用 MLflow 搜索 API mlflow.search_runs() 获取试验中的所有运行,方法是在以下代码中将 <EXPERIMENT_NAME> 替换为你的试验名称或将 <EXPERIMENT_ID> 替换为你的试验 ID:

import mlflow

# Get runs by experiment name: 
mlflow.search_runs(experiment_names=["<EXPERIMENT_NAME>"])

# Get runs by experiment ID:
mlflow.search_runs(experiment_ids=["<EXPERIMENT_ID>"])

提示

可以通过向 experiment_ids 参数提供试验 ID 列表来跨多个试验进行搜索。 同样,向 experiment_names 参数提供试验名称列表后,MLflow 将能够跨多个试验进行搜索。 如果你想比较不同试验中的不同运行,此操作非常有用。

顺序和限制运行

使用 search_runs 中的参数 max_results 来限制返回的运行数。 参数 order_by 让你能够列出作为排序依据的列,它可以包含可选的 DESCASC 值。 例如,以下示例返回了试验的最后一个运行。

mlflow.search_runs(experiment_ids=[ "1234-5678-90AB-CDEFG" ], max_results=1, order_by=["start_time DESC"])

比较 Fabric 笔记本中的运行

可以使用 Fabric 笔记本中的 MLFlow 创作小组件来跟踪每个笔记本单元中生成的 MLflow 运行。 通过小组件,可以跟踪运行、相关指标、参数和属性,并直接跟踪到单个单元级别。

若要获取视觉比较,还可以切换到“运行比较”视图。 该视图以图形方式呈现数据,有助于快速识别不同运行之间的规律或偏差。

Screenshot showing how to use the MLFlow authoring widget.

将运行保存为机器学习模型

运行生成所需结果后,可以选择“另存为 ML 模型”,将运行另存为模型,以增强模型跟踪和模型部署

Screenshot showing where to select Create a new model.