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

Ray Tune: How do schedulers and search algorithms interact?

在我看来,将超频带与贝叶斯优化搜索相结合的自然方法是让搜索算法确定每个括号,并让超频带调度程序 运行 确定括号。也就是说,贝叶斯优化搜索运行s每个括号只进行一次。为此查看 Tune's source 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 会 return 组一次最多 4 个试验,但是 hyperband应该一次查询 sk_search 算法进行 N_sizeofbracket 次试验。

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

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