24 lines
1020 B
Python
24 lines
1020 B
Python
def run_scheduler(scheduler, cfg, client_cfgs=None):
|
|
"""
|
|
This function is to optimize FedHPO problem by scheduler. The method is
|
|
decided by `cfg.hpo.scheduler`.
|
|
Args:
|
|
scheduler: Scheduler for conducting serval FS runs, \
|
|
see ``federatedscope.autotune.algos.Scheduler``
|
|
cfg: The configurations of the FL course.
|
|
client_cfgs: The clients' configurations.
|
|
"""
|
|
if cfg.hpo.scheduler in ['sha', 'wrap_sha']:
|
|
_ = scheduler.optimize()
|
|
elif cfg.hpo.scheduler in [
|
|
'rs', 'bo_kde', 'hb', 'bohb', 'wrap_rs', 'wrap_bo_kde', 'wrap_hb',
|
|
'wrap_bohb'
|
|
]:
|
|
from federatedscope.autotune.hpbandster import run_hpbandster
|
|
run_hpbandster(cfg, scheduler, client_cfgs)
|
|
elif cfg.hpo.scheduler in ['bo_gp', 'bo_rf', 'wrap_bo_gp', 'wrap_bo_rf']:
|
|
from federatedscope.autotune.smac import run_smac
|
|
run_smac(cfg, scheduler, client_cfgs)
|
|
else:
|
|
raise ValueError(f'No scheduler named {cfg.hpo.scheduler}')
|