Source code for orion.benchmark.task.base

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Base definition of Task
========================
"""

from abc import ABC, abstractmethod

from orion.core.utils import GenericFactory


[docs]class BenchmarkTask(ABC): """Base class describing what a task can do. A task will define the objective function and search space of it. Parameters ---------- max_trials : int Max number of trials the experiment will run against this task. kwargs : dict Configurable parameters of the task, a particular task implementation can have its own parameters. """ def __init__(self, max_trials, **kwargs): self.trials_num = max_trials self._param_names = kwargs self._param_names["max_trials"] = max_trials
[docs] @abstractmethod def call(self, *args, **kwargs): """ Define the black box function to optimize, the function will expect hyper-parameters to search and return objective values of trial with the hyper-parameters. """ pass
[docs] def __call__(self, *args, **kwargs): """ All tasks will be callable by default, and method `call()` will be executed when a task is called directly. """ return self.call(*args, **kwargs)
@property def max_trials(self): """Return the max number of trials to run for the""" return self.trials_num
[docs] @abstractmethod def get_search_space(self): """Return the search space for the task objective function""" pass
@property def configuration(self): """Return the configuration of the task.""" return {self.__class__.__qualname__: self._param_names}
bench_task_factory = GenericFactory(BenchmarkTask)