다음을 통해 공유

MLflow 和 Azure 机器学习

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

本文介绍 MLflow 的功能,这是一个开源框架,用于管理完整的机器学习生命周期。 MLflow 使用一组一致的工具在不同平台上训练和提供模型。 无论试验是在本地、远程计算目标、虚拟机还是 Azure 机器学习计算实例上运行,都使用 MLflow。

Azure 机器学习工作区与 MLflow 兼容,因此使用 Azure 机器学习工作区的方式与使用 MLflow 服务器的方式相同。 此兼容性提供以下优势:

  • Azure 机器学习不托管 MLflow 服务器实例,而是直接使用 MLflow API。
  • 将 Azure 机器学习工作区用作任何 MLflow 代码的跟踪服务器,无论它是否在 Azure 机器学习中运行。 只需将 MLflow 配置为指向跟踪发生的工作区。
  • 运行在 Azure 机器学习中使用 MLflow 的任何训练例程,而无需进行更改。

提示

与 Azure 机器学习 SDK v1 不同,Azure 机器学习 v2 SDK 不包括日志记录功能。 使用 MLflow 日志记录使训练例程与云无关、可移植且独立于 Azure 机器学习。

什么是跟踪

使用任务时,Azure 机器学习会自动跟踪实验相关的信息,例如代码、环境以及输入和输出数据。 但模型、参数和指标特定于每个方案,因此模型生成器需要设置其跟踪。

保存的跟踪元数据因试验而异,可以包括:

  • Code
  • OS 版本和 Python 包等环境详细信息
  • 输入数据
  • 参数配置
  • 模型
  • 评估指标
  • 评估可视化方法,比如混淆矩阵和重要性图
  • 评估结果,包括一些评估预测

跟踪试验的好处

无论是在 Azure 机器学习中使用作业还是在 Notebooks 中以交互方式训练模型,试验跟踪都有助于:

  • 在一个位置组织所有机器学习试验。 然后搜索和筛选试验,向下钻取以查看有关以前的试验的详细信息。
  • 比较试验、分析结果和调试模型训练。
  • 重现或重新运行试验以验证结果。
  • 更轻松地进行协作,因为可以看到其他团队成员正在执行的作、以编程方式共享试验结果和访问试验数据。

使用 MLflow 进行跟踪

Azure 机器学习工作区与 MLflow 兼容。 这种兼容性意味着使用 MLflow 跟踪工作区中的运行、指标、参数和项目,而无需更改训练例程或添加任何特定于云的语法。 若要了解如何使用 MLflow 跟踪 Azure 机器学习工作区中的试验和运行,请参阅使用 MLflow 跟踪试验和模型

Azure 机器学习使用 MLflow 跟踪来记录指标并存储试验的项目。 当您连接到 Azure 机器学习时,所有 MLflow 跟踪记录都会显示在您使用的工作区中。

若要了解如何启用日志记录,以使用 MLflow 监视实时运行指标,请参阅使用 MLflow 记录指标、参数和文件。 还可以 使用 MLflow 查询和比较试验和实验运行

Azure 机器学习中的 MLflow 提供了一种集中跟踪的方法。 即使在本地或不同的云中工作,也可以将 MLflow 连接到 Azure 机器学习工作区。 Azure 机器学习工作区提供了一个集中式、安全且可缩放的位置来存储训练指标和模型。

通过 Azure 机器学习中的 MLflow,可以:

在 R 中使用 MLflow 进行跟踪

R 中的 MLflow 支持具有以下限制:

  • MLflow 跟踪仅限于跟踪 Azure 机器学习作业上的试验指标、参数和模型。
  • 不支持对具有 R 内核的 RStudio、Posit(之前为 RStudio Workbench)或 Jupyter Notebook 进行交互式训练。
  • 不支持模型管理和注册。 使用 Azure 机器学习 CLI 或 Azure 机器学习工作室进行模型注册和管理。

有关在 Azure 机器学习中将 MLflow 跟踪客户端与 R 模型结合使用的示例,请参阅使用 Azure 机器学习 CLI (v2) 训练 R 模型

使用 Java 中的 MLflow 进行跟踪

Java 中的 MLflow 支持具有以下限制:

  • MLflow 跟踪仅限于跟踪 Azure 机器学习作业上的试验指标和参数。
  • 无法跟踪项目和模型。 可以改为使用 mlflow.save_model 方法和作业中的 outputs 文件夹来保存要捕获的模型或项目。

有关将 MLflow 跟踪客户端与 Azure 机器学习跟踪服务器结合使用的 Java 示例,请参阅 azuremlflow-java

MLflow 跟踪的示例笔记本

  • 使用 MLflow 训练和跟踪 XGBoost 分类器,以演示如何利用 MLflow 跟踪实验、记录模型,并将多种类型合并到管道中。
  • 使用 MLflow 和服务主体身份验证训练和跟踪 XGBoost 分类器, 演示如何在 Azure 机器学习外部的计算环境中使用 MLflow 跟踪试验。 示例演示如何使用服务主体对 Azure 机器学习服务进行身份验证。
  • 在 MLflow 中使用 HyperOpt 和嵌套运行的超参数优化 演示如何使用子运行通过常用的 HyperOpt 库为模型执行超参数优化。 示例演示了如何将指标、参数和项目从子运行传输到父运行。
  • 使用 MLflow 记录模型演示如何使用模型的概念,而不是将工件与 MLflow 配合使用。 该示例还演示如何构造自定义模型。
  • 使用 MLflow 管理运行和试验 演示如何使用 MLflow 从 Azure 机器学习查询试验、运行、指标、参数和工件。

使用 MLflow 进行模型注册

Azure 机器学习支持将 MLflow 用于模型管理。 如果熟悉 MLflow 客户端,则可以使用它来管理整个模型生命周期。 若要详细了解如何在 Azure 机器学习中使用 MLflow API 管理模型,请参阅 使用 MLflow 管理 Azure 机器学习中的模型注册表

MLflow 模型注册的示例笔记本

使用 MLflow 进行模型管理 展示了如何在注册表中管理模型。

使用 MLflow 进行模型部署

将 MLflow 模型部署到 Azure 机器学习,以获得改进的体验。 Azure 机器学习支持将 MLflow 模型部署到实时终结点和批处理终结点,而无需指定环境或评分脚本。

MLflow SDK、Azure 机器学习 CLI、适用于 Python 的 Azure 机器学习 SDK 和 Azure 机器学习工作室都支持 MLflow 模型部署。 有关将 MLflow 模型部署到 Azure 机器学习的详细信息,以便进行实时推理和批处理推理,请参阅 部署 MLflow 模型的指南

MLflow 模型部署的示例笔记本

使用 MLflow 项目进行训练(预览版)

警告

对 Azure 机器学习中 MLproject 文件(MLflow 项目)的支持将于 2026 年 9 月完全停用。 MLflow 仍受完全支持,并且仍然是在 Azure 机器学习中跟踪机器学习工作负载的推荐方法。

当继续使用 MLflow 时,我们建议通过使用 Azure CLI 或适用于 Python 的 Azure 机器学习 SDK (v2) 从 MLproject 文件转换为 Azure 机器学习作业。 有关 Azure 机器学习作业的详细信息,请参阅使用 MLflow 跟踪 ML 试验和模型

重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

使用 MLflow 项目将训练作业提交到 Azure 机器学习。 使用 Azure 机器学习跟踪在本地提交作业,或使用 Azure 机器学习计算将作业迁移到云。

了解如何将使用 MLflow 项目的培训作业提交到 Azure 机器学习工作区,以便在 Azure 机器学习中使用 MLflow 项目进行跟踪(预览版)。

MLflow 项目的示例笔记本

MLflow 与 Azure 机器学习客户端工具功能的对比情况

下表显示了可以使用 MLflow SDK 和 Azure 机器学习客户端工具执行的机器学习生命周期作。

功能 MLflow SDK Azure 机器学习 CLI/SDK v2 Azure 机器学习工作室
跟踪并记录指标、参数和模型
检索指标、参数和模型 只能下载制品和模型。
提交训练作业 可以使用 MLflow 项目(预览版)。
使用 Azure 机器学习数据资产提交训练作业
使用机器学习管道提交训练作业
管理试验和运行
管理 MLflow 模型 某些操作不被支持。1
管理非 MLflow 模型
将 MLflow 模型部署到 Azure 机器学习(联机和批量处理) 目前无法部署 MLflow 模型以进行批量推理。2
将非 MLflow 模型部署到 Azure 机器学习

1 有关详细信息,请参阅使用 MLflow 管理 Azure 机器学习中的模型注册表

2 有关替代方案,请参阅在 Spark 作业中部署和运行 MLflow 模型