import typing as t
from functools import partial
from ..orchestrator.objective_f import BaseObjectiveFConfigurator
[docs]
def gen_partial_optimizer(
obj_configurator:BaseObjectiveFConfigurator,
optim_name:str,
optim_cls_dict:t.Dict,
key:str,
kwargs=None,
):
if kwargs is None:
kwargs = {}
try:
optim_cls = optim_cls_dict[optim_name]
except:
raise ValueError(f"Invalid optimizer name: {optim_name}")
obj_configurator.suggest_dict_params(key, target_dict=kwargs)
optim_cls = partial(
optim_cls,
**kwargs
)
return optim_cls
[docs]
def gen_partial_scheduler(
obj_configurator:BaseObjectiveFConfigurator,
sched_name:str,
sched_cls_dict:t.Dict,
key:str,
kwargs=None,
):
if kwargs is None:
kwargs = {}
if sched_name is None or sched_name in ["", "none"]:
return None
else:
try:
sched_cls = sched_cls_dict[sched_name]
except:
raise ValueError(f"Invalid scheduler name: {sched_name}")
obj_configurator.suggest_dict_params(key, target_dict=kwargs)
sched_cls = partial(
sched_cls,
**kwargs
)
return sched_cls