你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 可获取以下功能:
示例笔记本
- 使用 MLflow 训练并跟踪 XGBoost 分类器:演示如何使用 MLflow 跟踪试验、记录模型并将多种风格组合到管道中。
- 使用服务主体身份验证通过 MLflow 训练并跟踪 XGBoost 分类器:演示如何在 Azure 机器学习外部运行的计算中使用 MLflow 跟踪试验。 示例演示如何使用服务主体对 Azure 机器学习服务进行身份验证。
- 使用 HyperOpt 和 MLflow 中的嵌套运行进行超参数优化:演示如何通过常用库
Hyperopt
使用 MLflow 中的子运行对模型执行超参数优化。 示例演示了如何将指标、参数和项目从子运行传输到父运行。 - 使用 MLflow 记录模型:演示如何在 MLflow 中使用模型的概念(而不是项目的概念)。 该示例还演示如何构造自定义模型。
- 使用 MLflow 管理运行和试验:演示如何使用 MLflow 在 Azure 机器学习中查询试验、运行、指标、参数和项目。
在 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 管理注册表中的模型。
使用 MLflow 进行模型部署
可以将 MLflow 模型部署到 Azure 机器学习,并在使用 MLflow 模型时利用改进的体验。 Azure 机器学习支持将 MLflow 模型部署到实时终结点和批处理终结点,而无需指明环境或评分脚本。 支持使用 MLflow SDK、Azure 机器学习 CLI、适用于 Python 的 Azure 机器学习 SDK 或 Azure 机器学习工作室进行部署。
如要详细了解如何将 MLflow 模型部署到 Azure 机器学习,以便进行实时推理和批量推理,请参阅“MLflow 模型部署指南”。
示例笔记本
- 将 MLflow 部署到联机终结点:演示如何使用 MLflow SDK 将 MLflow 格式的模型部署到联机终结点。
- 使用安全推出将 MLflow 部署到联机终结点:演示如何将 MLflow 格式的模型部署到联机终结点,并使用 MLflow SDK 逐步推出模型。 该示例还演示了如何将多个版本的模型部署到同一终结点。
- 将 MLflow 部署到 Web 服务 (V1):演示如何使用 MLflow SDK 将 MLflow 格式的模型部署到 Web 服务 (ACI/AKS v1)。
- 使用 MLflow 将在 Azure Databricks 中训练的模型部署到 Azure 机器学习:演示如何在 Azure Databricks 中训练模型并在 Azure 机器学习中部署这些模型。 示例中还包括对还希望使用 Azure Databricks 中的 MLflow 实例跟踪试验情况的处理方式。
使用 MLflow 项目进行训练(预览版)
重要
本文中标记了“(预览版)”的项目目前为公共预览版。 该预览版在提供时没有附带服务级别协议,建议不要将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft 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 机器学习 | ✓ | ✓ |
注意
- 1 只能下载项目和模型。
- 2 使用 MLflow 项目可以实现的操作(预览版)。
- 3 某些操作可能不受支持。 查看使用 MLflow 在 Azure 机器学习中管理模型注册表,了解详细信息。
- 4 目前无法使用 MLflow SDK 将 MLflow 模型部署到批量推理。 或者请参阅在 Spark 作业中部署和运行 MLflow 模型。