Vega配置参考

Vega将从数据到模型的整个AutoML过程,分解为多个步骤,这些步骤包括网络架构搜索、超参优化、模型训练等,Vega可以通过配置文件组合这些步骤成为一个完整的流水线,依次执行这些步骤,完成从数据到模型的全流程。下面详细介绍配置文件中常用的配置项,其他配置项说明具体请参考配置参考

表1 整体结构

结构

说明

general

公共配置项。

pipeline

各个步骤,用列表表示。例如[my_nas, my_hpo, my_fully_train],后续配置项名称即pipeline中定义的各个步骤名称。

my_nas

网络架构搜索,Network Architecture Search。

my_hpo

超参数优化,HyperParameter Optimization。

my_fully_train

训练。

表2 general公共配置项

配置项

说明

backend

指定AI框架类型。取值如下:

  • pytorch(默认)
  • tensorflow
  • mindspore

task: local_base_path

工作路径。task下面有local_base_path工作路径。例task: local_base_path: xxx。每次系统运行,会在该路径下生成一个带有时间信息(我们称之为task id)的子文件夹,这样多次运行的输出不会被覆盖。在task id子文件夹下面一般包含output和worker两个子文件夹,output文件夹存储pipeline的每个步骤的输出数据,worker文件夹保存临时信息。

默认取值为./tasks/。

timeout

worker超时时间,单位为小时,若在该时间范围内未完成,worker会被强制结束。默认为10小时。

parallel_search

是否并行搜索多个模型。目前卷积网络模型的剪枝调优和超参数优化功能支持并行搜索多个模型,模型量化和蒸馏不支持并行搜索多个模型。取值如下:

  • True
  • False(默认)

parallel_fully_train

是否并行训练多个模型。取值如下:

  • True
  • False(默认)

devices_per_trainer

并行搜索和训练时,每个trainer分配的设备(GPU/NPU)数目。当parallel_search或parallel_fully_train为True时生效。默认为1,每个trainer分配1个GPU/NPU。

logger: level

日志级别。可填debug/info/warn/error/critical。

quota

过滤模型。

可设置采样模型的浮点计算量最大值或范围(单位为M),模型的参数量最大值或范围(单位为K),采样模型的时延最大值或范围(单位为ms),Pipeline最大运行时间(单位为h)。支持“<”、“>”、“in”、“and” 四种操作,如 "flops < 10 and params in [100, 1000]"

requires

要求指定版本的库。如["timm==0.1.18", "horovod==0.19.3"]。

表3 NAS、HPO配置项

配置项

说明

pipe_step

Pipeline步骤。在该配置项下需设置以下参数:

  • type:NAS和HPO步骤的type取值为SearchPipeStep(搜索步骤)。
  • codec:编解码器。

search_algorithm

搜索算法。在该配置项下需设置以下参数:

  • type:搜索算法名称。包括RandomSearch、AshaHpo、BohbHpo、BossHpo、PBTHpo。
  • objective_keys:优化目标。单目标优化问题指定优化目标即可,多优化目标优化问题需以数组形式指定,例如['accuracy','flops','latency']。
  • policy:搜索策略,搜索算法自身参数。搜索范围策略示例如下:
    total_epochs: 50
  • range:搜索范围。搜索范围示例如下:
    min_sample: 10
    max_sample: 300

Search_space

搜索空间。其下有参数:

  • type:取值为SearchSpace。
  • hyperparameaters:
    • key:关键字。HPO的key取值有dataset.batch_size,trainer.optimizer.params.lr等;NAS的key取值有network.backbone.depth、network.backbone.base_channel等。

      可搜索的关键字请参见配置参考的“NAS/HPO 搜索空间超参”节点。

    • type:关键字类型。
    • range:关键字搜索范围。
  • condition约束类型,一般用来约束两个超参数,当parent在一定范围内/等于某一值/不等于某一值时,child节点才会生效。
  • forbidden用于表示2个超参值的互斥关系,配置中的两个超参值不能同时出现。

model

表4中model配置。

dataset

表4中dataset配置。

trainer

表4中trainer配置。

evaluator

表4中evaluator配置。

表4 Fully Train配置项

配置项

说明

pipe_step

Pipeline步骤。在该配置项下需设置以下参数:

  • type:Fully Train步骤的type取值为TrainPipeStep(训练步骤)。
  • models_folder:指定模型描述文件所在的位置,依次读取该文件夹下文件名为desc_<ID>.json(其中ID为数字)的模型描述文件,依次训练这些模型。这个选项优先于model选项。

model

模型。若NAS和HPO步骤填入了model,则Fully Train(训练部分)可不填。若该参数不填,则默认为经过NAS和HPO步骤得到的模型。该配置项下可设置以下参数:

  • model_desc_file:模型描述文件位置。该选项优先级低于pipe_step: models_folder,高于model: model_desc。
  • model_desc:配置模型超参。其下有modules模块pipeline。

dataset

数据及配置。可在该配置项下需设置以下参数:

  • type:用于标识Vega提供的数据集,例如Cifar10、Cifar100、ImageNet、Cityscapes等。
  • common为train、val、test共同的配置,常用子配置项有:
    • data_path:需配置为下载解压Vega提供的数据集后保存的位置。
    • batch_size:一次所抓取的数据样本数量。
    • num_wokers:使用多少个子进程进行数据加载。
    • train_portion:数据集中训练集的划分比例。
  • train、val、test除了可对common中的子配置项进行配置,其下一般配置shuffle,表示是否打乱数据集;transforms,表示对数据进行预处理后加载。
说明:

若不需要Vega提供的数据集,无需设置以上配置项,直接通过“data_dir”参数指定本地数据集即可。

trainer

模型训练参数配置。

  • type:类型,取值为Trainer。
  • epochs:训练轮数,默认为1。
  • distributed:是否启用horovod。启用Horovod需要将数据集的shuffle参数设置为False。默认为False。
  • syncbn:是否启用SyncBN,默认为False。
  • amp:是否启用AMP,默认False。
  • optimizer:优化器,其下有:
    • type:优化器名称,默认为“Adam”。
    • params:优化器参数,默认为{"lr":0.1}。
  • lr_scheduler:自定义lr,其下有:
    • type:lr类型,默认值为“MultiStepLR”。
    • params:lr参数,默认值为{"milestones": [75, 150], "gamma": 0.5}
  • loss:损失函数。里面有参数type,缺省值为"CrossEntropyLoss";params参数。
  • metirc性能指标。里面参数有type,缺省值为"accuracy";params参数,缺省值为 {"topk": [1, 5]}。
  • report_freq,打印epoch信息的频率,默认值为10。

evaluator

评估器参数配置。

  • type:取值为Evaluator。
  • host_evaluator:在训练服务器评估模型的准确率等指标。其下有type:HostEvaluator,metric指标。
  • device_evaluator:在推理服务器评估模型的时延等指标。其下有type:DeviceEvaluator,metric指标、硬件名称hardware和远端推理服务器remote_host等。