MLflow 和 Azure 机器学习

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

MLflow 是一个开源框架,旨在管理整个机器学习生命周期。 它可以在不同的平台上训练模型并为模型提供服务,让你能够使用相同的一组工具,而不管试验是在计算机本地、远程计算目标上、虚拟机上还是 Azure 机器学习计算实例上运行。

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

  • Azure 机器学习不会在后台托管 MLflow 服务器实例;相反,工作区支持使用 MLflow API 语言。
  • 可将 Azure 机器学习工作区用作任何 MLflow 代码的跟踪服务器,无论它是否在 Azure 机器学习中运行。 只需将 MLflow 配置为指向要其中进行跟踪的工作区即可。
  • 无需做出任何更改就能在 Azure 机器学习中运行任何使用 MLflow 的训练例程。

提示

与 Azure 机器学习 SDK v1 不同,SDK v2 中没有日志记录功能。 建议使用 MLflow 进行日志记录,以便训练例程与云无关且可移植,从而消除代码对 Azure 机器学习的任何依赖。

使用 MLflow 进行跟踪

Azure 机器学习使用 MLflow 跟踪来记录指标并存储试验的项目。 连接到 Azure 机器学习后,使用 MLflow 执行的所有跟踪都会在你正在处理的工作区中具体化。 如要详细了解如何设置实验以使用 MLflow 跟踪实验和训练例程,请参阅使用 MLflow 记录指标、参数和文件。 还可以使用 MLflow 来查询、比较并运行试验

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

在 Azure 机器学习中使用 MLflow 可获取以下功能:

示例笔记本

在 R 中使用 MLflow 进行跟踪

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

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

若要了解如何将 MLflow 跟踪客户端与 Azure 机器学习结合使用,请查看“使用 Azure 机器学习 CLI (v2) 训练 R 模型”中的示例。

使用 Java 中的 MLflow 进行跟踪

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

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

如要了解如何将 MLflow 跟踪客户端与 Azure 机器学习配合使用,请查看“将 MLflow 跟踪客户端与 Azure 机器学习配合使用的 Java 示例”。

将模型注册表与 MLflow 配合使用

Azure 机器学习支持将 MLflow 用于模型管理。 对于熟悉 MLflow 客户端的用户而言,这种支持意味着一种支持整个模型生命周期的便捷方式。

若要详细了解如何在 Azure 机器学习中使用 MLflow API 管理模型,请查看使用 MLflow 在 Azure 机器学习中管理模型注册表

示例笔记本

使用 MLflow 进行模型部署

可以将 MLflow 模型部署到 Azure 机器学习,并在使用 MLflow 模型时利用改进的体验。 Azure 机器学习支持将 MLflow 模型部署到实时终结点和批处理终结点,而无需指明环境或评分脚本。 支持使用 MLflow SDK、Azure 机器学习 CLI、适用于 Python 的 Azure 机器学习 SDK 或 Azure 机器学习工作室进行部署。

如要详细了解如何将 MLflow 模型部署到 Azure 机器学习,以便进行实时推理和批量推理,请参阅“MLflow 模型部署指南”。

示例笔记本

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

重要

本文中标记了“(预览版)”的项目目前为公共预览版。 该预览版在提供时没有附带服务级别协议,建议不要将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

可以使用 MLflow 项目(预览版)将训练作业提交到 Azure 机器学习。 可以使用 Azure 机器学习跟踪在本地提交作业,也可以通过 Azure 机器学习计算将作业迁移到云中。

如要了解如何通过使用 Azure 机器学习工作区跟踪的 MLflow 项目提交训练作业,请参阅“使用 MLflow 项目和 Azure 机器学习训练机器学习模型”。

示例笔记本

MLflow SDK、Azure 机器学习 v2 和 Azure 机器学习工作室功能

下表显示了使用机器学习生命周期中可用的每个客户端工具可以实现的操作。

功能 MLflow SDK Azure 机器学习 CLI/SDK Azure 机器学习工作室
跟踪并记录指标、参数和模型
检索指标、参数和模型 1
提交训练作业 2
使用 Azure 机器学习数据资产提交训练作业
使用机器学习管道提交训练作业
管理试验和运行
管理 MLflow 模型 3
管理非 MLflow 模型
将 MLflow 模型部署到 Azure 机器学习(联机和批处理) 4
将非 MLflow 模型部署到 Azure 机器学习

注意