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