Abstract serial runner
smac.runner.abstract_serial_runner
#
AbstractSerialRunner
#
Bases: AbstractRunner
Source code in smac/runner/abstract_runner.py
run
abstractmethod
#
run(
config: Configuration,
instance: str | None = None,
budget: float | None = None,
seed: int | None = None,
) -> tuple[
StatusType, float | list[float], float, float, dict
]
Runs the target function with a configuration on a single instance-budget-seed combination (aka trial).
Parameters#
config : Configuration Configuration to be passed to the target function. instance : str | None, defaults to None The Problem instance. budget : float | None, defaults to None A positive, real-valued number representing an arbitrary limit to the target function handled by the target function internally. seed : int, defaults to None
Returns#
status : StatusType Status of the trial. cost : float | list[float] Resulting cost(s) of the trial. runtime : float The time the target function took to run. cpu_time : float The time the target function took on hardware to run. additional_info : dict All further additional trial information.
Source code in smac/runner/abstract_runner.py
run_wrapper
#
run_wrapper(
trial_info: TrialInfo,
**dask_data_to_scatter: dict[str, Any]
) -> tuple[TrialInfo, TrialValue]
Wrapper around run() to execute and check the execution of a given config. This function encapsulates common handling/processing, so that run() implementation is simplified.
Parameters#
trial_info : RunInfo Object that contains enough information to execute a configuration run in isolation. dask_data_to_scatter: dict[str, Any] When a user scatters data from their local process to the distributed network, this data is distributed in a round-robin fashion grouping by number of cores. Roughly speaking, we can keep this data in memory and then we do not have to (de-)serialize the data every time we would like to execute a target function with a big dataset. For example, when your target function has a big dataset shared across all the target function, this argument is very useful.
Returns#
info : TrialInfo An object containing the configuration launched. value : TrialValue Contains information about the status/performance of config.
Source code in smac/runner/abstract_runner.py
submit_trial
#
submit_trial(trial_info: TrialInfo) -> None
This function submits a trial_info object in a serial fashion. As there is a single
worker for this task, this interface can be considered a wrapper over the run
method.
Both result/exceptions can be completely determined in this step so both lists are properly filled.
Parameters#
trial_info : TrialInfo An object containing the configuration launched.
Source code in smac/runner/abstract_serial_runner.py
wait
#
The SMBO/intensifier might need to wait for trials to finish before making a decision. For serial runners, no wait is needed as the result is immediately available.