FS-TFP/federatedscope/autotune/run.py

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}')