在 Azure 机器学习中使用 MLflow 项目进行训练(预览版)
本文介绍如何连同 MLflow 项目一起提交训练作业,MLflow 项目使用 Azure 机器学习工作区进行跟踪。 你可以提交作业并仅使用 Azure 机器学习跟踪作业,或者将运行迁移到云,以完全在 Azure 机器学习计算上运行。
警告
对 Azure 机器学习中 MLproject
文件(MLflow 项目)的支持将于 2026 年 9 月完全停用。 MLflow 仍受完全支持,并且仍然是在 Azure 机器学习中跟踪机器学习工作负载的推荐方法。
当继续使用 MLflow 时,我们建议通过使用 Azure CLI 或适用于 Python 的 Azure 机器学习 SDK (v2) 从 MLproject
文件转换为 Azure 机器学习作业。 有关 Azure 机器学习作业的详细信息,请参阅使用 MLflow 跟踪 ML 试验和模型。
MLflow 项目允许你组织和描述你的代码,使其他数据科学家(或自动化工具)可以运行它。 使用 Azure 机器学习的 MLflow 项目使你可以在工作区中跟踪和管理训练运行。
重要
此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
有关详细信息,请参阅适用于 Azure 预览版的补充使用条款。
先决条件
如下所示,安装 MLflow SDK
mlflow
包和适用于 MLflow 的 Azure 机器学习azureml-mlflow
插件。pip install mlflow azureml-mlflow
提示
可以使用
mlflow-skinny
包,它是一个不带 SQL 存储、服务器、UI 或数据科学依赖项的轻型 MLflow 包。 对于主要需要 MLflow 的跟踪和记录功能但不需要导入整个功能套件(包括部署)的用户,建议使用此包。创建 Azure 机器学习工作区。 若要创建工作区,请参阅创建入门所需的资源。 查看在工作区中执行 MLflow 操作所需的访问权限。
若要执行远程跟踪,或者跟踪在 Azure 机器学习外部运行的试验,请将 MLflow 配置为指向 Azure 机器学习工作区的跟踪 URI。 有关如何将 MLflow 连接到工作区的详细信息,请参阅为 Azure 机器学习配置 MLflow。
将 Azure 机器学习用作 MLflow 项目的后端需要包
azureml-core
:pip install azureml-core
连接到工作区
如果在 Azure 机器学习外部操作,则需要将 MLflow 配置为指向 Azure 机器学习工作区的跟踪 URI。 可以在为 Azure 机器学习配置 MLflow 中找到说明。
在 Azure 机器学习工作区中跟踪 MLflow 项目
此示例演示如何提交 MLflow 项目并使用 Azure 机器学习跟踪这些项目。
将
azureml-mlflow
包作为 pip 依赖项添加到环境配置文件,以便在工作区中跟踪指标和关键项目。conda.yaml
name: mlflow-example channels: - defaults dependencies: - numpy>=1.14.3 - pandas>=1.0.0 - scikit-learn - pip: - mlflow - azureml-mlflow
提交本地运行并确保设置参数
backend = "azureml"
,该参数在工作区中添加自动跟踪、模型捕获、日志文件、快照和输出错误的支持。 此示例假设你尝试运行的 MLflow 项目位于你当前所在的文件夹 (uri="."
) 中。mlflow run . --experiment-name --backend azureml --env-manager=local -P alpha=0.3
在 Azure 机器学习工作室中查看运行和指标。
在 Azure 机器学习作业中训练 MLflow 项目
此示例演示如何将 MLflow 项目作为在 Azure 机器学习计算上运行的作业提交。
创建后端配置对象,在本例中,我们将指定
COMPUTE
。 此参数引用你要用于运行项目的远程计算群集的名称。 如果COMPUTE
存在,则项目将自动作为 Azure 机器学习作业提交到指定的计算。backend_config.json
{ "COMPUTE": "cpu-cluster" }
将
azureml-mlflow
包作为 pip 依赖项添加到环境配置文件,以便在工作区中跟踪指标和关键项目。conda.yaml
name: mlflow-example channels: - defaults dependencies: - numpy>=1.14.3 - pandas>=1.0.0 - scikit-learn - pip: - mlflow - azureml-mlflow
提交本地运行并确保设置参数
backend = "azureml"
,该参数在工作区中添加自动跟踪、模型捕获、日志文件、快照和输出错误的支持。 此示例假设你尝试运行的 MLflow 项目位于你当前所在的文件夹 (uri="."
) 中。mlflow run . --backend azureml --backend-config backend_config.json -P alpha=0.3
注意
由于 Azure 机器学习作业始终在环境的上下文中运行,因此将忽略参数
env_manager
。在 Azure 机器学习工作室中查看运行和指标。
清理资源
如果不打算使用工作区中记录的指标和项目,目前尚未提供单独删除它们的功能。 可以改为删除包含存储帐户和工作区的资源组,这样就不会产生任何费用:
在 Azure 门户中,选择最左侧的“资源组”。
从列表中选择已创建的资源组。
选择“删除资源组”。
输入资源组名称。 然后选择“删除”。
示例笔记本
将 MLflow 与 Azure 机器学习笔记本配合使用演示了本文中所述的概念,并在这些概念的基础上有所延伸。
注意
可在 https://github.com/Azure/azureml-examples 找到使用 mlflow 的社区主导的示例存储库。