MLflow 和 Azure 机器学习

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

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

Azure 机器学习工作区与 MLflow 兼容,这意味着你可以按使用 MLflow 服务器的相同方式使用 Azure 机器学习工作区。 这种兼容性带来了以下优势:

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

提示

与 Azure 机器学习 SDK v1 不同,Azure 机器学习 v2 SDK 中没有日志记录功能。 可以使用 MLflow 日志记录来确保训练例程与云无关、可移植,并且不依赖于 Azure 机器学习。

什么是跟踪

处理作业时,Azure 机器学习会自动跟踪有关试验的一些信息,例如代码、环境以及输入和输出数据。 但是,模型、参数和指标特定于应用场景,因此模型生成器必须配置其跟踪。

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

  • 代码
  • 环境详细信息,如 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 进行模型注册

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 模型