1.5.6.4 自动超参数调优Hpjob
超参调优任务(HpJob) 基本组件和训练流程
下图是使用 Cloud-ML HpJob 的基本组件和训练流程。其中1,2,3为用户操作步骤,a,b,c 为平台处理流程。
Cloud-ML HpJob 的运行基本和Trainjob相同,hpjob依赖的基础设施和trainjob相同:Docker Registry 和 FDS。
HpJob
训练用户的基本操作过程如下:
1. 准备代码,用户需要在本地准备一份调试好的训练代码,要确保符合基本项目规范。具体参见后面介绍;
2. 提交任务,项目代码准备完成后,用户即可提交任务。目前Hpjob只支持命令行提交,并且必须利用json文件进行提交,后面有详细介绍;
3. 查看结果,与trainjob不同,用户只可以通过Web UI的形式查看训练结果,也就是每组超参值组合及其训练得到的目标值,当然用户也可以选择将每组训练的模型和其他结果进行保存,这和trainjob相同。
Hpjob
训练平台的基本处理流程如下:
a. 创建环境,平台收到用户提交的任务后,从 Docker Registry 中下载用户指定的镜像,并为用户创建运行时;如果一切正常,执行后面的操作;有任何异常,比如资源不足,节点故障,Cloud-ML会通过事件的方式告诉用户;
b. 生成超参对, 平台根据用户给出的超参范围和参数生成算法,生成超参对
c. 执行训练,运行环境创建和参数对生成完成后,平台下载用户指定的训练代码并执行。内部的逻辑是,下载代码、解压、安装依赖包(如果代码里面指定了所需的依赖包)、传递超参值、执行代码,执行过程收集训练日志并保存;
d.保存目标属性值(must) 保存训练模型和(/或)中间结果(optional),Cloud-Ml根据训练程序的日志解析出目标属性值并保存在Cloud-Ml内部数据库中,同时用户训练过程中如果有需要保存的中间结果、临时数据、日志等需要保存,平台将结果保存到用户指定的地方,供训练后使用。具体的目标属性值输出格式在后面介绍。
e. 循环执行, 用户在提交任务时会给出一个目标属性和对应的期望值,Cloud-Ml比较保存的实际目标属性值和用户指定的目标属性期望值:如果已经达到用户设定的期望值,则返回,用户可以通过Cloud-Ml提供的Web UI查看训练结果,其中包括超参对和对应的目标属性值;如果否,则Cloud-Ml再次执行步骤 c 和 d,直到结果达到期望值。在循环执行过程中,Cloud-Ml会保存每一组数据供用户后续查看。具体的目标属性值设定后面介绍。
注: Cloud-ML 的运行时由 Docker 管理,所有任务都运行于容器中,Cloud-ML 已经准备了许多深度学习框架的镜像,用户直接指定对应版本镜像名称即可;对于有特殊需求的用户,Cloud-ML 支持使用自己制作的镜像。
在上手超参调优HpJob部分,我们将通过教程的形式,一步一步让用户上手Cloud-ML平台。