新建实验

AutoMLPAI提供的机器学习增强型服务,集成了多种算法和分布式计算资源,无需编写代码,通过创建实验即可实现模型超参数调优,提高机器学习效率和性能。本文为您介绍如何新建实验。

背景信息

AutoML的工作机制:

实验会根据算法配置自动生成超参数组合。针对每组超参数组合,该实验会创建一个Trial。同时,每个Trial可能会对应一个DLC任务,也可能对应1个或多个MaxCompute任务。任务的类型取决于实验的执行配置。后续将通过配置的任务来执行Trial。实验通过调度运行多个Trial,并比较这些Trial的结果,以找到较优的超参数组合。更详细的原理介绍,请参见AutoML工作原理

前提条件

操作步骤

  1. 进入自动机器学习(AutoML)页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在左侧导航栏,选择模型开发与训练 > 自动机器学习(AutoML)

  2. 在实验列表页面,单击新建实验

  3. 新建实验页面,配置如下参数。

    • 基本信息配置。

      参数

      描述

      名称

      参考界面提示信息配置实验名称。

      描述

      对创建的实验进行简单描述,以区分不同的实验。

      可见范围

      实验的可见性,支持以下取值:

      • 仅自己可见:在工作空间中,仅对您和管理员可见。

      • 工作空间内公开可见:在工作空间中,对所有人可见。

    • 执行配置。image.png

      任务类型:是Trial的执行环境,支持选择DLCMaxCompute

      • DLC:表示通过运行分布式训练(DLC)任务,进行超参数调优。更多关于DLC任务的介绍,请参见创建训练任务

      • MaxCompute:表示在MaxCompute计算资源上,运行SQL命令或Designer算法组件的PAI命令,进行超参数调优。更多关于Designer算法组件以及每个组件支持的PAI命令的详细信息,请参见组件参考:所有组件汇总

      DLC

      任务类型选择DLC时,参数配置如下表所示:

      参数

      描述

      框架

      支持选择以下两种框架类型:

      • Tensorflow

      • PyTorch

      数据集

      此处需配置为已准备好的数据集,数据集配置方式请参见创建及管理数据集

      代码源

      指定任务代码文件的存储位置(代码仓库信息)。此处需配置为已准备好的代码配置,配置方式请参见代码配置

      说明

      由于DLC会将代码下载至指定工作路径,所以您需要有代码仓库的访问权限。

      资源组

      选择公共资源组或已购买的专有资源组。如何准备资源组,请参见新建资源组并购买通用计算资源灵骏智算资源配额

      机器规格

      选择任务运行所需的实例规格。不同规格的实例价格有所不同,关于各个规格的计费详情,请参见DLC计费说明

      节点镜像

      工作节点的镜像。当前支持选择使用不同类型的镜像:

      • 社区镜像:由社区提供的标准镜像,不同的镜像的详情请参见社区镜像版本详情

      • PAI平台镜像:由阿里云PAI产品提供的多种官方镜像,支持不同的资源类型、Python版本及深度学习框架TensorFlowPyTorch,镜像列表请参见公共镜像列表

      • 用户自定义镜像:可选择使用您添加到PAI的自定义的镜像,选择前,您需要先将自定义镜像添加到PAI中,操作详情请参见自定义镜像

      • 镜像地址:支持配置您的自定义镜像、社区镜像及PAI平台镜像地址。您需要在配置框中配置公网环境下可访问的Docker Registry Image URL。

      节点数量

      DLC任务中所使用的计算节点的数量。

      重要

      如果选择配置多个节点,则每个节点都会独立收取费用,而不是共享同一个机器规格。因此,在节点选择过程中,您需要明确每个节点的费用,并综合考虑成本和性能之间的平衡。

      CPU(核数)

      资源组选择已购买的专有资源组时,您可以根据购买的资源规格来配置这些参数。

      内存(GB)

      共享内存(GB)

      GPU(卡数)

      高级配置

      支持通过高级配置提高训练灵活性,或满足一些特定的训练场景。当框架选择Pytorch时,您可以配置高级参数。支持的高级参数列表及取值说明,请参见附录1:高级参数列表

      节点启动命令

      各个节点的启动命令。您需要在命令中配置超参数变量${自定义超参数变量},例如:

      python /mnt/data/examples/search/dlc_mnist/mnist.py --data_dir=/mnt/data/examples/search/data --save_model=/mnt/data/exmaples/search/model/model_${exp_id}_${trial_id} --batch_size=${batch_size} --lr=${lr} --metric_filepath=/mnt/data/examples/search/metric/metric_${exp_id}_${trial_id}

      其中:${batch_size}${lr}为定义的超参数变量。

      超参数

      根据启动命令中配置的超参数变量,自动加载超参数列表。您需要为每个超参数配置约束类型和搜索空间:

      • 约束类型:为超参数添加的限制条件。您可以将鼠标悬停在约束类型后的image.png图标上,以查看支持选择的约束类型及相关说明。

      • 搜索空间:用于指定超参数的取值范围。每种约束类型对应的搜索空间的配置方式不同,您可以单击image.png图标并根据界面提示进行添加。

      MaxCompute

      任务类型选择MaxCompute时,参数配置如下表所示:

      参数

      描述

      命令

      配置为SQL命令或运行Designer算法组件的PAI命令。您需要在命令中配置超参数变量${自定义超参数变量},例如:

      pai -name kmeans
          -project algo_public
          -DinputTableName=pai_kmeans_test_input
          -DselectedColNames=f0,f1
          -DappendColNames=f0,f1
          -DcenterCount=${centerCount}
          -Dloop=10
          -Daccuracy=0.01
          -DdistanceType=${distanceType}
          -DinitCenterMethod=random
          -Dseed=1
          -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id}
          -DidxTableName=pai_kmeans_test_output_idx_${exp_id}_${trial_id}
          -DclusterCountTableName=pai_kmeans_test_output_couter_${exp_id}_${trial_id}
          -DcenterTableName=pai_kmeans_test_output_center_${exp_id}_${trial_id};

      其中:${centerCount}${distanceType}为定义的超参数变量。

      更多配置示例,请参见附录:参考说明

      超参数

      根据命令中配置的超参数变量,自动加载超参数列表。您需要为每个超参数配置约束类型和搜索空间:

      • 约束类型:为超参数添加的限制条件。您可以将鼠标悬停在约束类型后的image.png图标上,以查看支持选择的约束类型及相关说明。

      • 搜索空间:用于指定超参数的取值范围。每种约束类型对应的搜索空间的配置方式不同,您可以单击image.png图标并根据界面提示进行添加。

    • Trial配置。

      使用某组超参来运行任务,参数配置如下:image.png

      参数

      描述

      指标类型

      用来评估Trial的指标类型,取值如下:

      • summary:最终指标需要从来自OSSTensorflow summary文件中提取。

      • table:最终指标需要从MaxCompute表格中提取。

      • stdout:最终指标需要从运行过程中的stdout中提取。

      • json:最终指标以JSON格式的文件存储在OSS中。

      计算方式

      在任务运行过程中,会逐步输出多个中间指标,需要通过计算方式来确定最终指标。取值如下:

      • final:以最后一个指标作为整个Trial的最终指标。

      • best:以在任务运行过程中得到的最优指标作为整个Trial的最终指标。

      • avg:以在任务运行过程中得到的全部中间指标的均值作为Trial的最终指标。

      指标权重

      当需要同时考虑多个指标时,您可以通过配置指标名称和对应权重的方式来实现,系统将使用加权求和值作为最终评估指标来比较优劣。

      • key:为指标名称,支持正则表达式。

      • value:为对应的权重。

      说明

      权重可以为负值,且权重之和可以不为1,支持自定义。

      指标来源

      指标的来源:

      • 指标类型选择summaryjson时,需要配置一个文件路径。例如oss://examplebucket/examples/search/pai/model/model_${exp_id}_${trial_id}

      • 指标类型选择table时,需要配置一个能够获取具体结果的SQL语句。例如select GET_JSON_OBJECT(summary, '$.calinhara') as vrc from pai_ft_cluster_evaluation_out_${exp_id}_${trial_id}

      • 指标类型选择stdout时,需要配置一个命令关键字。仅支持配置为cmdxcmdx;xxx,such as cmd1;worker

      优化方向

      用于评估Trial结果的优化方向,取值如下:

      • 越大越好

      • 越小越好

      模型存储路径

      存储模型的路径。该路径必须包含${exp_id}_${trial_id},用来区分不同超参数组合下生成的模型。例如oss://examplebucket/examples/search/pai/model/model_${exp_id}_${trial_id}

    • 搜索配置。image.png

      参数

      描述

      搜索算法

      是一种自动化机器学习算法,它根据超参数搜索空间以及先前Trial的结果和性能指标,寻找更优的超参数组合,以供下一个Trial运行使用。支持选择的算法类型如下:

      • TPE

      • Random

      • GridSearch

      • Evolution

      • GP

      • PBT

      算法详情说明,请参见支持的搜索算法

      最大搜索次数

      该实验允许运行的最多Trial个数。

      最大并发量

      该实验允许并行运行的最多Trial个数。

  4. 单击提交

    您可以在实验列表中查看已创建的实验。

后续操作

  • 您可以随时查看实验详情,以了解实验的进度。通过查看每个Trial的执行结果,您可以获取较优的超参数组合。具体操作,请参见查看实验详情

  • 您可以对实验进行管理。具体操作,请参见管理实验

附录:参考说明

在使用MaxCompute类型的任务进行超参数调优时,提供了如下配置示例供您参考:

  • 使用的Designer组件:K均值聚类聚类模型评估

  • 命令配置如下,其中cmd1cmd2分别对应两个组件的命令,按照顺序依次排列。具体使用流程,请参见MaxCompute K均值聚类最佳实践

    • cmd1

      pai -name kmeans
          -project algo_public
          -DinputTableName=pai_kmeans_test_input
          -DselectedColNames=f0,f1
          -DappendColNames=f0,f1
          -DcenterCount=${centerCount}
          -Dloop=10
          -Daccuracy=0.01
          -DdistanceType=${distanceType}
          -DinitCenterMethod=random
          -Dseed=1
          -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id}
          -DidxTableName=pai_kmeans_test_output_idx_${exp_id}_${trial_id}
          -DclusterCountTableName=pai_kmeans_test_output_couter_${exp_id}_${trial_id}
          -DcenterTableName=pai_kmeans_test_output_center_${exp_id}_${trial_id};
    • cmd2

      PAI -name cluster_evaluation
          -project algo_public
          -DinputTableName=pai_cluster_evaluation_test_input
          -DselectedColNames=f0,f1
          -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id}
          -DoutputTableName=pai_ft_cluster_evaluation_out_${exp_id}_${trial_id};