Рэй Тьюн: Как взаимодействуют планировщики и алгоритмы поиска? - PullRequest
0 голосов
/ 10 мая 2019

Мне кажется, что естественный способ интеграции гиперполосы с байесовским поиском оптимизации состоит в том, чтобы алгоритм поиска определял каждую скобку, а гиперполосный планировщик запускал скобку. То есть, поиск байесовской оптимизации выполняется только один раз для каждой скобки. Если посмотреть на исходный код Tune , мне не ясно, применяет ли библиотека 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)

Исходя из связанного выше исходного кода и исходного кода здесь , мне кажется, что sk_search будет возвращать группы до 4 испытаний одновременно, но гиперполоса должна запрашивать sk_search алгоритм N_sizeofbracket испытаний одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...