实验对照组支持将Designer的实验数据或自定义任务的执行信息记录到PAI提供的任务管理服务中,从而便于进行任务间的实验比较。本文介绍如何通过实验对照组功能管理Designer任务和自定义任务。
前提条件
已创建OSS Bucket,详情请参见控制台创建存储空间。
背景信息
PAI实验对照组功能是基于开源项目MLflow构建的,所有的参数和标准均与开源MLflow一致。MLflow是一个E2E的机器学习开源项目,提供了任务指标记录、实验管理等功能,详情请参见MLflow Documentation。基于MLflow,PAI提供了一个全托管的任务管理服务(Tracking Server),您不仅可以将Designer的运行作业参数、评估指标等记录到PAI提供的任务管理服务,而且可以将其他环境(包括DSW、DLC或本地环境)的任务执行信息和相关指标通过原生MLflow Python SDK记录到任务管理服务中。
PAI实验对照组模块包括两部分核心功能:
Designer任务的管理
您需要在Designer中运行任务,并配置实验对照组、任务的评估指标及参数,系统会自动将执行过的任务加入至该实验对照组,从而方便地进行任务间的实验比较等操作,详情请参见管理Designer任务。
自定义任务的管理
自定义任务是指您基于本地或云上开发环境自行开发代码,通过集成PAI任务管理SDK,将任务相关参数、评估指标等在实验对照组中进行记录,详情请参见管理自定义任务。
管理Designer任务
进入实验对照组页面。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
在左侧导航栏,选择 。
创建实验对照组。
说明实验对照组是任务管理的最小单元,通常进行一个类型的实验管理。例如推荐场景的实验可以统一放到一个实验对照组中。
在任务列表页面,单击实验对照组后面的加号图标。
在创建实验对照组对话框,配置参数。
参数
描述
实验对照组名称
长度为2~128个字符,且以字母或中文开头。
Artifact地址
OSS地址,用于存储实验相关的数据。
单击创建。
进入Designer实验页面。
在PAI控制台的左侧导航栏,选择 。
在可视化建模(Designer)页面,单击工作流列表页签。
在工作流列表页签,单击待查看的工作流名称,在右侧的基本信息区域,单击进入工作流。
对Designer实验进行任务配置,使其与实验对照组关联。
在Designer实验页面,单击上方的任务配置。
在任务配置对话框,配置参数。
参数
描述
实验对照组-实验对照选择组
选择已创建的实验对照组。如果没有可用的实验对照组,则单击前往AI资产-实验对照组创建进行创建。
实验对照组-实验参数记录
实验对照组支持将实验全局变量作为参数记录到实验管理。您可以设置实验相关参数,例如迭代轮次和收敛率。
实验对照组-实验评估指标记录
仅支持选取评估类组件。例如二分类评估、回归模型评估、聚类模型评估、多分类评估或混淆矩阵。
单击确认。
查看已配置的任务。
在PAI控制台的左侧导航栏,选择 。
在任务列表页面左侧的实验对照组区域,单击目标实验对照组,即可查看已生成的任务。
用户可以进行多次运行后的评测效果对比
管理自定义任务
PAI提供了一个Plugin,使您能够直接使用MLflow Python SDK将自定义任务的信息记录到PAI的实验对照组中。
安装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安装包地址,您无需修改。
通过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代码记录任务信息时,您可以在本地环境、DSW或DLC中执行任务,然后在PAI的实验对照组中将对应的任务信息与其他任务(包括Designer投递的任务)信息进行对比。
- 本页导读 (1)