在 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 和 Azure 机器学习集成

先决条件

  • 安装 MLflow SDK 包 mlflow 和适用于 MLflow azureml-mlflow 的 Azure 机器学习插件。

    pip install mlflow azureml-mlflow
    

    提示

    可以使用 mlflow-skinny 包,它是一个不带 SQL 存储、服务器、UI 或数据科学依赖项的轻型 MLflow 包。 对于主要需要用到 MLflow 的跟踪和记录功能但不需要导入整个功能套件(包括部署)的用户,建议使用 mlflow-skinny

  • 一个 Azure 机器学习工作区。 可以按照创建机器学习资源教程创建一个。

  • 如果要执行远程跟踪(即跟踪在 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 机器学习跟踪这些项目。

  1. 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
    
  2. 提交本地运行并确保设置参数 backend = "azureml",该参数在工作区中添加自动跟踪、模型捕获、日志文件、快照和输出错误的支持。 此示例假设你尝试运行的 MLflow 项目位于你当前所在的文件夹 (uri=".") 中。

    mlflow run . --experiment-name  --backend azureml --env-manager=local -P alpha=0.3
    

    Azure 机器学习工作室中查看运行和指标。

在 Azure 机器学习作业中训练 MLflow 项目

此示例演示如何将 MLflow 项目作为在 Azure 机器学习计算上运行的作业提交。

  1. 创建后端配置对象,在本例中,我们将指定 COMPUTE。 此参数引用你要用于运行项目的远程计算群集的名称。 如果 COMPUTE 存在,则项目将自动作为 Azure 机器学习作业提交到指定的计算。

    backend_config.json

    {
        "COMPUTE": "cpu-cluster"
    }
    
    
  2. 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
    
  3. 提交本地运行并确保设置参数 backend = "azureml",该参数在工作区中添加自动跟踪、模型捕获、日志文件、快照和输出错误的支持。 此示例假设你尝试运行的 MLflow 项目位于你当前所在的文件夹 (uri=".") 中。

    mlflow run . --backend azureml --backend-config backend_config.json -P alpha=0.3
    

    注意

    由于 Azure 机器学习作业始终在环境的上下文中运行,因此将忽略参数 env_manager

    Azure 机器学习工作室中查看运行和指标。

清理资源

如果不打算使用工作区中记录的指标和项目,目前尚未提供单独删除它们的功能。 可以改为删除包含存储帐户和工作区的资源组,这样就不会产生任何费用:

  1. 在 Azure 门户中,选择最左侧的“资源组”。

    Image showing how to delete an Azure resource group.

  2. 从列表中选择已创建的资源组。

  3. 选择“删除资源组”

  4. 输入资源组名称。 然后选择“删除”。

示例笔记本

将 MLflow 与 Azure 机器学习笔记本配合使用演示了本文中所述的概念,并在这些概念的基础上有所延伸。

注意

可在 https://github.com/Azure/azureml-examples 找到使用 mlflow 的社区主导的示例存储库。

后续步骤