Source code for ray.tune.search

from ray._private.utils import get_function_args
from ray.tune.search.basic_variant import BasicVariantGenerator
from ray.tune.search.concurrency_limiter import ConcurrencyLimiter
from ray.tune.search.repeater import Repeater
from ray.tune.search.search_algorithm import SearchAlgorithm
from ray.tune.search.search_generator import SearchGenerator
from ray.tune.search.searcher import Searcher
from ray.tune.search.variant_generator import grid_search
from ray.util import PublicAPI


def _import_variant_generator():
    return BasicVariantGenerator


def _import_ax_search():
    from ray.tune.search.ax.ax_search import AxSearch

    return AxSearch


def _import_hyperopt_search():
    from ray.tune.search.hyperopt.hyperopt_search import HyperOptSearch

    return HyperOptSearch


def _import_bayesopt_search():
    from ray.tune.search.bayesopt.bayesopt_search import BayesOptSearch

    return BayesOptSearch


def _import_bohb_search():
    from ray.tune.search.bohb.bohb_search import TuneBOHB

    return TuneBOHB


def _import_nevergrad_search():
    from ray.tune.search.nevergrad.nevergrad_search import NevergradSearch

    return NevergradSearch


def _import_optuna_search():
    from ray.tune.search.optuna.optuna_search import OptunaSearch

    return OptunaSearch


def _import_zoopt_search():
    from ray.tune.search.zoopt.zoopt_search import ZOOptSearch

    return ZOOptSearch


def _import_hebo_search():
    from ray.tune.search.hebo.hebo_search import HEBOSearch

    return HEBOSearch


SEARCH_ALG_IMPORT = {
    "variant_generator": _import_variant_generator,
    "random": _import_variant_generator,
    "ax": _import_ax_search,
    "hyperopt": _import_hyperopt_search,
    "bayesopt": _import_bayesopt_search,
    "bohb": _import_bohb_search,
    "nevergrad": _import_nevergrad_search,
    "optuna": _import_optuna_search,
    "zoopt": _import_zoopt_search,
    "hebo": _import_hebo_search,
}


[docs] @PublicAPI(stability="beta") def create_searcher( search_alg, **kwargs, ): """Instantiate a search algorithm based on the given string. This is useful for swapping between different search algorithms. Args: search_alg: The search algorithm to use. metric: The training result objective value attribute. Stopping procedures will use this attribute. mode: One of {min, max}. Determines whether objective is minimizing or maximizing the metric attribute. **kwargs: Additional parameters. These keyword arguments will be passed to the initialization function of the chosen class. Returns: ray.tune.search.Searcher: The search algorithm. Example: >>> from ray import tune # doctest: +SKIP >>> search_alg = tune.create_searcher('ax') # doctest: +SKIP """ search_alg = search_alg.lower() if search_alg not in SEARCH_ALG_IMPORT: raise ValueError( f"The `search_alg` argument must be one of " f"{list(SEARCH_ALG_IMPORT)}. " f"Got: {search_alg}" ) SearcherClass = SEARCH_ALG_IMPORT[search_alg]() search_alg_args = get_function_args(SearcherClass) trimmed_kwargs = {k: v for k, v in kwargs.items() if k in search_alg_args} return SearcherClass(**trimmed_kwargs)
UNRESOLVED_SEARCH_SPACE = str( "You passed a `{par}` parameter to {cls} that contained unresolved search " "space definitions. {cls} should however be instantiated with fully " "configured search spaces only. To use Ray Tune's automatic search space " "conversion, pass the space definition as part of the `param_space` argument " "to `tune.Tuner()` instead." ) UNDEFINED_SEARCH_SPACE = str( "Trying to sample a configuration from {cls}, but no search " "space has been defined. Either pass the `{space}` argument when " "instantiating the search algorithm, or pass a `param_space` to " "`tune.Tuner()`." ) UNDEFINED_METRIC_MODE = str( "Trying to sample a configuration from {cls}, but the `metric` " "({metric}) or `mode` ({mode}) parameters have not been set. " "Either pass these arguments when instantiating the search algorithm, " "or pass them to `tune.TuneConfig()`." ) __all__ = [ "SearchAlgorithm", "Searcher", "ConcurrencyLimiter", "Repeater", "BasicVariantGenerator", "grid_search", "SearchGenerator", "UNRESOLVED_SEARCH_SPACE", "UNDEFINED_SEARCH_SPACE", "UNDEFINED_METRIC_MODE", ]