超参数优化支持的搜索算法说明
当前提供的超参数优化能力支持Random、ASHA、BOHB、BOSS、PBT等HPO算法,适用于常见的深度神经网络的超参数优化,包括单目标优化和随机帕累托的多目标超参选择,详细介绍请参考Vega官网。以下为搜索算法配置示例,请参考配置。
- RandomSearch
search_algorithm: type: RandomSearch # 配置为随机搜索算法 RandomSearch objective_keys: 'accuracy' # 优化目标,需要与 trainer.objectives 以及训练脚本中 dump_objective 的实际输出匹配,可以为多个 ['accuracy','avg_time'] policy: # 算法策略配置 num_sample: 10 #可选,超参采样的总组数,默认值为10
- AshaHpo
search_algorithm: type: AshaHpo # 配置为连续减半搜索 AshaHpo objective_keys: 'accuracy' # 优化目标,需要与 trainer.objectives 以及训练脚本中 dump_objective 的实际输出匹配,可以为多个 ['accuracy','avg_time'] policy: # 算法策略配置 total_epochs: 50 # 总搜索迭代数,配置为 -1,则 max_epochs 和 num_samples 的用户配置生效 max_epochs: 81 # 单个超参配置最大迭代数,total_epochs为 -1 时生效 min_epochs: 1 # 单个超参配置最小迭代数 num_samples: 9 # 超参采样数量,total_epochs为 -1 时生效 eta: 3 # 超参迭代数递增指数
各配置项均为可选项,样例中的取值为默认值此处配置规则如下:
- Asha方法侧重于整体的计算资源分配(即epochs),先为各组采样到的超参分配较少的计算资源,从中选出较好的进行升轮,赋予更多的计算资源进行进一步网络训练,核心公式如下。
total_rungs = int(log(max_epochs)) / log(eta) + 1 # 总轮数,由max_epochs和eta决定 epoch = math.pow(eta, rung_id) # 第rung_id轮获得的计算资源,由eta和rung_id决定
- 若total_epochs配置为-1,则max_epochs和num_samples的用户配置生效;否则,这两项的用户配置无效,其具体数值由算法根据total_epochs进行计算。其中,max_epochs为最高一轮worker获得的计算资源,num_samples为采样总数,即第一轮的worker总数。
- Asha方法侧重于整体的计算资源分配(即epochs),先为各组采样到的超参分配较少的计算资源,从中选出较好的进行升轮,赋予更多的计算资源进行进一步网络训练,核心公式如下。
- BohbHpo
search_algorithm: type: BohbHpo # 配置为贝叶斯优化搜索 BohbHpo policy: # 算法策略配置 total_epochs: 81 # 总搜索迭代数,配置为 -1,则 max_epochs 和 num_samples 的用户配置生效 min_epochs: 1 # 单个超参配置最小迭代数 max_epochs: 81 # 单个超参配置最大迭代数,total_epochs为 -1 时生效 repeat_times: 1 # HPO 过程的重复次数 num_samples: 40 # 超参采样数量,total_epochs为 -1 时生效 eta: 3 # 超参迭代数递增指数 objective_keys: 'accuracy' # 优化目标,需要与 trainer.objectives 以及训练脚本中 dump_objective 的实际输出匹配,可以为多个 ['accuracy','avg_time'] random_samples: 32 # 进化算法的最低采样数量,采样数低于该值时,不使用进化算法,默认值 32 prob_crossover: 0.6 # 进化算法中两次采样间随机交叉的概率,默认值 0.6 prob_mutatation: 0.2 # 进化算法中单次采样其中参数突变的概率,默认值 0.2 tuner: "RF" # 超参调整方式,取值包括TPE、GP、RF
- 单目标优化时,根据tuner字段初始化tuner;多目标优化时,根据random_samples、prob_crossover、prob_mutatation初始化GeneticAlgorithm作为tuner。
- 若total_epochs配置为-1,则max_epochs和num_samples的用户配置生效;否则,这两项的用户配置无效,其具体数值由算法根据total_epochs进行计算。
- min_epochs为初始的epoch数量,repeat_times为hpo过程的重复次数。
- BossHpo
search_algorithm: type: BossHpo # 配置为贝叶斯优化搜索 BOSSHpo policy: # 算法策略配置 total_epochs: 81 # 总搜索迭代数,配置为 -1,则 max_epochs 和 num_samples 的用户配置生效 min_epochs: 1 # 单个超参配置最小迭代数 max_epochs: 81 # 单个超参配置最大迭代数,total_epochs为 -1 时生效 repeat_times: 2 # HPO 过程的重复次数 num_samples: 40 # 超参采样数量,total_epochs为 -1 时生效 objective_keys: 'accuracy' # 优化目标,需要与 trainer.objectives 以及训练脚本中 dump_objective 的实际输出匹配,可以为多个 ['accuracy','avg_time'] tuner: "RF" # 超参调整方式,取值包括TPE、GP、RF
BossHpo算法不支持多目标优化,配置方式和参数说明可参见•BohbHpo。
- PBTHpo
search_algorithm: type: PBTHpo # 配置为贝叶斯优化搜索 PBTHpo policy: each_epochs: 3 #每个训练任务的总epoch数量 config_count: 16 #超参采样组数 total_rungs: 200 #超参搜索的总轮数
PBTHpo算法不支持多目标优化。
父主题: 参考信息