Ray Tune:调度程序和搜索算法如何交互?

时间:2019-05-10 19:05:34

标签: deep-learning hyperparameters ray

在我看来,将超频带与贝叶斯优化搜索集成在一起的自然方法是让搜索算法确定每个托架,并让超频带调度程序运行托架。也就是说,贝叶斯优化搜索每个括号仅运行一次。看着Tunesource code,我不清楚Tune库是否应用此策略。

尤其是,我想知道Tune库如何处理搜索算法和试用计划程序之间的传递。例如,如果我按以下方式一起调用SkOptSearch和AsyncHyperBandScheduler(或HyperBandScheduler),这将如何工作:

sk_search = SkOptSearch(optimizer,
 ['group','dimensions','normalize','sampling_weights','batch_size','lr_adam','loss_weight'],
 max_concurrent=4,
 reward_attr="neg_loss",
 points_to_evaluate=current_params)

hyperband = AsyncHyperBandScheduler(
        time_attr="training_iteration",
        reward_attr="neg_loss",
        max_t=50,
        grace_period=5,
        reduction_factor=2,
        brackets=5
        )

run(Trainable_Dense,
    name='hp_search_0',
    stop={"training_iteration": 9999,
         "neg_loss": -0.2},
    num_samples=75,
    resources_per_trial={'cpu':4,'gpu':1},
    local_dir='./tune_save',
    checkpoint_freq=5,
    search_alg=sk_search,
    scheduler=hyperband,
    verbose=2,
    resume=False,
    reuse_actors=True)

基于上面链接的源代码和源代码here,在我看来sk_search将一次返回最多4个试验的组,但是超频带应在sk_search算法中查询N_sizeofbracket试验时间。

非常感谢您帮助澄清这一点!

1 个答案:

答案 0 :(得分:0)

Tune-https://ray.readthedocs.io/en/latest/tune-searchalg.html#bohb中现在有一个贝叶斯优化HyperBand实现。

对于标准搜索算法和调度程序,搜索算法当前仅在完成试验后才能看到试验结果。