任务管理支持将PAI-Studio的实验数据或自定义任务的执行信息记录到PAI提供的任务管理服务中,从而便于进行任务间的实验比较。本文介绍如何通过任务管理功能管理PAI-Studio任务和自定义任务。

前提条件

已创建OSS Bucket,详情请参见创建存储空间

背景信息

PAI任务管理功能是基于开源项目MLflow构建的,所有的参数和标准均与开源MLflow一致。MLflow是一个E2E的机器学习开源项目,提供了任务指标记录、实验管理等功能,详情请参见MLflow Documentation。基于MLflow,PAI提供了一个全托管的任务管理服务(Tracking Server),您不仅可以将PAI-Studio的运行作业参数、评估指标等记录到PAI提供的实验管理服务,而且可以将其他环境(包括PAI-DSW、PAI-DLC或本地环境)的任务执行信息和相关指标通过原生MLflow Python SDK记录到任务管理中。

PAI任务管理模块包括两部分核心功能:
  • PAI-Studio任务的管理

    您需要在PAI-Studio中运行任务,并配置实验对照组、任务的评估指标及参数,系统会自动将执行过的任务加入至该实验对照组,从而方便地进行任务间的实验比较等操作,详情请参见管理PAI-Studio任务

  • 自定义任务的管理

    自定义任务是指您基于本地或云上开发环境自行开发代码,通过集成PAI任务管理SDK,将任务相关参数、评估指标等在任务管理中进行记录,详情请参见管理自定义任务

管理PAI-Studio任务

  1. 进入任务管理页面。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择AI资产管理 > 任务管理
  2. 创建实验对照组。
    说明 实验对照组是任务管理的最小单元,通常进行一个类型的实验管理。例如推荐场景的实验可以统一放到一个实验对照组中。
    1. 任务列表页面,单击实验对照组后面的加号图标。
    2. 创建实验对照组对话框,配置参数。
      参数 描述
      实验对照组名称 长度为2~128个字符,且以字母或中文开头。
      Artifact地址 OSS地址,用于存储实验相关的数据。
    3. 单击创建
  3. 进入PAI-Studio实验页面。
    1. 在PAI控制台的左侧导航栏,选择模型开发和训练 > 可视化建模(Studio2.0)
    2. 可视化建模(Studio)页面,选择AI工作空间
    3. 实验列表页签,单击目标实验,在右侧的基本信息区域,单击进入实验
  4. 对PAI-Studio实验进行任务配置,使其与实验对照组关联。
    1. 在PAI-Studio实验页面,单击上方的任务配置
    2. 任务配置对话框,配置参数。
      参数 描述
      任务管理-实验对照选择组 选择已创建的实验对照组。如果没有可用的实验对照组,则单击前往任务管理创建对照组进行创建。
      任务管理-实验参数记录 任务管理支持将实验全局变量作为参数记录到任务管理。您可以设置实验相关参数,例如迭代轮次和收敛率。
      任务管理-实验评估指标记录 仅支持选取评估类组件。例如二分类评估、回归模型评估、聚类模型评估、多分类评估或混淆矩阵。
    3. 单击确认
  5. 查看已配置的任务。
    1. 在PAI控制台的左侧导航栏,选择AI资产管理 > 任务管理
    2. 任务列表页面左侧的实验对照组区域,单击目标实验对照组,即可查看已生成的任务。已生成的任务

管理自定义任务

PAI提供了一个Plugin,使您能够直接使用MLflow Python SDK将自定义任务的信息记录到PAI的任务管理中。

  1. 安装PAI提供的插件pai-mlflow
    基于MLflow的Plugin机制,PAI提供了pai-mlflow的Python包,用于将任务投递到PAI托管的Tracking Server。安装pai-mlflow的命令如下。
    python -m pip install https://pai-sdk.oss-cn-shanghai.aliyuncs.com/pai-mlflow/dist/pai_mlflow-1.1.0-py3-none-any.whl
    其中https://pai-sdk.oss-cn-shanghai.aliyuncs.com/pai-mlflow/dist/pai_mlflow-1.1.0-py3-none-any.whl表示pai-mlflow安装包地址,您无需修改。
  2. 通过MLflow Python SDK记录任务信息。
    以下代码通过MLflow Python SDK创建了一个实验对照组,并将当前代码执行任务信息记录到对应的实验对照,MLflow具体的API信息,请参见Python API
    import os
    import time
    import mlflow
    
    def setup_experiment():
        
        # 设置访问PAI的Tracking Server的鉴权凭证。
        os.environ["PAI_ACCESS_KEY_ID"] = "YourAcessKeyID"
        os.environ["PAI_ACCESS_KEY_SECRET"] = "YourAccessKeySecret"
        # 设置 MLflow默认的Tracking URI为PAI提供的TrackingServer。
        os.environ["MLFLOW_TRACKING_URI"] = "pai://mlflow.{{region_id}}.aliyuncs.com"
            
        # 创建一个名为demo-experiment1的实验对照组。
        exp = mlflow.get_experiment_by_name(
            "demo-experiment1",
        )
        if not exp:
            mlflow.create_experiment(
                "demo-experiment1",
                "oss://lq-test-bucket.oss-cn-hangzhou.aliyuncs.com/mlflow_log_artifacts/",
            )
        
        # 设置当前使用的MLflow实验。
        mlflow.set_experiment("demo-experiment1")
    
        
    def run():
        setup_experiment()
        
        with mlflow.start_run():
            # 例如任务的参数信息。
            mlflow.log_param("hello", "alice")
            
             for i in range(100):
                time.sleep(1)
                # 记录任务的metrics信息。
                mlflow.log_metric("foo", i)
    
    if __name__ == "__main__":
        run()
    通过Python代码记录任务信息时,您可以在本地环境、PAI-DSW或PAI-DLC中执行任务,然后在PAI的任务管理中将对应的任务信息与其他任务(包括PAI-Studio投递的任务)信息进行对比。