超参搜索

5.1 版本新增: 原有的“训练任务”中的超参数优化部分被拆分成了“超参搜索”。

在机器学习和深度学习的训练过程中,超参数大大影响着模型的表现。而传统的人工调整超参数非常依赖工程师的经验,并会消耗大量时间;超参数搜索算法可以自动的对超参调优,提升模型表现又大大的节约了人力。

本模块提供的超参搜索功能,可以帮助用户对某一个数据集的某一个算法执行超参数搜索调优的功能。用户只需要上传数据以及符合格式的代码,选择搜索算法和搜索设置,即可完成超参搜索任务。

创建超参搜索

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 单击右上角“创建超参搜索”;

  3. 按照页面提示配置参数:

    表 170 创建超参搜索参数

    名称

    必填项

    说明

    超参搜索名称

    他人访问权限

    具体参见 他人访问权限

    优先级

    影响任务排队时的启动顺序

    数据

    参考 数据管理

    可以添加多个,并选择是否只读挂载

    算法

    可以选择是否只读挂载

    保存模型地址

    只需选择一个模型地址。

    实际训练脚本无需感知,平台会根据 超参搜索目录结构 进行映射。

    优化方向

    搜索指标的优化方向

    搜索指标

    模型的优化指标名,训练日志中需要实时打印该指标名和对应的值

    如希望“最大化val-acc,目标90”,则搜索指标为:val-acc,

    并且日志需要包含:val-acc=$value

    优化目标

    搜索指标的优化目标,

    如希望“最大化val-acc,目标90”,则优化目标为90

    搜索算法

    详见下文 搜索算法说明

    提前结束

    详见下文 提前结束说明

    超参数

    详见下文 超参数说明

    最大任务数量

    超参搜索最多运行的子任务个数

    最大并行任务

    超参搜索任务同时最多运行的子任务个数

    最大失败任务

    当失败的子任务达到最大值,超参任务会失败

    分布式模式

    不同的模式“计算节点数量”配置不同

    TensorFlow 模式需要额外指定“参数服务器数”

    不同的模式的运行指令差异较大

    单节点规格

    单个计算节点的配置

    节点名称 | 否

    指定超参搜索可运行的节点,

    不可与“驱动版本”、“专属资源池”同时指定

    驱动版本

    选择 MLU 或 GPU 规格时可用

    专属资源池

    指定超参搜索运行的专属资源池

    镜像

    镜像适用范围需包含“超参搜索”

    镜像适用板卡类型需和单节点规格一致

    节点数

    每个任务总的资源量为 单节点规格 x 计算节点数量

    参数服务器数

    仅TensorFlow 模式需要,0 表示使用 AllReduce 模式

    参数服务器的规格为 1核1G ,无法修改

    运行指令

    参见下文 运行指令说明

    “批量任务”需要在展开菜单中为单个任务分别指定运行命令

    模型

    可以选择多个,仅只读挂载

    存储卷

    可以选择多个,有写入权限

    生命周期脚本

    参考 生命周期脚本

    ../../_images/create_experiment.png

    图 238 创建超参搜索

  4. 排队预测;

    在创建按钮的右边会显示是否需要排队的信息,参考 排队预测

  5. 单击“创建”。

超参搜索目录结构

和任务式训练一致,请参考 任务式训练目录结构

节点规格说明

和任务式训练一致,请参考 节点规格说明

运行指令说明

和任务式训练一致,请参考 运行指令说明

搜索算法说明

支持“Grid Search”、“Random Search”、“Bayesian Optimization”、“Tree of Parzen Estimators(TPE)”、 “Multivariate TPE”和“Covariance Matrix Adaptation Evolution Strategy(CMA-ES)”。

Bayesian Optimization

贝叶斯优化方法使用高斯过程回归对搜索空间进行建模,该方法根据已经搜索的点的函数值估计真实目标函数值的均值和方差(即波动范围),再根据均值和方差可以构造出采集函数,通过采集函数的极值求取获得下一个搜索点。该方法适用于搜索空间维数较低的情况。由于该方法同时对预期损失和不确定性进行建模,因此搜索算法较快即可收敛,所以当参数配置的评估时间较长时,它是一个不错的选择。

表 172 Bayesian Optimization 支持的设置

设置名称

类型或可选值

描述

默认配置

base_estimator

“GP”,

“RF”,

“ET”,

“GBRT”

估计真实目标函数值的方法,对应

估计真实目标函数值的方法,对应

“GaussianProcess”, “RandomForest”,

“ExtraTrees”, “GradientBoosting”

GP

GP

n_initial_points

int

贝叶斯优化的启动需要n_initial_points次。

对于前n_initial_points次的评估,

采用随机搜索的方式

10

acq_func

“LCB”,

“EI”

“PI”,

“gp_hedge”

采集函数的形式, 对应

“lower confidence bound”,

“negative expected improvement”,

“negative probability of improvement”,

“random search from three above functions”

gp_hedge

acq_optimizer

“sampling”,

“lbfgs”,

“auto”

最小化采集函数的方法,分别对应

“random sample”,

“Limited-memory BFGS”,

“on the basis of the base_estimator”

auto

random_state

int

可以通过设置random state保证可复现性

10

Tree of Parzen Estimators(TPE)

TPE 是一种基于树结构的优化算法,对于每个超参,TPE 为与最佳目标值相关的超参维护一个高斯混合模型 l(x), 为剩余的超参维护另一个高斯混合模型 g(x), 选择 l(x)/g(x) 最大化时的超参作为下一组搜索值。这种方式可以更灵活的对不同因素进行建模,并且可以更好地处理缺失数据和噪声。

表 173 TPE 支持的设置

设置名称

类型

描述

默认配置

n_EI_candidates

int

每迭代计算 n_EI_candidates 次,

选择其中最大的提升作为下次的搜索值

25

random_state

int

可以通过设置random_state保证可复现性

10

gamma

float

用于区分最佳超参的高斯混合模型

和其他超参的高斯混合模型的阈值,

为 (0,1) 之间的数

0.25

prior_weight

float

决定了作为先验的搜索空间在历史实验配置中的权重

1.1

Multivariate TPE

Multivariate TPE 是 TPE 的改进版本,这种方法会去寻找搜索空间中的超参数之间的相关性。

表 174 Multivariate TPE 支持的设置

设置名称

类型

描述

默认配置

n_ei_candidates

int

每迭代计算 n_ei_candidates 次,

选择其中最大的提升作为下次的搜索值

25

random_state

int

可以通过设置 random_state 保证可复现性

10

n_startup_trials

int

通过随机搜索产生 n_startup_trails 个初始实验

5

Covariance Matrix Adaptation Evolution Strategy(CMA-ES)

CMA-ES 是一种用于连续搜索空间中优化问题的随机无导数数值优化算法。

表 175 CMA-ES 支持的设置

设置名称

类型或可选值

描述

默认配置

random_state

int

可以通过设置random_state保证可复现性

10

sigma

float

CMA-ES的初始标准差

0.001

restart_strategy

“none”, “ipop”, “bipop”

收敛到局部最优时的重启策略

ipop

提前结束说明

目前只支持选择“自动”,对应的算法为“medianstop”。对于某个任务中的某次实验`x`,如果进行到第`s`步时,其最高的评价指标的值,低于之前`x-1`次实验进行到第`s`步的评价指标平均值的中位数,则停止第`x`次实验。

超参数说明

算法需要支持超参数作为入参,运行指令中需要配置超参数,如超参数为`lr`,运行指令配置:

--lr=${trialParameters.lr}

更详细的说明可见 超参搜索任务代码编写规范

克隆超参搜索

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 选择需要克隆的任务,单击该任务的“操作”按钮;

  3. 在下拉列表中,单击“克隆”;

  4. 按需调整配置;

  5. 单击“创建”。

搜索超参搜索

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 单击左上角搜索框;

  3. 在下拉列表中,可基于“名称”、“状态”、“创建人”、“我的算法卷”、“算法收藏”、“算力规格”和“保存模型地址”搜索 超参搜索。

状态说明

超参搜索的状态有:“排队中”、“运行中”、“错误”、“停止”和“成功”。

查看超参搜索详情

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 单击超参搜索“名称”,进入超参搜索详情页,可查看超参搜索状态、详情、算力规格列表与当前运行使用的规格、运行指令等信息;

  3. 在超参搜索详情页,单击上方“监控 ”功能,可查看超参搜索CPU、内存、MLU、网络流量等资源实时数据;

  4. 在超参搜索详情页,单击上方“日志”功能,可查看超参搜索的日志、事件信息;

  5. 在超参搜索详情页,单击上方“超参任务”功能,可查看子任务的详细信息。

查看超参搜索子任务详情

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 单击任务名称左侧“+”,展开子任务;

  3. 单击子任务的“任务名称”,进入子任务详情页,可查看任务状态、配置、算力规格等信息;

  4. 在子任务详情页,单击上方“监控 ”功能,可查看超参搜索CPU、内存、MLU、网络流量等资源实时数据;

  5. 在子任务详情页,单击上方“日志”功能,可查看超参搜索的日志、事件信息。

停止超参搜索

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 选择需要停止的任务,单击该任务的“操作”按钮;

  3. 在下拉列表中,单击“停止”;

  4. 单击“确认停止”。

删除超参搜索

  1. 左侧功能栏选择“训练管理->超参搜索”;

  2. 单个删除:选择需要删除的任务,单击“操作”按钮,在下拉列表中,单击“删除”;

  3. 批量删除:单击表格右上角“编辑”按钮,勾选多个需要删除的任务,单击表格右上角“删除”按钮;

  4. 单击“确认删除”。

他人访问权限

创建时,可以限制同项目内其他用户的访问权限,包括:“可读写”、“只读”和“不可读写”。 应用访问权限不得高于资源访问权限。 若管理员关闭共享权限,则他人访问权限只能为“不可读写”。

不同权限支持的操作如下:

表 176 他人支持的操作

可读写

只读

不可读写

查看详情

X

克隆

X

停止

X

X

删除

X

X