From 0545dbe2ca029f27faca77e1bdc35c6f6838417a Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 4 Oct 2024 10:57:16 +0200 Subject: [PATCH 01/51] Add AutoSampler --- package/samplers/auto_sampler/LICENSE | 21 ++++ package/samplers/auto_sampler/README.md | 110 +++++++++++++++++ package/samplers/auto_sampler/__init__.py | 4 + package/samplers/auto_sampler/sampler.py | 144 ++++++++++++++++++++++ 4 files changed, 279 insertions(+) create mode 100644 package/samplers/auto_sampler/LICENSE create mode 100644 package/samplers/auto_sampler/README.md create mode 100644 package/samplers/auto_sampler/__init__.py create mode 100644 package/samplers/auto_sampler/sampler.py diff --git a/package/samplers/auto_sampler/LICENSE b/package/samplers/auto_sampler/LICENSE new file mode 100644 index 00000000..548d31c6 --- /dev/null +++ b/package/samplers/auto_sampler/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md new file mode 100644 index 00000000..d4e40702 --- /dev/null +++ b/package/samplers/auto_sampler/README.md @@ -0,0 +1,110 @@ +--- +author: Please fill in the author name here. (e.g., John Smith) +title: Please fill in the title of the feature here. (e.g., Gaussian-Process Expected Improvement Sampler) +description: Please fill in the description of the feature here. (e.g., This sampler searches for each trial based on expected improvement using Gaussian process.) +tags: [Please fill in the list of tags here. (e.g., sampler, visualization, pruner)] +optuna_versions: ['Please fill in the list of versions of Optuna in which you have confirmed the feature works, e.g., 3.6.1.'] +license: MIT License +--- + + + +Please read the [tutorial guide](https://optuna.github.io/optunahub-registry/recipes/001_first.html) to register your feature in OptunaHub. +You can find more detailed explanation of the following contents in the tutorial. +Looking at [other packages' implementations](https://github.com/optuna/optunahub-registry/tree/main/package) will also help you. + +## Abstract + +You can provide an abstract for your package here. +This section will help attract potential users to your package. + +**Example** + +This package provides a sampler based on Gaussian process-based Bayesian optimization. The sampler is highly sample-efficient, so it is suitable for computationally expensive optimization problems with a limited evaluation budget, such as hyperparameter optimization of machine learning algorithms. + +## Class or Function Names + +Please fill in the class/function names which you implement here. + +**Example** + +- GPSampler + +## Installation + +If you have additional dependencies, please fill in the installation guide here. +If no additional dependencies is required, **this section can be removed**. + +**Example** + +```shell +$ pip install scipy torch +``` + +If your package has `requirements.txt`, it will be automatically uploaded to the OptunaHub, and the package dependencies will be available to install as follows. + +```shell + pip install -r https://hub.optuna.org/{category}/{your_package_name}/requirements.txt +``` + +## Example + +Please fill in the code snippet to use the implemented feature here. + +**Example** + +```python +import optuna +import optunahub + + +def objective(trial): + x = trial.suggest_float("x", -5, 5) + return x**2 + + +sampler = optunahub.load_module(package="samplers/gp").GPSampler() +study = optuna.create_study(sampler=sampler) +study.optimize(objective, n_trials=100) +``` + +## Others + +Please fill in any other information if you have here by adding child sections (###). +If there is no additional information, **this section can be removed**. + + diff --git a/package/samplers/auto_sampler/__init__.py b/package/samplers/auto_sampler/__init__.py new file mode 100644 index 00000000..50191329 --- /dev/null +++ b/package/samplers/auto_sampler/__init__.py @@ -0,0 +1,4 @@ +from .auto_sampler.sampler import AutoSampler + + +__all__ = ["AutoSampler"] diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py new file mode 100644 index 00000000..924bac3b --- /dev/null +++ b/package/samplers/auto_sampler/sampler.py @@ -0,0 +1,144 @@ +from __future__ import annotations + +from collections.abc import Sequence +from typing import Any +from typing import TYPE_CHECKING + +from optuna.distributions import CategoricalDistribution +from optuna.samplers import BaseSampler +from optuna.samplers import CmaEsSampler +from optuna.samplers import GPSampler +from optuna.samplers import RandomSampler +from optuna.samplers import TPESampler +from optuna.search_space import IntersectionSearchSpace +from optuna.trial import TrialState + + +if TYPE_CHECKING: + from optuna.distributions import BaseDistribution + from optuna.study import Study + from optuna.trial import FrozenTrial + + +class AutoSampler(BaseSampler): + """Sampler automatically choosing an appropriate sampler based on search space. + + This sampler is convenient when you are unsure what sampler to use. + + Example: + + .. testcode:: + + import optuna + from optuna.samplers import AutoSampler + + + def objective(trial): + x = trial.suggest_float("x", -5, 5) + return x**2 + + + study = optuna.create_study(sampler=AutoSampler()) + study.optimize(objective, n_trials=10) + + .. note:: + This sampler might require ``scipy``, ``torch``, and ``cmaes``. + You can install these dependencies with ``pip install scipy torch cmaes``. + + Args: + seed: Seed for random number generator. + + """ + + def __init__(self, seed: int | None = None) -> None: + self._seed = seed + self._sampler: BaseSampler = RandomSampler(seed=seed) + + def reseed_rng(self) -> None: + self._sampler.reseed_rng() + + def _include_conditional_param(self, study: Study) -> bool: + trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE, TrialState.PRUNED)) + if len(trials) == 0: + return False + + param_key = set(trials[0].params) + for t in trials: + if param_key != set(t.params): + return True + + return False + + def _determine_sampler( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> None: + if isinstance(self._sampler, TPESampler): + return + + if any( + isinstance(d, CategoricalDistribution) for d in search_space.values() + ) or self._include_conditional_param(study): + # NOTE(nabenabe): The statement above is always true for Trial#1. + # Use ``TPESampler`` if search space includes conditional or categorical parameters. + # TBD: group=True? + self._sampler = TPESampler( + seed=self._seed, multivariate=True, warn_independent_sampling=False + ) + return + + if trial.number < 250: + # Use ``GPSampler`` if search space is numerical and n_trials <= 250. + if not isinstance(self._sampler, GPSampler): + self._sampler = GPSampler(seed=self._seed) + return + + if not isinstance(self._sampler, CmaEsSampler): + # Use ``CmaEsSampler`` if search space is numerical and n_trials > 250. + # Warm start CMA-ES with trials up to trial.number of 249. + warm_start_trials = study.get_trials( + deepcopy=False, states=(TrialState.COMPLETE, TrialState.PRUNED) + ) + self._sampler = CmaEsSampler(seed=self._seed, source_trials=warm_start_trials) + + def infer_relative_search_space( + self, study: Study, trial: FrozenTrial + ) -> dict[str, BaseDistribution]: + search_space = IntersectionSearchSpace().calculate(study) + sampler_key = "auto:sampler" + if len(search_space) == 0: + study._storage.set_trial_system_attr( + trial._trial_id, sampler_key, self._sampler.__class__.__name__ + ) + return {} + + self._determine_sampler(study, trial, search_space) + study._storage.set_trial_system_attr( + trial._trial_id, sampler_key, self._sampler.__class__.__name__ + ) + return self._sampler.infer_relative_search_space(study, trial) + + def sample_relative( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> dict[str, Any]: + return self._sampler.sample_relative(study, trial, search_space) + + def sample_independent( + self, + study: Study, + trial: FrozenTrial, + param_name: str, + param_distribution: BaseDistribution, + ) -> Any: + return self._sampler.sample_independent(study, trial, param_name, param_distribution) + + def before_trial(self, study: Study, trial: FrozenTrial) -> None: + self._sampler.before_trial(study, trial) + + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + self._sampler.after_trial(study, trial, state, values) From e47861a03592659995059453e0570bb8fe5c1a4d Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 4 Oct 2024 11:18:51 +0200 Subject: [PATCH 02/51] Enhance README --- package/samplers/auto_sampler/README.md | 92 +++-------------------- package/samplers/auto_sampler/__init__.py | 2 +- package/samplers/auto_sampler/sampler.py | 6 +- 3 files changed, 17 insertions(+), 83 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index d4e40702..40986a9c 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -1,78 +1,31 @@ --- -author: Please fill in the author name here. (e.g., John Smith) -title: Please fill in the title of the feature here. (e.g., Gaussian-Process Expected Improvement Sampler) -description: Please fill in the description of the feature here. (e.g., This sampler searches for each trial based on expected improvement using Gaussian process.) -tags: [Please fill in the list of tags here. (e.g., sampler, visualization, pruner)] -optuna_versions: ['Please fill in the list of versions of Optuna in which you have confirmed the feature works, e.g., 3.6.1.'] +author: Optuna Team +title: AutoSampler +description: This sampler automatically chooses an appropriate built-in sampler for the provided objective function. +tags: [sampler, automatic, automated] +optuna_versions: [4.0.0] license: MIT License --- - - -Please read the [tutorial guide](https://optuna.github.io/optunahub-registry/recipes/001_first.html) to register your feature in OptunaHub. -You can find more detailed explanation of the following contents in the tutorial. -Looking at [other packages' implementations](https://github.com/optuna/optunahub-registry/tree/main/package) will also help you. - ## Abstract -You can provide an abstract for your package here. -This section will help attract potential users to your package. - -**Example** - This package provides a sampler based on Gaussian process-based Bayesian optimization. The sampler is highly sample-efficient, so it is suitable for computationally expensive optimization problems with a limited evaluation budget, such as hyperparameter optimization of machine learning algorithms. ## Class or Function Names -Please fill in the class/function names which you implement here. - -**Example** +- AutoSampler -- GPSampler +This sampler currently accepts only `seed`. ## Installation -If you have additional dependencies, please fill in the installation guide here. -If no additional dependencies is required, **this section can be removed**. - -**Example** - ```shell -$ pip install scipy torch -``` - -If your package has `requirements.txt`, it will be automatically uploaded to the OptunaHub, and the package dependencies will be available to install as follows. - -```shell - pip install -r https://hub.optuna.org/{category}/{your_package_name}/requirements.txt +$ pip install scipy torch cmaes ``` ## Example -Please fill in the code snippet to use the implemented feature here. - -**Example** - ```python -import optuna import optunahub @@ -81,30 +34,7 @@ def objective(trial): return x**2 -sampler = optunahub.load_module(package="samplers/gp").GPSampler() -study = optuna.create_study(sampler=sampler) -study.optimize(objective, n_trials=100) -``` - -## Others - -Please fill in any other information if you have here by adding child sections (###). -If there is no additional information, **this section can be removed**. - - diff --git a/package/samplers/auto_sampler/__init__.py b/package/samplers/auto_sampler/__init__.py index 50191329..b74f25a5 100644 --- a/package/samplers/auto_sampler/__init__.py +++ b/package/samplers/auto_sampler/__init__.py @@ -1,4 +1,4 @@ -from .auto_sampler.sampler import AutoSampler +from .sampler import AutoSampler __all__ = ["AutoSampler"] diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 924bac3b..662949cf 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -98,7 +98,11 @@ def _determine_sampler( warm_start_trials = study.get_trials( deepcopy=False, states=(TrialState.COMPLETE, TrialState.PRUNED) ) - self._sampler = CmaEsSampler(seed=self._seed, source_trials=warm_start_trials) + # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for + # 1D problems. + self._sampler = CmaEsSampler( + seed=self._seed, source_trials=warm_start_trials, warn_independent_sampling=False + ) def infer_relative_search_space( self, study: Study, trial: FrozenTrial From a8edf5e0ef077014f23e0b3493febe456d8b4e7d Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 4 Oct 2024 11:20:40 +0200 Subject: [PATCH 03/51] Add LICENSE --- package/samplers/auto_sampler/LICENSE | 2 +- package/samplers/auto_sampler/requirements.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 package/samplers/auto_sampler/requirements.txt diff --git a/package/samplers/auto_sampler/LICENSE b/package/samplers/auto_sampler/LICENSE index 548d31c6..4e2b34c1 100644 --- a/package/samplers/auto_sampler/LICENSE +++ b/package/samplers/auto_sampler/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 +Copyright (c) 2024 Preferred Networks, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package/samplers/auto_sampler/requirements.txt b/package/samplers/auto_sampler/requirements.txt new file mode 100644 index 00000000..10fd7a0f --- /dev/null +++ b/package/samplers/auto_sampler/requirements.txt @@ -0,0 +1,3 @@ +scipy +torch +cmaes From f101e0ffa4f0daafaa9acb6369f275149ad8ed1a Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 8 Oct 2024 08:06:28 +0200 Subject: [PATCH 04/51] Update the random seed handling --- package/samplers/auto_sampler/sampler.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 662949cf..bd21cb49 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -10,6 +10,7 @@ from optuna.samplers import GPSampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler +from optuna.samplers._lazy_random_state import LazyRandomState from optuna.search_space import IntersectionSearchSpace from optuna.trial import TrialState @@ -51,10 +52,12 @@ def objective(trial): """ def __init__(self, seed: int | None = None) -> None: - self._seed = seed - self._sampler: BaseSampler = RandomSampler(seed=seed) + self._rng = LazyRandomState(seed) + seed_for_random_sampler = self._rng.rng.randint(1 << 32) + self._sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) def reseed_rng(self) -> None: + self._rng.rng.seed() self._sampler.reseed_rng() def _include_conditional_param(self, study: Study) -> bool: @@ -75,6 +78,7 @@ def _determine_sampler( if isinstance(self._sampler, TPESampler): return + seed = self._rng.rng.randint(1 << 32) if any( isinstance(d, CategoricalDistribution) for d in search_space.values() ) or self._include_conditional_param(study): @@ -82,14 +86,14 @@ def _determine_sampler( # Use ``TPESampler`` if search space includes conditional or categorical parameters. # TBD: group=True? self._sampler = TPESampler( - seed=self._seed, multivariate=True, warn_independent_sampling=False + seed=seed, multivariate=True, warn_independent_sampling=False ) return if trial.number < 250: # Use ``GPSampler`` if search space is numerical and n_trials <= 250. if not isinstance(self._sampler, GPSampler): - self._sampler = GPSampler(seed=self._seed) + self._sampler = GPSampler(seed=seed) return if not isinstance(self._sampler, CmaEsSampler): @@ -101,7 +105,7 @@ def _determine_sampler( # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. self._sampler = CmaEsSampler( - seed=self._seed, source_trials=warm_start_trials, warn_independent_sampling=False + seed=seed, source_trials=warm_start_trials, warn_independent_sampling=False ) def infer_relative_search_space( From 6df7a9585511817614a150c8191fa0e4c3175160 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 15 Oct 2024 11:22:13 +0200 Subject: [PATCH 05/51] Make WS-CMA-ES distributed setup robust --- package/samplers/auto_sampler/sampler.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index bd21cb49..83b62677 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -90,7 +90,9 @@ def _determine_sampler( ) return - if trial.number < 250: + complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) + complete_trials.sort(key=lambda trial: trial.datetime_complete) + if len(complete_trials) < 250: # Use ``GPSampler`` if search space is numerical and n_trials <= 250. if not isinstance(self._sampler, GPSampler): self._sampler = GPSampler(seed=seed) @@ -99,9 +101,7 @@ def _determine_sampler( if not isinstance(self._sampler, CmaEsSampler): # Use ``CmaEsSampler`` if search space is numerical and n_trials > 250. # Warm start CMA-ES with trials up to trial.number of 249. - warm_start_trials = study.get_trials( - deepcopy=False, states=(TrialState.COMPLETE, TrialState.PRUNED) - ) + warm_start_trials = complete_trials[:250] # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. self._sampler = CmaEsSampler( From f71caeb22e4bc236cbeeb533914d858d149bacc7 Mon Sep 17 00:00:00 2001 From: Toshihiko Yanase Date: Thu, 17 Oct 2024 00:43:55 +0900 Subject: [PATCH 06/51] Support multi-objective and constrained optimization. --- package/samplers/auto_sampler/README.md | 4 +- package/samplers/auto_sampler/sampler.py | 50 ++++++++++++++++++++---- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 40986a9c..ad90365f 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -19,8 +19,10 @@ This sampler currently accepts only `seed`. ## Installation +This sampler requires optional dependencies of Optuna. + ```shell -$ pip install scipy torch cmaes +$ pip install "optuna[optional]" ``` ## Example diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 83b62677..e669a1fb 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -2,12 +2,14 @@ from collections.abc import Sequence from typing import Any +from typing import Callable from typing import TYPE_CHECKING from optuna.distributions import CategoricalDistribution from optuna.samplers import BaseSampler from optuna.samplers import CmaEsSampler from optuna.samplers import GPSampler +from optuna.samplers import NSGAIISampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler from optuna.samplers._lazy_random_state import LazyRandomState @@ -31,30 +33,50 @@ class AutoSampler(BaseSampler): .. testcode:: import optuna - from optuna.samplers import AutoSampler + import optunahub def objective(trial): x = trial.suggest_float("x", -5, 5) return x**2 - - study = optuna.create_study(sampler=AutoSampler()) - study.optimize(objective, n_trials=10) + module = optunahub.load_module("samplers/auto_sampler") + study = optuna.create_study(sampler=module.AutoSampler()) + study.optimize(objective, n_trials=300) .. note:: - This sampler might require ``scipy``, ``torch``, and ``cmaes``. - You can install these dependencies with ``pip install scipy torch cmaes``. + This sampler requires optional dependencies of Optuna. + You can install them with ``pip install "optuna[optional]"``. + Alternatively, you can install them with ``pip install -r https://hub.optuna.org/samplers/auto_sampler/requirements.txt``. Args: seed: Seed for random number generator. + constraints_func: + An optional function that computes the objective constraints. It must take a + :class:`~optuna.trial.FrozenTrial` and return the constraints. The return value must + be a sequence of :obj:`float` s. A value strictly larger than 0 means that a + constraints is violated. A value equal to or smaller than 0 is considered feasible. + If ``constraints_func`` returns more than one value for a trial, that trial is + considered feasible if and only if all values are equal to 0 or smaller. + + The ``constraints_func`` will be evaluated after each successful trial. + The function won't be called when trials fail or they are pruned, but this behavior is + subject to change in the future releases. + + .. note:: + If you enable this feature, Optuna's default sampler will be selected automatically. """ - def __init__(self, seed: int | None = None) -> None: + def __init__( + self, + seed: int | None = None, + constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, + ) -> None: self._rng = LazyRandomState(seed) seed_for_random_sampler = self._rng.rng.randint(1 << 32) self._sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) + self._constraints_func = constraints_func def reseed_rng(self) -> None: self._rng.rng.seed() @@ -75,10 +97,24 @@ def _include_conditional_param(self, study: Study) -> bool: def _determine_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> None: + if len(study.directions) > 1: + # Fallback to the default sampler if the study has multiple objectives. + if isinstance(self._sampler, NSGAIISampler): + return + # TODO(toshihikoyanase): add warning message about fallback. + self._sampler = NSGAIISampler(constraints_func=self._constraints_func) + return + if isinstance(self._sampler, TPESampler): return seed = self._rng.rng.randint(1 << 32) + if self._constraints_func is not None: + # Fallback to the default sampler if the study has constraints. + # TODO(toshihikoyanase): add warning message about fallback. + self._sampler = TPESampler(seed=seed, constraines_func=self._constraints_func) + return + if any( isinstance(d, CategoricalDistribution) for d in search_space.values() ) or self._include_conditional_param(study): From 2a7d4bb047975a0365ee4d68c267eed9abd8d2e9 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 18 Oct 2024 05:51:57 +0200 Subject: [PATCH 07/51] Update auto sampler --- package/samplers/auto_sampler/sampler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index e669a1fb..5010f4db 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -1,8 +1,8 @@ from __future__ import annotations +from collections.abc import Callable from collections.abc import Sequence from typing import Any -from typing import Callable from typing import TYPE_CHECKING from optuna.distributions import CategoricalDistribution From b5b204df97f0f7ba310a292d4677a8c699cf1066 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 08:18:31 +0200 Subject: [PATCH 08/51] Support constraints_func --- package/samplers/auto_sampler/sampler.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 5010f4db..af495c95 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -109,20 +109,20 @@ def _determine_sampler( return seed = self._rng.rng.randint(1 << 32) - if self._constraints_func is not None: - # Fallback to the default sampler if the study has constraints. - # TODO(toshihikoyanase): add warning message about fallback. - self._sampler = TPESampler(seed=seed, constraines_func=self._constraints_func) - return - - if any( - isinstance(d, CategoricalDistribution) for d in search_space.values() - ) or self._include_conditional_param(study): + if ( + self._constraints_func is not None + or any(isinstance(d, CategoricalDistribution) for d in search_space.values()) + or self._include_conditional_param(study) + ): # NOTE(nabenabe): The statement above is always true for Trial#1. # Use ``TPESampler`` if search space includes conditional or categorical parameters. # TBD: group=True? self._sampler = TPESampler( - seed=seed, multivariate=True, warn_independent_sampling=False + seed=seed, + multivariate=True, + warn_independent_sampling=False, + constraines_func=self._constraints_func, + constant_liar=True, ) return From bf07aafd545a8222931506ab40fd1d9acc048911 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 08:29:58 +0200 Subject: [PATCH 09/51] Replace the random seed with the max int32 --- package/samplers/auto_sampler/sampler.py | 30 +++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index af495c95..a0753247 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -23,6 +23,9 @@ from optuna.trial import FrozenTrial +MAXINT32 = (1 << 31) - 1 + + class AutoSampler(BaseSampler): """Sampler automatically choosing an appropriate sampler based on search space. @@ -74,7 +77,7 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: self._rng = LazyRandomState(seed) - seed_for_random_sampler = self._rng.rng.randint(1 << 32) + seed_for_random_sampler = self._rng.rng.randint(MAXINT32) self._sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) self._constraints_func = constraints_func @@ -94,21 +97,26 @@ def _include_conditional_param(self, study: Study) -> bool: return False + def _determine_multi_objective_sampler( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> None: + if isinstance(self._sampler, NSGAIISampler): + return + + seed = self._rng.rng.randint(MAXINT32) + self._sampler = NSGAIISampler(constraints_func=self._constraints_func, seed=seed) + def _determine_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> None: if len(study.directions) > 1: - # Fallback to the default sampler if the study has multiple objectives. - if isinstance(self._sampler, NSGAIISampler): - return - # TODO(toshihikoyanase): add warning message about fallback. - self._sampler = NSGAIISampler(constraints_func=self._constraints_func) + self._determine_multi_objective_sampler(study, trial, search_space) return if isinstance(self._sampler, TPESampler): return - seed = self._rng.rng.randint(1 << 32) + seed = self._rng.rng.randint(MAXINT32) if ( self._constraints_func is not None or any(isinstance(d, CategoricalDistribution) for d in search_space.values()) @@ -128,15 +136,15 @@ def _determine_sampler( complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) - if len(complete_trials) < 250: - # Use ``GPSampler`` if search space is numerical and n_trials <= 250. + if len(complete_trials) <= 250: + # Use ``GPSampler`` if search space is numerical and len(trials) <= 250. if not isinstance(self._sampler, GPSampler): self._sampler = GPSampler(seed=seed) return if not isinstance(self._sampler, CmaEsSampler): - # Use ``CmaEsSampler`` if search space is numerical and n_trials > 250. - # Warm start CMA-ES with trials up to trial.number of 249. + # Use ``CmaEsSampler`` if search space is numerical and len(trials) > 250. + # Warm start CMA-ES with the first 250 complete trials. warm_start_trials = complete_trials[:250] # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. From c0372485ba6937419cb436a4964ae48d3047ba95 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 08:38:14 +0200 Subject: [PATCH 10/51] Add the switching algorithm for multi-objective optimization --- package/samplers/auto_sampler/sampler.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index a0753247..fe9c1172 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -13,6 +13,7 @@ from optuna.samplers import RandomSampler from optuna.samplers import TPESampler from optuna.samplers._lazy_random_state import LazyRandomState +from optuna.samplers.nsgaii._sampler import _GENERATION_KEY from optuna.search_space import IntersectionSearchSpace from optuna.trial import TrialState @@ -104,7 +105,21 @@ def _determine_multi_objective_sampler( return seed = self._rng.rng.randint(MAXINT32) - self._sampler = NSGAIISampler(constraints_func=self._constraints_func, seed=seed) + if not isinstance(self._sampler, TPESampler): + self._sampler = TPESampler( + seed=seed, + multivariate=True, + warn_independent_sampling=False, + constraines_func=self._constraints_func, + constant_liar=True, + ) + return + + complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) + complete_trials.sort(key=lambda trial: trial.datetime_complete) + if len(complete_trials) <= 1000: + # Use ``NSGAIISampler`` if search space is numerical and len(trials) <= 1000. + self._sampler = NSGAIISampler(constraints_func=self._constraints_func, seed=seed) def _determine_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] @@ -172,6 +187,11 @@ def infer_relative_search_space( def sample_relative( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> dict[str, Any]: + if len(study.directions) > 1 and isinstance(self._sampler, TPESampler): + # NOTE(nabenabe): Set generation 0 so that NSGAIISampler can use the trial information + # obtained during the optimization using TPESampler. + study._storage.set_trial_system_attr(trial._trial_id, _GENERATION_KEY, 0) + return self._sampler.sample_relative(study, trial, search_space) def sample_independent( From ee0d97b491e1f4380125bb498373e5760a0ab344 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 08:40:05 +0200 Subject: [PATCH 11/51] Refactor the determination algo --- package/samplers/auto_sampler/sampler.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index fe9c1172..7c695b4c 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -121,13 +121,9 @@ def _determine_multi_objective_sampler( # Use ``NSGAIISampler`` if search space is numerical and len(trials) <= 1000. self._sampler = NSGAIISampler(constraints_func=self._constraints_func, seed=seed) - def _determine_sampler( + def _determine_single_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> None: - if len(study.directions) > 1: - self._determine_multi_objective_sampler(study, trial, search_space) - return - if isinstance(self._sampler, TPESampler): return @@ -167,6 +163,14 @@ def _determine_sampler( seed=seed, source_trials=warm_start_trials, warn_independent_sampling=False ) + def _determine_sampler( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> None: + if len(study.directions) == 1: + self._determine_single_objective_sampler(study, trial, search_space) + else: + self._determine_multi_objective_sampler(study, trial, search_space) + def infer_relative_search_space( self, study: Study, trial: FrozenTrial ) -> dict[str, BaseDistribution]: From b3af183ec4a94d723fb54141c75d109acf4a0eb7 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 09:03:55 +0200 Subject: [PATCH 12/51] Add NSGAIIISampler --- package/samplers/auto_sampler/sampler.py | 27 ++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 7c695b4c..d8636f6f 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -9,11 +9,13 @@ from optuna.samplers import BaseSampler from optuna.samplers import CmaEsSampler from optuna.samplers import GPSampler +from optuna.samplers import NSGAIIISampler from optuna.samplers import NSGAIISampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler from optuna.samplers._lazy_random_state import LazyRandomState -from optuna.samplers.nsgaii._sampler import _GENERATION_KEY +from optuna.samplers._nsgaiii._sampler import _GENERATION_KEY as NSGA3_GENERATION_KEY +from optuna.samplers.nsgaii._sampler import _GENERATION_KEY as NSGA2_GENERATION_KEY from optuna.search_space import IntersectionSearchSpace from optuna.trial import TrialState @@ -25,6 +27,7 @@ MAXINT32 = (1 << 31) - 1 +THRESHOLD_OF_MANY_OBJECTIVES = 4 class AutoSampler(BaseSampler): @@ -101,7 +104,7 @@ def _include_conditional_param(self, study: Study) -> bool: def _determine_multi_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> None: - if isinstance(self._sampler, NSGAIISampler): + if isinstance(self._sampler, (NSGAIISampler, NSGAIIISampler)): return seed = self._rng.rng.randint(MAXINT32) @@ -110,16 +113,21 @@ def _determine_multi_objective_sampler( seed=seed, multivariate=True, warn_independent_sampling=False, - constraines_func=self._constraints_func, + constraints_func=self._constraints_func, constant_liar=True, ) return complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) - if len(complete_trials) <= 1000: + if len(complete_trials) >= 1000: + nsga_sampler_cls = ( + NSGAIISampler + if len(study.directions) < THRESHOLD_OF_MANY_OBJECTIVES + else NSGAIIISampler + ) # Use ``NSGAIISampler`` if search space is numerical and len(trials) <= 1000. - self._sampler = NSGAIISampler(constraints_func=self._constraints_func, seed=seed) + self._sampler = nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) def _determine_single_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] @@ -191,9 +199,16 @@ def infer_relative_search_space( def sample_relative( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> dict[str, Any]: - if len(study.directions) > 1 and isinstance(self._sampler, TPESampler): + n_objectives = len(study.directions) + if n_objectives > 1 and isinstance(self._sampler, TPESampler): # NOTE(nabenabe): Set generation 0 so that NSGAIISampler can use the trial information # obtained during the optimization using TPESampler. + # NOTE(nabenabe): Use NSGA-III for many objective problems. + _GENERATION_KEY = ( + NSGA2_GENERATION_KEY + if n_objectives < THRESHOLD_OF_MANY_OBJECTIVES + else NSGA3_GENERATION_KEY + ) study._storage.set_trial_system_attr(trial._trial_id, _GENERATION_KEY, 0) return self._sampler.sample_relative(study, trial, search_space) From 317369c454af6357c5edfcaf0a6cabba047b0c20 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 09:08:22 +0200 Subject: [PATCH 13/51] Make magical numbers to class attributes --- package/samplers/auto_sampler/sampler.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index d8636f6f..87913448 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -31,6 +31,9 @@ class AutoSampler(BaseSampler): + _N_COMPLETE_TRIALS_FOR_CMAES = 250 + _N_COMPLETE_TRIALS_FOR_NSGA = 1000 + """Sampler automatically choosing an appropriate sampler based on search space. This sampler is convenient when you are unsure what sampler to use. @@ -120,13 +123,14 @@ def _determine_multi_objective_sampler( complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) - if len(complete_trials) >= 1000: + if len(complete_trials) >= self._N_COMPLETE_TRIALS_FOR_NSGA: nsga_sampler_cls = ( NSGAIISampler if len(study.directions) < THRESHOLD_OF_MANY_OBJECTIVES else NSGAIIISampler ) - # Use ``NSGAIISampler`` if search space is numerical and len(trials) <= 1000. + # Use ``NSGAIISampler`` if search space is numerical and + # len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_NSGA. self._sampler = nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) def _determine_single_objective_sampler( @@ -155,16 +159,18 @@ def _determine_single_objective_sampler( complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) - if len(complete_trials) <= 250: - # Use ``GPSampler`` if search space is numerical and len(trials) <= 250. + if len(complete_trials) <= self._N_COMPLETE_TRIALS_FOR_CMAES: + # Use ``GPSampler`` if search space is numerical and + # len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_CMAES. if not isinstance(self._sampler, GPSampler): self._sampler = GPSampler(seed=seed) return if not isinstance(self._sampler, CmaEsSampler): - # Use ``CmaEsSampler`` if search space is numerical and len(trials) > 250. - # Warm start CMA-ES with the first 250 complete trials. - warm_start_trials = complete_trials[:250] + # Use ``CmaEsSampler`` if search space is numerical and + # len(complete_trials) > _N_COMPLETE_TRIALS_FOR_CMAES. + # Warm start CMA-ES with the first _N_COMPLETE_TRIALS_FOR_CMAES complete trials. + warm_start_trials = complete_trials[: self._N_COMPLETE_TRIALS_FOR_CMAES] # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. self._sampler = CmaEsSampler( From 370d5227501f8233e9800c2fadcd7fcc8d70c8ce Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 09:16:51 +0200 Subject: [PATCH 14/51] Verify the implementation by a simple example --- package/samplers/auto_sampler/sampler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 87913448..b9b76903 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -152,7 +152,7 @@ def _determine_single_objective_sampler( seed=seed, multivariate=True, warn_independent_sampling=False, - constraines_func=self._constraints_func, + constraints_func=self._constraints_func, constant_liar=True, ) return From 45e4e35ae8136ef32a4d83b4d8f50c0012e15ff0 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 10:20:55 +0200 Subject: [PATCH 15/51] Add unittests for MO --- package/samplers/auto_sampler/sampler.py | 11 ++- .../auto_sampler/tests/test_auto_sampler.py | 96 +++++++++++++++++++ 2 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 package/samplers/auto_sampler/tests/test_auto_sampler.py diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index b9b76903..ed216bf2 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -13,6 +13,7 @@ from optuna.samplers import NSGAIISampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler +from optuna.samplers._base import _process_constraints_after_trial from optuna.samplers._lazy_random_state import LazyRandomState from optuna.samplers._nsgaiii._sampler import _GENERATION_KEY as NSGA3_GENERATION_KEY from optuna.samplers.nsgaii._sampler import _GENERATION_KEY as NSGA2_GENERATION_KEY @@ -159,9 +160,9 @@ def _determine_single_objective_sampler( complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) - if len(complete_trials) <= self._N_COMPLETE_TRIALS_FOR_CMAES: + if len(complete_trials) < self._N_COMPLETE_TRIALS_FOR_CMAES: # Use ``GPSampler`` if search space is numerical and - # len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_CMAES. + # len(complete_trials) < _N_COMPLETE_TRIALS_FOR_CMAES. if not isinstance(self._sampler, GPSampler): self._sampler = GPSampler(seed=seed) return @@ -238,4 +239,10 @@ def after_trial( state: TrialState, values: Sequence[float] | None, ) -> None: + assert state in [TrialState.COMPLETE, TrialState.FAIL, TrialState.PRUNED] + if isinstance(self._sampler, RandomSampler) and self._constraints_func is not None: + # NOTE(nabenabe): Since RandomSampler does not handle constraints, we need to + # separately set the constraints here. + _process_constraints_after_trial(self._constraints_func, study, trial, state) + self._sampler.after_trial(study, trial, state, values) diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py new file mode 100644 index 00000000..6c166c8c --- /dev/null +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -0,0 +1,96 @@ +from __future__ import annotations + +import optuna +import optunahub +import pytest + + +optuna.logging.set_verbosity(optuna.logging.CRITICAL) + + +AutoSampler = optunahub.load_local_module( + package="samplers/auto_sampler", registry_root="package/" +).AutoSampler + +parametrize_constraints = pytest.mark.parametrize("use_constraint", [True, False]) + + +def objective(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", -5, 5) + y = trial.suggest_int("y", -5, 5) + return x**2 + y**2 + + +def multi_objective(trial: optuna.Trial) -> tuple[float, float]: + x = trial.suggest_float("x", -5, 5) + y = trial.suggest_int("y", -5, 5) + return x**2 + y**2, (x - 2) ** 2 + (y - 2) ** 2 + + +def many_objective(trial: optuna.Trial) -> tuple[float, float, float, float]: + x = trial.suggest_float("x", -5, 5) + y = trial.suggest_int("y", -5, 5) + return (x**2 + y**2, x**2 + y**2, (x - 2) ** 2 + (y - 2) ** 2, (x + 2) ** 2 + (y + 2) ** 2) + + +def constraints_func(trial: optuna.trial.FrozenTrial) -> tuple[float]: + return (float(trial.params["x"] >= 2),) + + +def _get_used_sampler_names(study: optuna.Study) -> list[str]: + return [ + study._storage.get_trial_system_attrs(t._trial_id).get("auto:sampler") + for t in study.trials + ] + + +def _check_constraints_of_all_trials(study: optuna.Study) -> None: + target_key = optuna.samplers._base._CONSTRAINTS_KEY + assert all( + target_key in study._storage.get_trial_system_attrs(t._trial_id) for t in study.trials + ) + + +@parametrize_constraints +def test_choose_nsga3(use_constraint: bool) -> None: + n_trials_of_nsga = 100 + n_trials_before_nsga = 100 + auto_sampler = AutoSampler(constraints_func=constraints_func if use_constraint else None) + auto_sampler._N_COMPLETE_TRIALS_FOR_NSGA = n_trials_before_nsga + study = optuna.create_study(sampler=auto_sampler, directions=["minimize"] * 4) + study.optimize(many_objective, n_trials=n_trials_before_nsga + n_trials_of_nsga) + sampler_names = _get_used_sampler_names(study) + assert ["RandomSampler"] + ["TPESampler"] * (n_trials_before_nsga - 1) + [ + "NSGAIIISampler" + ] * n_trials_of_nsga == sampler_names + if use_constraint: + _check_constraints_of_all_trials(study) + + +@parametrize_constraints +def test_choose_nsga2(use_constraint: bool) -> None: + n_trials_of_nsga = 100 + n_trials_before_nsga = 100 + auto_sampler = AutoSampler(constraints_func=constraints_func if use_constraint else None) + auto_sampler._N_COMPLETE_TRIALS_FOR_NSGA = n_trials_before_nsga + study = optuna.create_study(sampler=auto_sampler, directions=["minimize"] * 2) + study.optimize(multi_objective, n_trials=n_trials_before_nsga + n_trials_of_nsga) + sampler_names = _get_used_sampler_names(study) + assert ["RandomSampler"] + ["TPESampler"] * (n_trials_before_nsga - 1) + [ + "NSGAIISampler" + ] * n_trials_of_nsga == sampler_names + if use_constraint: + _check_constraints_of_all_trials(study) + + +def test_choose_cmaes() -> None: + n_trials_of_cmaes = 100 + n_trials_before_cmaes = 20 + auto_sampler = AutoSampler() + auto_sampler._N_COMPLETE_TRIALS_FOR_CMAES = n_trials_before_cmaes + study = optuna.create_study(sampler=auto_sampler) + study.optimize(objective, n_trials=n_trials_of_cmaes + n_trials_before_cmaes) + sampler_names = _get_used_sampler_names(study) + assert ["RandomSampler"] + ["GPSampler"] * (n_trials_before_cmaes - 1) + [ + "CmaEsSampler" + ] * n_trials_of_cmaes == sampler_names From 0949605b3375a546e6a78798e86c5ee70c17659b Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 10:41:49 +0200 Subject: [PATCH 16/51] Add unittests for single objective --- .../auto_sampler/tests/test_auto_sampler.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index 6c166c8c..f7ee3e3e 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -21,6 +21,23 @@ def objective(trial: optuna.Trial) -> float: return x**2 + y**2 +def objective_with_categorical(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", -5, 5) + y = trial.suggest_int("y", -5, 5) + c = trial.suggest_categorical("c", [True, False]) + return x**2 + y**2 if c else (x - 2) ** 2 + (y - 2) ** 2 + + +def objective_with_conditional(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", -5, 5) + if trial.number < 15: + y = trial.suggest_int("y", -5, 5) + return x**2 + y**2 + else: + z = trial.suggest_float("z", -5, 5) + return x**2 + z**2 + + def multi_objective(trial: optuna.Trial) -> tuple[float, float]: x = trial.suggest_float("x", -5, 5) y = trial.suggest_int("y", -5, 5) @@ -84,6 +101,7 @@ def test_choose_nsga2(use_constraint: bool) -> None: def test_choose_cmaes() -> None: + # This test must be performed with a numerical objective function. n_trials_of_cmaes = 100 n_trials_before_cmaes = 20 auto_sampler = AutoSampler() @@ -94,3 +112,34 @@ def test_choose_cmaes() -> None: assert ["RandomSampler"] + ["GPSampler"] * (n_trials_before_cmaes - 1) + [ "CmaEsSampler" ] * n_trials_of_cmaes == sampler_names + + +def test_choose_tpe_in_single_with_constraints() -> None: + n_trials = 30 + auto_sampler = AutoSampler(constraints_func=constraints_func) + study = optuna.create_study(sampler=auto_sampler) + study.optimize(objective, n_trials=n_trials) + sampler_names = _get_used_sampler_names(study) + assert ["RandomSampler"] + ["TPESampler"] * (n_trials - 1) == sampler_names + + +def test_choose_tpe_with_categorical_params() -> None: + n_trials = 30 + auto_sampler = AutoSampler() + study = optuna.create_study(sampler=auto_sampler) + study.optimize(objective_with_categorical, n_trials=n_trials) + sampler_names = _get_used_sampler_names(study) + assert ["RandomSampler"] + ["TPESampler"] * (n_trials - 1) == sampler_names + + +def test_choose_tpe_with_conditional_params() -> None: + n_trials = 30 + auto_sampler = AutoSampler() + study = optuna.create_study(sampler=auto_sampler) + study.optimize(objective_with_conditional, n_trials=n_trials) + sampler_names = _get_used_sampler_names(study) + # NOTE(nabenabe): When the conditional parameter is detected for the first time, GPSampler + # simply falls back to sample_independent, so sample_relative of GPSampler is called 15 times. + assert ["RandomSampler"] + ["GPSampler"] * 15 + ["TPESampler"] * ( + n_trials - 16 + ) == sampler_names From 820460865e975813cc57b75d92df71327704bf0b Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 10:53:08 +0200 Subject: [PATCH 17/51] Enhance README --- package/samplers/auto_sampler/README.md | 17 ++++++++++++++- package/samplers/auto_sampler/sampler.py | 21 +++++++++++-------- .../auto_sampler/tests/test_auto_sampler.py | 1 + 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index ad90365f..642a627a 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -15,13 +15,16 @@ This package provides a sampler based on Gaussian process-based Bayesian optimiz - AutoSampler -This sampler currently accepts only `seed`. +This sampler currently accepts only `seed` and `constraints_func`. +`constraints_func` enables users to handle constraints along with the objective function. +This argument follows the same convention as the other samplers, so please take a look at [the reference](https://optuna.readthedocs.io/en/stable/reference/samplers/generated/optuna.samplers.TPESampler.html). ## Installation This sampler requires optional dependencies of Optuna. ```shell +# TODO $ pip install "optuna[optional]" ``` @@ -40,3 +43,15 @@ module = optunahub.load_module(package="samplers/auto_sampler") study = optuna.create_study(sampler=module.AutoSampler()) study.optimize(objective, n_trials=300) ``` + +### Test + +To execute the tests for `AutoSampler`, please run the following commands. The test file is provided in the package. + +```sh +pip install pytest +``` + +```python +python -m pytest package/samplers/tests/test_auto_sampler.py +``` diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index ed216bf2..57123f6a 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -13,7 +13,6 @@ from optuna.samplers import NSGAIISampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler -from optuna.samplers._base import _process_constraints_after_trial from optuna.samplers._lazy_random_state import LazyRandomState from optuna.samplers._nsgaiii._sampler import _GENERATION_KEY as NSGA3_GENERATION_KEY from optuna.samplers.nsgaii._sampler import _GENERATION_KEY as NSGA2_GENERATION_KEY @@ -85,9 +84,19 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: self._rng = LazyRandomState(seed) - seed_for_random_sampler = self._rng.rng.randint(MAXINT32) - self._sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) + seed_for_first_sampler = self._rng.rng.randint(MAXINT32) self._constraints_func = constraints_func + self._sampler: BaseSampler = ( + RandomSampler(seed=seed_for_first_sampler) + if constraints_func is None + else TPESampler( + seed=seed_for_first_sampler, + multivariate=True, + warn_independent_sampling=False, + constraints_func=self._constraints_func, + constant_liar=True, + ) + ) def reseed_rng(self) -> None: self._rng.rng.seed() @@ -239,10 +248,4 @@ def after_trial( state: TrialState, values: Sequence[float] | None, ) -> None: - assert state in [TrialState.COMPLETE, TrialState.FAIL, TrialState.PRUNED] - if isinstance(self._sampler, RandomSampler) and self._constraints_func is not None: - # NOTE(nabenabe): Since RandomSampler does not handle constraints, we need to - # separately set the constraints here. - _process_constraints_after_trial(self._constraints_func, study, trial, state) - self._sampler.after_trial(study, trial, state, values) diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index f7ee3e3e..b2d45620 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -5,6 +5,7 @@ import pytest +# TODO(nabaenabe): Add the CI for this sampler. optuna.logging.set_verbosity(optuna.logging.CRITICAL) From baf4f7ef4983a077ab0884e57bf17eaca48f20e3 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 11:00:45 +0200 Subject: [PATCH 18/51] Fix the test path in README --- package/samplers/auto_sampler/README.md | 2 +- package/samplers/auto_sampler/sampler.py | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 642a627a..bd322ebd 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -53,5 +53,5 @@ pip install pytest ``` ```python -python -m pytest package/samplers/tests/test_auto_sampler.py +python -m pytest package/samplers/auto_sampler/tests/test_auto_sampler.py ``` diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 57123f6a..ed216bf2 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -13,6 +13,7 @@ from optuna.samplers import NSGAIISampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler +from optuna.samplers._base import _process_constraints_after_trial from optuna.samplers._lazy_random_state import LazyRandomState from optuna.samplers._nsgaiii._sampler import _GENERATION_KEY as NSGA3_GENERATION_KEY from optuna.samplers.nsgaii._sampler import _GENERATION_KEY as NSGA2_GENERATION_KEY @@ -84,19 +85,9 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: self._rng = LazyRandomState(seed) - seed_for_first_sampler = self._rng.rng.randint(MAXINT32) + seed_for_random_sampler = self._rng.rng.randint(MAXINT32) + self._sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) self._constraints_func = constraints_func - self._sampler: BaseSampler = ( - RandomSampler(seed=seed_for_first_sampler) - if constraints_func is None - else TPESampler( - seed=seed_for_first_sampler, - multivariate=True, - warn_independent_sampling=False, - constraints_func=self._constraints_func, - constant_liar=True, - ) - ) def reseed_rng(self) -> None: self._rng.rng.seed() @@ -248,4 +239,10 @@ def after_trial( state: TrialState, values: Sequence[float] | None, ) -> None: + assert state in [TrialState.COMPLETE, TrialState.FAIL, TrialState.PRUNED] + if isinstance(self._sampler, RandomSampler) and self._constraints_func is not None: + # NOTE(nabenabe): Since RandomSampler does not handle constraints, we need to + # separately set the constraints here. + _process_constraints_after_trial(self._constraints_func, study, trial, state) + self._sampler.after_trial(study, trial, state, values) From fdd1558b9bc4398b47b9e1475e7b3133bb3c8d59 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 11:03:42 +0200 Subject: [PATCH 19/51] Add thumbnail --- package/samplers/auto_sampler/README.md | 2 ++ .../samplers/auto_sampler/images/thumbnail.png | Bin 0 -> 307697 bytes 2 files changed, 2 insertions(+) create mode 100644 package/samplers/auto_sampler/images/thumbnail.png diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index bd322ebd..ee08f0eb 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -11,6 +11,8 @@ license: MIT License This package provides a sampler based on Gaussian process-based Bayesian optimization. The sampler is highly sample-efficient, so it is suitable for computationally expensive optimization problems with a limited evaluation budget, such as hyperparameter optimization of machine learning algorithms. +![Conceptual Visualization](images/thumbnail.png "Conceptual Visualization") + ## Class or Function Names - AutoSampler diff --git a/package/samplers/auto_sampler/images/thumbnail.png b/package/samplers/auto_sampler/images/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..83a4fe56574dd1154371b8cde0e055c16c59786b GIT binary patch literal 307697 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%0A6(9+0Qk22@!=*!fv^LGnsV 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 literal 0 HcmV?d00001 From 0c1ed85c8479655c1dc0aa1756e9df1738e72e11 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 11:10:51 +0200 Subject: [PATCH 20/51] Fix README --- package/samplers/auto_sampler/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index ee08f0eb..50260544 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -9,7 +9,7 @@ license: MIT License ## Abstract -This package provides a sampler based on Gaussian process-based Bayesian optimization. The sampler is highly sample-efficient, so it is suitable for computationally expensive optimization problems with a limited evaluation budget, such as hyperparameter optimization of machine learning algorithms. +This package automatically selects an appropriate sampler for the provided search space based on the developers' recommendation. ![Conceptual Visualization](images/thumbnail.png "Conceptual Visualization") @@ -19,15 +19,14 @@ This package provides a sampler based on Gaussian process-based Bayesian optimiz This sampler currently accepts only `seed` and `constraints_func`. `constraints_func` enables users to handle constraints along with the objective function. -This argument follows the same convention as the other samplers, so please take a look at [the reference](https://optuna.readthedocs.io/en/stable/reference/samplers/generated/optuna.samplers.TPESampler.html). +These arguments follow the same convention as the other samplers, so please take a look at [the reference](https://optuna.readthedocs.io/en/stable/reference/samplers/generated/optuna.samplers.TPESampler.html). ## Installation This sampler requires optional dependencies of Optuna. ```shell -# TODO -$ pip install "optuna[optional]" +$ pip install optunahub cmaes torch ``` ## Example From 133ad558d16d90a736eb9175aececa1a8299d78b Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 22 Oct 2024 11:19:40 +0200 Subject: [PATCH 21/51] Fix README and sampler --- package/samplers/auto_sampler/README.md | 2 +- package/samplers/auto_sampler/sampler.py | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 50260544..866fccc1 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -26,7 +26,7 @@ These arguments follow the same convention as the other samplers, so please take This sampler requires optional dependencies of Optuna. ```shell -$ pip install optunahub cmaes torch +$ pip install optunahub cmaes torch scipy ``` ## Example diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index ed216bf2..15caaa12 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -57,7 +57,7 @@ def objective(trial): .. note:: This sampler requires optional dependencies of Optuna. - You can install them with ``pip install "optuna[optional]"``. + You can install them with ``pip install optunahub scipy torch cmaes``. Alternatively, you can install them with ``pip install -r https://hub.optuna.org/samplers/auto_sampler/requirements.txt``. Args: @@ -73,10 +73,6 @@ def objective(trial): The ``constraints_func`` will be evaluated after each successful trial. The function won't be called when trials fail or they are pruned, but this behavior is subject to change in the future releases. - - .. note:: - If you enable this feature, Optuna's default sampler will be selected automatically. - """ def __init__( @@ -130,8 +126,7 @@ def _determine_multi_objective_sampler( if len(study.directions) < THRESHOLD_OF_MANY_OBJECTIVES else NSGAIIISampler ) - # Use ``NSGAIISampler`` if search space is numerical and - # len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_NSGA. + # Use NSGA-II/III if len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_NSGA. self._sampler = nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) def _determine_single_objective_sampler( @@ -208,7 +203,7 @@ def sample_relative( ) -> dict[str, Any]: n_objectives = len(study.directions) if n_objectives > 1 and isinstance(self._sampler, TPESampler): - # NOTE(nabenabe): Set generation 0 so that NSGAIISampler can use the trial information + # NOTE(nabenabe): Set generation 0 so that NSGA-II/III can use the trial information # obtained during the optimization using TPESampler. # NOTE(nabenabe): Use NSGA-III for many objective problems. _GENERATION_KEY = ( From 45039c1c1423769c6c96bb05550e97646d96f3fe Mon Sep 17 00:00:00 2001 From: Shuhei Watanabe <47781922+nabenabe0928@users.noreply.github.com> Date: Thu, 24 Oct 2024 08:44:04 +0200 Subject: [PATCH 22/51] Update package/samplers/auto_sampler/sampler.py Co-authored-by: Naoto Mizuno --- package/samplers/auto_sampler/sampler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 15caaa12..cab1d7d2 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -77,6 +77,7 @@ def objective(trial): def __init__( self, + *, seed: int | None = None, constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: From d06a851360d25532547b02947bf70aab393488bf Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 24 Oct 2024 08:58:02 +0200 Subject: [PATCH 23/51] Remove thumbnail --- package/samplers/auto_sampler/README.md | 2 -- .../samplers/auto_sampler/images/thumbnail.png | Bin 307697 -> 0 bytes 2 files changed, 2 deletions(-) delete mode 100644 package/samplers/auto_sampler/images/thumbnail.png diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 866fccc1..2bd91607 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -11,8 +11,6 @@ license: MIT License This package automatically selects an appropriate sampler for the provided search space based on the developers' recommendation. -![Conceptual Visualization](images/thumbnail.png "Conceptual Visualization") - ## Class or Function Names - AutoSampler diff --git a/package/samplers/auto_sampler/images/thumbnail.png b/package/samplers/auto_sampler/images/thumbnail.png deleted file mode 100644 index 83a4fe56574dd1154371b8cde0e055c16c59786b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307697 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%0A6(9+0Qk22@!=*!fv^LGnsV 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 From 72d661f2bbde05836e240f0dcda93bcaebe2adda Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 24 Oct 2024 09:02:08 +0200 Subject: [PATCH 24/51] Address mizuno's comments --- package/samplers/auto_sampler/sampler.py | 38 +++++++++++------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index cab1d7d2..29159b2a 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -96,28 +96,23 @@ def _include_conditional_param(self, study: Study) -> bool: return False param_key = set(trials[0].params) - for t in trials: - if param_key != set(t.params): - return True - - return False + return any(param_key != set(t.params) for t in trials) def _determine_multi_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] - ) -> None: + ) -> BaseSampler: if isinstance(self._sampler, (NSGAIISampler, NSGAIIISampler)): - return + return self._sampler seed = self._rng.rng.randint(MAXINT32) if not isinstance(self._sampler, TPESampler): - self._sampler = TPESampler( + return TPESampler( seed=seed, multivariate=True, warn_independent_sampling=False, constraints_func=self._constraints_func, constant_liar=True, ) - return complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) @@ -128,13 +123,15 @@ def _determine_multi_objective_sampler( else NSGAIIISampler ) # Use NSGA-II/III if len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_NSGA. - self._sampler = nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) + return nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) + + return self._sampler def _determine_single_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] - ) -> None: + ) -> BaseSampler | None: if isinstance(self._sampler, TPESampler): - return + return self._sampler seed = self._rng.rng.randint(MAXINT32) if ( @@ -145,14 +142,13 @@ def _determine_single_objective_sampler( # NOTE(nabenabe): The statement above is always true for Trial#1. # Use ``TPESampler`` if search space includes conditional or categorical parameters. # TBD: group=True? - self._sampler = TPESampler( + return TPESampler( seed=seed, multivariate=True, warn_independent_sampling=False, constraints_func=self._constraints_func, constant_liar=True, ) - return complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) complete_trials.sort(key=lambda trial: trial.datetime_complete) @@ -160,27 +156,27 @@ def _determine_single_objective_sampler( # Use ``GPSampler`` if search space is numerical and # len(complete_trials) < _N_COMPLETE_TRIALS_FOR_CMAES. if not isinstance(self._sampler, GPSampler): - self._sampler = GPSampler(seed=seed) - return - - if not isinstance(self._sampler, CmaEsSampler): + return GPSampler(seed=seed) + elif not isinstance(self._sampler, CmaEsSampler): # Use ``CmaEsSampler`` if search space is numerical and # len(complete_trials) > _N_COMPLETE_TRIALS_FOR_CMAES. # Warm start CMA-ES with the first _N_COMPLETE_TRIALS_FOR_CMAES complete trials. warm_start_trials = complete_trials[: self._N_COMPLETE_TRIALS_FOR_CMAES] # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. - self._sampler = CmaEsSampler( + return CmaEsSampler( seed=seed, source_trials=warm_start_trials, warn_independent_sampling=False ) + return self._sampler + def _determine_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> None: if len(study.directions) == 1: - self._determine_single_objective_sampler(study, trial, search_space) + self._sampler = self._determine_single_objective_sampler(study, trial, search_space) else: - self._determine_multi_objective_sampler(study, trial, search_space) + self._sampler = self._determine_multi_objective_sampler(study, trial, search_space) def infer_relative_search_space( self, study: Study, trial: FrozenTrial From f50962019da92ed7d881b9f9c372483df543ca44 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 24 Oct 2024 09:09:20 +0200 Subject: [PATCH 25/51] Address mizuno's comments --- package/samplers/auto_sampler/sampler.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 29159b2a..30bdd04f 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -125,11 +125,11 @@ def _determine_multi_objective_sampler( # Use NSGA-II/III if len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_NSGA. return nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) - return self._sampler + return self._sampler # No update happens to self._sampler. def _determine_single_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] - ) -> BaseSampler | None: + ) -> BaseSampler: if isinstance(self._sampler, TPESampler): return self._sampler @@ -168,7 +168,7 @@ def _determine_single_objective_sampler( seed=seed, source_trials=warm_start_trials, warn_independent_sampling=False ) - return self._sampler + return self._sampler # No update happens to self._sampler. def _determine_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] From ae983bca8f81e8d6759320bbd51875a1967712c5 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 24 Oct 2024 09:29:39 +0200 Subject: [PATCH 26/51] Address mizuno's comments --- package/samplers/auto_sampler/sampler.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 30bdd04f..41f924ef 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -29,6 +29,7 @@ MAXINT32 = (1 << 31) - 1 THRESHOLD_OF_MANY_OBJECTIVES = 4 +SAMPLER_KEY = "auto:sampler" class AutoSampler(BaseSampler): @@ -172,27 +173,19 @@ def _determine_single_objective_sampler( def _determine_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] - ) -> None: + ) -> BaseSampler: if len(study.directions) == 1: - self._sampler = self._determine_single_objective_sampler(study, trial, search_space) + return self._determine_single_objective_sampler(study, trial, search_space) else: - self._sampler = self._determine_multi_objective_sampler(study, trial, search_space) + return self._determine_multi_objective_sampler(study, trial, search_space) def infer_relative_search_space( self, study: Study, trial: FrozenTrial ) -> dict[str, BaseDistribution]: search_space = IntersectionSearchSpace().calculate(study) - sampler_key = "auto:sampler" if len(search_space) == 0: - study._storage.set_trial_system_attr( - trial._trial_id, sampler_key, self._sampler.__class__.__name__ - ) return {} - self._determine_sampler(study, trial, search_space) - study._storage.set_trial_system_attr( - trial._trial_id, sampler_key, self._sampler.__class__.__name__ - ) return self._sampler.infer_relative_search_space(study, trial) def sample_relative( @@ -222,6 +215,14 @@ def sample_independent( return self._sampler.sample_independent(study, trial, param_name, param_distribution) def before_trial(self, study: Study, trial: FrozenTrial) -> None: + search_space = IntersectionSearchSpace().calculate(study) + if len(search_space) != 0: + # Cannot determine sampler in before we know the search space, i.e. len(search_space) == 0. + self._sampler = self._determine_sampler(study, trial, search_space) + + study._storage.set_trial_system_attr( + trial._trial_id, SAMPLER_KEY, self._sampler.__class__.__name__ + ) self._sampler.before_trial(study, trial) def after_trial( From e9e7b959c3d51daa663945036205876ef5fe1ccf Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 24 Oct 2024 09:43:37 +0200 Subject: [PATCH 27/51] Address mizuno's comments --- package/samplers/auto_sampler/sampler.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index 41f924ef..d4c15539 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -182,10 +182,6 @@ def _determine_sampler( def infer_relative_search_space( self, study: Study, trial: FrozenTrial ) -> dict[str, BaseDistribution]: - search_space = IntersectionSearchSpace().calculate(study) - if len(search_space) == 0: - return {} - return self._sampler.infer_relative_search_space(study, trial) def sample_relative( @@ -215,9 +211,10 @@ def sample_independent( return self._sampler.sample_independent(study, trial, param_name, param_distribution) def before_trial(self, study: Study, trial: FrozenTrial) -> None: - search_space = IntersectionSearchSpace().calculate(study) - if len(search_space) != 0: - # Cannot determine sampler in before we know the search space, i.e. len(search_space) == 0. + # NOTE(nabenabe): Use the states used in IntersectionSearchSpace().calculate. + states_of_interest = [TrialState.COMPLETE, TrialState.WAITING, TrialState.RUNNING] + if len(study._get_trials(deepcopy=False, states=states_of_interest)) != 0: + search_space = IntersectionSearchSpace().calculate(study) self._sampler = self._determine_sampler(study, trial, search_space) study._storage.set_trial_system_attr( From 2bfad4b5a797abe46fa2cdc29e3a5e4fe1c373be Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 24 Oct 2024 10:02:17 +0200 Subject: [PATCH 28/51] Fix --- package/samplers/auto_sampler/sampler.py | 3 +-- package/samplers/auto_sampler/tests/test_auto_sampler.py | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index d4c15539..f2bf676e 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -211,8 +211,7 @@ def sample_independent( return self._sampler.sample_independent(study, trial, param_name, param_distribution) def before_trial(self, study: Study, trial: FrozenTrial) -> None: - # NOTE(nabenabe): Use the states used in IntersectionSearchSpace().calculate. - states_of_interest = [TrialState.COMPLETE, TrialState.WAITING, TrialState.RUNNING] + states_of_interest = [TrialState.COMPLETE, TrialState.WAITING] if len(study._get_trials(deepcopy=False, states=states_of_interest)) != 0: search_space = IntersectionSearchSpace().calculate(study) self._sampler = self._determine_sampler(study, trial, search_space) diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index b2d45620..901526a4 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -144,3 +144,6 @@ def test_choose_tpe_with_conditional_params() -> None: assert ["RandomSampler"] + ["GPSampler"] * 15 + ["TPESampler"] * ( n_trials - 16 ) == sampler_names + + +# TODO: Add a test with enqueue_trial. From 3cb7f73bd4f46b3a2b0e3278226dd95476cfe187 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 04:06:33 +0200 Subject: [PATCH 29/51] Add TODO and fix README --- package/samplers/auto_sampler/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 2bd91607..11399bb4 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -30,12 +30,14 @@ $ pip install optunahub cmaes torch scipy ## Example ```python +import optuna import optunahub def objective(trial): x = trial.suggest_float("x", -5, 5) - return x**2 + y = trial.suggest_float("y", -5, 5) + return x**2 + y**2 module = optunahub.load_module(package="samplers/auto_sampler") @@ -54,3 +56,9 @@ pip install pytest ```python python -m pytest package/samplers/auto_sampler/tests/test_auto_sampler.py ``` + +## Others + +### Algorithm Switch Heurtistic in AutoSampler + +TODO From 8ac08bed4d69b099267318e438bae11fb9cb415c Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 04:07:35 +0200 Subject: [PATCH 30/51] Add TODO to tests --- package/samplers/auto_sampler/tests/test_auto_sampler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index 901526a4..155a2b43 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -146,4 +146,5 @@ def test_choose_tpe_with_conditional_params() -> None: ) == sampler_names +# TODO(c-bata): Check the test_samplers.py to cover a wider range of edge cases. # TODO: Add a test with enqueue_trial. From 5b9c9a7bccded6b6037528a569615b30a2667287 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 04:23:03 +0200 Subject: [PATCH 31/51] Remove TPESampler for MO --- package/samplers/auto_sampler/sampler.py | 47 +++---------------- .../auto_sampler/tests/test_auto_sampler.py | 24 ++++------ 2 files changed, 14 insertions(+), 57 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index f2bf676e..ba68d9ba 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -9,14 +9,11 @@ from optuna.samplers import BaseSampler from optuna.samplers import CmaEsSampler from optuna.samplers import GPSampler -from optuna.samplers import NSGAIIISampler from optuna.samplers import NSGAIISampler from optuna.samplers import RandomSampler from optuna.samplers import TPESampler from optuna.samplers._base import _process_constraints_after_trial from optuna.samplers._lazy_random_state import LazyRandomState -from optuna.samplers._nsgaiii._sampler import _GENERATION_KEY as NSGA3_GENERATION_KEY -from optuna.samplers.nsgaii._sampler import _GENERATION_KEY as NSGA2_GENERATION_KEY from optuna.search_space import IntersectionSearchSpace from optuna.trial import TrialState @@ -28,13 +25,11 @@ MAXINT32 = (1 << 31) - 1 -THRESHOLD_OF_MANY_OBJECTIVES = 4 SAMPLER_KEY = "auto:sampler" class AutoSampler(BaseSampler): _N_COMPLETE_TRIALS_FOR_CMAES = 250 - _N_COMPLETE_TRIALS_FOR_NSGA = 1000 """Sampler automatically choosing an appropriate sampler based on search space. @@ -102,31 +97,11 @@ def _include_conditional_param(self, study: Study) -> bool: def _determine_multi_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> BaseSampler: - if isinstance(self._sampler, (NSGAIISampler, NSGAIIISampler)): + if isinstance(self._sampler, NSGAIISampler): return self._sampler seed = self._rng.rng.randint(MAXINT32) - if not isinstance(self._sampler, TPESampler): - return TPESampler( - seed=seed, - multivariate=True, - warn_independent_sampling=False, - constraints_func=self._constraints_func, - constant_liar=True, - ) - - complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) - complete_trials.sort(key=lambda trial: trial.datetime_complete) - if len(complete_trials) >= self._N_COMPLETE_TRIALS_FOR_NSGA: - nsga_sampler_cls = ( - NSGAIISampler - if len(study.directions) < THRESHOLD_OF_MANY_OBJECTIVES - else NSGAIIISampler - ) - # Use NSGA-II/III if len(complete_trials) <= _N_COMPLETE_TRIALS_FOR_NSGA. - return nsga_sampler_cls(constraints_func=self._constraints_func, seed=seed) - - return self._sampler # No update happens to self._sampler. + return NSGAIISampler(constraints_func=self._constraints_func, seed=seed) def _determine_single_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] @@ -187,18 +162,6 @@ def infer_relative_search_space( def sample_relative( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> dict[str, Any]: - n_objectives = len(study.directions) - if n_objectives > 1 and isinstance(self._sampler, TPESampler): - # NOTE(nabenabe): Set generation 0 so that NSGA-II/III can use the trial information - # obtained during the optimization using TPESampler. - # NOTE(nabenabe): Use NSGA-III for many objective problems. - _GENERATION_KEY = ( - NSGA2_GENERATION_KEY - if n_objectives < THRESHOLD_OF_MANY_OBJECTIVES - else NSGA3_GENERATION_KEY - ) - study._storage.set_trial_system_attr(trial._trial_id, _GENERATION_KEY, 0) - return self._sampler.sample_relative(study, trial, search_space) def sample_independent( @@ -211,8 +174,10 @@ def sample_independent( return self._sampler.sample_independent(study, trial, param_name, param_distribution) def before_trial(self, study: Study, trial: FrozenTrial) -> None: - states_of_interest = [TrialState.COMPLETE, TrialState.WAITING] - if len(study._get_trials(deepcopy=False, states=states_of_interest)) != 0: + # NOTE(nabenabe): Sampler must be updated in this method. If, for example, it is updated in + # infer_relative_search_space, the sampler for before_trial and that for sample_relative, + # after_trial might be different, meaning that the sampling routine could be incompatible. + if len(study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,))) != 0: search_space = IntersectionSearchSpace().calculate(study) self._sampler = self._determine_sampler(study, trial, search_space) diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index 155a2b43..4685f2d3 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -70,33 +70,25 @@ def _check_constraints_of_all_trials(study: optuna.Study) -> None: @parametrize_constraints -def test_choose_nsga3(use_constraint: bool) -> None: - n_trials_of_nsga = 100 - n_trials_before_nsga = 100 +def test_choose_for_many_objective(use_constraint: bool) -> None: + n_trials = 200 auto_sampler = AutoSampler(constraints_func=constraints_func if use_constraint else None) - auto_sampler._N_COMPLETE_TRIALS_FOR_NSGA = n_trials_before_nsga study = optuna.create_study(sampler=auto_sampler, directions=["minimize"] * 4) - study.optimize(many_objective, n_trials=n_trials_before_nsga + n_trials_of_nsga) + study.optimize(many_objective, n_trials=n_trials) sampler_names = _get_used_sampler_names(study) - assert ["RandomSampler"] + ["TPESampler"] * (n_trials_before_nsga - 1) + [ - "NSGAIIISampler" - ] * n_trials_of_nsga == sampler_names + assert ["RandomSampler"] + ["NSGAIISampler"] * (n_trials - 1) == sampler_names if use_constraint: _check_constraints_of_all_trials(study) @parametrize_constraints -def test_choose_nsga2(use_constraint: bool) -> None: - n_trials_of_nsga = 100 - n_trials_before_nsga = 100 +def test_choose_for_multi_objective(use_constraint: bool) -> None: + n_trials = 200 auto_sampler = AutoSampler(constraints_func=constraints_func if use_constraint else None) - auto_sampler._N_COMPLETE_TRIALS_FOR_NSGA = n_trials_before_nsga study = optuna.create_study(sampler=auto_sampler, directions=["minimize"] * 2) - study.optimize(multi_objective, n_trials=n_trials_before_nsga + n_trials_of_nsga) + study.optimize(multi_objective, n_trials=n_trials) sampler_names = _get_used_sampler_names(study) - assert ["RandomSampler"] + ["TPESampler"] * (n_trials_before_nsga - 1) + [ - "NSGAIISampler" - ] * n_trials_of_nsga == sampler_names + assert ["RandomSampler"] + ["NSGAIISampler"] * (n_trials - 1) == sampler_names if use_constraint: _check_constraints_of_all_trials(study) From 7e75683119f64dab0130c1f130470b4092190492 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 04:42:41 +0200 Subject: [PATCH 32/51] Make sampler thread local --- package/samplers/auto_sampler/sampler.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index ba68d9ba..b317a8f8 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -2,6 +2,7 @@ from collections.abc import Callable from collections.abc import Sequence +import threading from typing import Any from typing import TYPE_CHECKING @@ -28,6 +29,12 @@ SAMPLER_KEY = "auto:sampler" +class _ThreadLocalSampler(threading.local): + def __init__(self, sampler: BaseSampler) -> None: + self._sampler = sampler + super().__init__() + + class AutoSampler(BaseSampler): _N_COMPLETE_TRIALS_FOR_CMAES = 250 @@ -79,9 +86,18 @@ def __init__( ) -> None: self._rng = LazyRandomState(seed) seed_for_random_sampler = self._rng.rng.randint(MAXINT32) - self._sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) + sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) + self._thread_local_sampler = _ThreadLocalSampler(sampler) self._constraints_func = constraints_func + @property + def _sampler(self) -> BaseSampler: + return self._thread_local_sampler._sampler + + @_sampler.setter + def _sampler(self, sampler: BaseSampler) -> None: + self._thread_local_sampler._sampler = sampler + def reseed_rng(self) -> None: self._rng.rng.seed() self._sampler.reseed_rng() From e7362a091c33731b51ac8c81841fd1a72c638d97 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 06:06:25 +0200 Subject: [PATCH 33/51] Add logging --- package/samplers/auto_sampler/sampler.py | 8 +++++--- package/samplers/auto_sampler/tests/test_auto_sampler.py | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index b317a8f8..b52a4eb8 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -7,6 +7,7 @@ from typing import TYPE_CHECKING from optuna.distributions import CategoricalDistribution +from optuna.logging import get_logger from optuna.samplers import BaseSampler from optuna.samplers import CmaEsSampler from optuna.samplers import GPSampler @@ -27,6 +28,7 @@ MAXINT32 = (1 << 31) - 1 SAMPLER_KEY = "auto:sampler" +_logger = get_logger(f"optuna.{__name__}") class _ThreadLocalSampler(threading.local): @@ -197,9 +199,9 @@ def before_trial(self, study: Study, trial: FrozenTrial) -> None: search_space = IntersectionSearchSpace().calculate(study) self._sampler = self._determine_sampler(study, trial, search_space) - study._storage.set_trial_system_attr( - trial._trial_id, SAMPLER_KEY, self._sampler.__class__.__name__ - ) + sampler_name = self._sampler.__class__.__name__ + _logger.debug(f"Sample trial#{trial.number} with {sampler_name}.") + study._storage.set_trial_system_attr(trial._trial_id, SAMPLER_KEY, sampler_name) self._sampler.before_trial(study, trial) def after_trial( diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index 4685f2d3..94d5e390 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -6,8 +6,7 @@ # TODO(nabaenabe): Add the CI for this sampler. -optuna.logging.set_verbosity(optuna.logging.CRITICAL) - +# optuna.logging.set_verbosity(optuna.logging.CRITICAL) AutoSampler = optunahub.load_local_module( package="samplers/auto_sampler", registry_root="package/" From bc205ca1b3c136b3639d1a766cc30258e931e565 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 06:16:18 +0200 Subject: [PATCH 34/51] Add test_samplers --- .../auto_sampler/tests/test_auto_sampler.py | 4 - .../auto_sampler/tests/test_sampler.py | 1063 +++++++++++++++++ 2 files changed, 1063 insertions(+), 4 deletions(-) create mode 100644 package/samplers/auto_sampler/tests/test_sampler.py diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index 94d5e390..0eab42b8 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -135,7 +135,3 @@ def test_choose_tpe_with_conditional_params() -> None: assert ["RandomSampler"] + ["GPSampler"] * 15 + ["TPESampler"] * ( n_trials - 16 ) == sampler_names - - -# TODO(c-bata): Check the test_samplers.py to cover a wider range of edge cases. -# TODO: Add a test with enqueue_trial. diff --git a/package/samplers/auto_sampler/tests/test_sampler.py b/package/samplers/auto_sampler/tests/test_sampler.py new file mode 100644 index 00000000..b0f8dbeb --- /dev/null +++ b/package/samplers/auto_sampler/tests/test_sampler.py @@ -0,0 +1,1063 @@ +from __future__ import annotations + +from collections.abc import Callable +from collections.abc import Sequence +import multiprocessing +from multiprocessing.managers import DictProxy +import os +import pickle +from typing import Any +from unittest.mock import patch +import warnings + +from _pytest.fixtures import SubRequest +from _pytest.mark.structures import MarkDecorator +import numpy as np +import optuna +from optuna.distributions import BaseDistribution +from optuna.distributions import CategoricalChoiceType +from optuna.distributions import CategoricalDistribution +from optuna.distributions import FloatDistribution +from optuna.distributions import IntDistribution +from optuna.samplers import BaseSampler +from optuna.samplers._lazy_random_state import LazyRandomState +from optuna.study import Study +from optuna.testing.objectives import fail_objective +from optuna.testing.objectives import pruned_objective +from optuna.trial import FrozenTrial +from optuna.trial import Trial +from optuna.trial import TrialState +import pytest + + +# NOTE(nabenabe): This file content is mostly copied from the Optuna repository. + + +def get_gp_sampler( + *, n_startup_trials: int = 0, deterministic_objective: bool = False, seed: int | None = None +) -> optuna.samplers.GPSampler: + return optuna.samplers.GPSampler( + n_startup_trials=n_startup_trials, + seed=seed, + deterministic_objective=deterministic_objective, + ) + + +parametrize_sampler = pytest.mark.parametrize( + "sampler_class", + [ + optuna.samplers.RandomSampler, + lambda: optuna.samplers.TPESampler(n_startup_trials=0), + lambda: optuna.samplers.TPESampler(n_startup_trials=0, multivariate=True), + lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), + lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0, use_separable_cma=True), + optuna.samplers.NSGAIISampler, + optuna.samplers.NSGAIIISampler, + optuna.samplers.QMCSampler, + lambda: get_gp_sampler(n_startup_trials=0), + lambda: get_gp_sampler(n_startup_trials=0, deterministic_objective=True), + ], +) +parametrize_relative_sampler = pytest.mark.parametrize( + "relative_sampler_class", + [ + lambda: optuna.samplers.TPESampler(n_startup_trials=0, multivariate=True), + lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), + lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0, use_separable_cma=True), + lambda: get_gp_sampler(n_startup_trials=0), + lambda: get_gp_sampler(n_startup_trials=0, deterministic_objective=True), + ], +) +parametrize_multi_objective_sampler = pytest.mark.parametrize( + "multi_objective_sampler_class", + [ + optuna.samplers.NSGAIISampler, + optuna.samplers.NSGAIIISampler, + lambda: optuna.samplers.TPESampler(n_startup_trials=0), + ], +) + + +sampler_class_with_seed: dict[str, Callable[[int], BaseSampler]] = { + "RandomSampler": lambda seed: optuna.samplers.RandomSampler(seed=seed), + "TPESampler": lambda seed: optuna.samplers.TPESampler(seed=seed), + "multivariate TPESampler": lambda seed: optuna.samplers.TPESampler( + multivariate=True, seed=seed + ), + "CmaEsSampler": lambda seed: optuna.samplers.CmaEsSampler(seed=seed), + "separable CmaEsSampler": lambda seed: optuna.samplers.CmaEsSampler( + seed=seed, use_separable_cma=True + ), + "NSGAIISampler": lambda seed: optuna.samplers.NSGAIISampler(seed=seed), + "NSGAIIISampler": lambda seed: optuna.samplers.NSGAIIISampler(seed=seed), + "QMCSampler": lambda seed: optuna.samplers.QMCSampler(seed=seed), + "GPSampler": lambda seed: get_gp_sampler(seed=seed, n_startup_trials=0), +} +param_sampler_with_seed = [] +param_sampler_name_with_seed = [] +for sampler_name, sampler_class in sampler_class_with_seed.items(): + param_sampler_with_seed.append(pytest.param(sampler_class, id=sampler_name)) + param_sampler_name_with_seed.append(pytest.param(sampler_name)) +parametrize_sampler_with_seed = pytest.mark.parametrize("sampler_class", param_sampler_with_seed) +parametrize_sampler_name_with_seed = pytest.mark.parametrize( + "sampler_name", param_sampler_name_with_seed +) + + +@pytest.mark.parametrize( + "sampler_class,expected_has_rng,expected_has_another_sampler", + [ + (optuna.samplers.RandomSampler, True, False), + (lambda: optuna.samplers.TPESampler(n_startup_trials=0), True, True), + (lambda: optuna.samplers.TPESampler(n_startup_trials=0, multivariate=True), True, True), + (lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), True, True), + (optuna.samplers.NSGAIISampler, True, True), + (optuna.samplers.NSGAIIISampler, True, True), + ( + lambda: optuna.samplers.PartialFixedSampler( + fixed_params={"x": 0}, base_sampler=optuna.samplers.RandomSampler() + ), + False, + True, + ), + (lambda: optuna.samplers.GridSampler(search_space={"x": [0]}), True, False), + (lambda: optuna.samplers.QMCSampler(), False, True), + (lambda: get_gp_sampler(n_startup_trials=0), True, True), + ], +) +def test_sampler_reseed_rng( + sampler_class: Callable[[], BaseSampler], + expected_has_rng: bool, + expected_has_another_sampler: bool, +) -> None: + def _extract_attr_name_from_sampler_by_cls(sampler: BaseSampler, cls: Any) -> str | None: + for name, attr in sampler.__dict__.items(): + if isinstance(attr, cls): + return name + return None + + sampler = sampler_class() + + rng_name = _extract_attr_name_from_sampler_by_cls(sampler, LazyRandomState) + has_rng = rng_name is not None + assert expected_has_rng == has_rng + if has_rng: + rng_name = str(rng_name) + original_random_state = sampler.__dict__[rng_name].rng.get_state() + sampler.reseed_rng() + random_state = sampler.__dict__[rng_name].rng.get_state() + if not isinstance(sampler, optuna.samplers.CmaEsSampler): + assert str(original_random_state) != str(random_state) + else: + # CmaEsSampler has a RandomState that is not reseed by its reseed_rng method. + assert str(original_random_state) == str(random_state) + + had_sampler_name = _extract_attr_name_from_sampler_by_cls(sampler, BaseSampler) + has_another_sampler = had_sampler_name is not None + assert expected_has_another_sampler == has_another_sampler + + if has_another_sampler: + had_sampler_name = str(had_sampler_name) + had_sampler = sampler.__dict__[had_sampler_name] + had_sampler_rng_name = _extract_attr_name_from_sampler_by_cls(had_sampler, LazyRandomState) + original_had_sampler_random_state = had_sampler.__dict__[ + had_sampler_rng_name + ].rng.get_state() + with patch.object( + had_sampler, + "reseed_rng", + wraps=had_sampler.reseed_rng, + ) as mock_object: + sampler.reseed_rng() + assert mock_object.call_count == 1 + + had_sampler = sampler.__dict__[had_sampler_name] + had_sampler_random_state = had_sampler.__dict__[had_sampler_rng_name].rng.get_state() + assert str(original_had_sampler_random_state) != str(had_sampler_random_state) + + +def parametrize_suggest_method(name: str) -> MarkDecorator: + return pytest.mark.parametrize( + f"suggest_method_{name}", + [ + lambda t: t.suggest_float(name, 0, 10), + lambda t: t.suggest_int(name, 0, 10), + lambda t: t.suggest_categorical(name, [0, 1, 2]), + lambda t: t.suggest_float(name, 0, 10, step=0.5), + lambda t: t.suggest_float(name, 1e-7, 10, log=True), + lambda t: t.suggest_int(name, 1, 10, log=True), + ], + ) + + +@pytest.mark.parametrize( + "sampler_class", + [ + lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), + ], +) +def test_raise_error_for_samplers_during_multi_objectives( + sampler_class: Callable[[], BaseSampler], +) -> None: + study = optuna.study.create_study(directions=["maximize", "maximize"], sampler=sampler_class()) + + distribution = FloatDistribution(0.0, 1.0) + with pytest.raises(ValueError): + study.sampler.sample_independent(study, _create_new_trial(study), "x", distribution) + + with pytest.raises(ValueError): + trial = _create_new_trial(study) + study.sampler.sample_relative( + study, trial, study.sampler.infer_relative_search_space(study, trial) + ) + + +@pytest.mark.parametrize("seed", [0, 169208]) +def test_pickle_random_sampler(seed: int) -> None: + sampler = optuna.samplers.RandomSampler(seed) + restored_sampler = pickle.loads(pickle.dumps(sampler)) + assert sampler._rng.rng.bytes(10) == restored_sampler._rng.rng.bytes(10) + + +@parametrize_sampler +@pytest.mark.parametrize( + "distribution", + [ + FloatDistribution(-1.0, 1.0), + FloatDistribution(0.0, 1.0), + FloatDistribution(-1.0, 0.0), + FloatDistribution(1e-7, 1.0, log=True), + FloatDistribution(-10, 10, step=0.1), + FloatDistribution(-10.2, 10.2, step=0.1), + ], +) +def test_float( + sampler_class: Callable[[], BaseSampler], + distribution: FloatDistribution, +) -> None: + study = optuna.study.create_study(sampler=sampler_class()) + points = np.array( + [ + study.sampler.sample_independent(study, _create_new_trial(study), "x", distribution) + for _ in range(100) + ] + ) + assert np.all(points >= distribution.low) + assert np.all(points <= distribution.high) + assert not isinstance( + study.sampler.sample_independent(study, _create_new_trial(study), "x", distribution), + np.floating, + ) + + if distribution.step is not None: + # Check all points are multiples of distribution.step. + points -= distribution.low + points /= distribution.step + round_points = np.round(points) + np.testing.assert_almost_equal(round_points, points) + + +@parametrize_sampler +@pytest.mark.parametrize( + "distribution", + [ + IntDistribution(-10, 10), + IntDistribution(0, 10), + IntDistribution(-10, 0), + IntDistribution(-10, 10, step=2), + IntDistribution(0, 10, step=2), + IntDistribution(-10, 0, step=2), + IntDistribution(1, 100, log=True), + ], +) +def test_int(sampler_class: Callable[[], BaseSampler], distribution: IntDistribution) -> None: + study = optuna.study.create_study(sampler=sampler_class()) + points = np.array( + [ + study.sampler.sample_independent(study, _create_new_trial(study), "x", distribution) + for _ in range(100) + ] + ) + assert np.all(points >= distribution.low) + assert np.all(points <= distribution.high) + assert not isinstance( + study.sampler.sample_independent(study, _create_new_trial(study), "x", distribution), + np.integer, + ) + + +@parametrize_sampler +@pytest.mark.parametrize("choices", [(1, 2, 3), ("a", "b", "c"), (1, "a")]) +def test_categorical( + sampler_class: Callable[[], BaseSampler], choices: Sequence[CategoricalChoiceType] +) -> None: + distribution = CategoricalDistribution(choices) + + study = optuna.study.create_study(sampler=sampler_class()) + + def sample() -> float: + trial = _create_new_trial(study) + param_value = study.sampler.sample_independent(study, trial, "x", distribution) + return float(distribution.to_internal_repr(param_value)) + + points = np.asarray([sample() for i in range(100)]) + + # 'x' value is corresponding to an index of distribution.choices. + assert np.all(points >= 0) + assert np.all(points <= len(distribution.choices) - 1) + round_points = np.round(points) + np.testing.assert_almost_equal(round_points, points) + + +@parametrize_relative_sampler +@pytest.mark.parametrize( + "x_distribution", + [ + FloatDistribution(-1.0, 1.0), + FloatDistribution(1e-7, 1.0, log=True), + FloatDistribution(-10, 10, step=0.5), + IntDistribution(3, 10), + IntDistribution(1, 100, log=True), + IntDistribution(3, 9, step=2), + ], +) +@pytest.mark.parametrize( + "y_distribution", + [ + FloatDistribution(-1.0, 1.0), + FloatDistribution(1e-7, 1.0, log=True), + FloatDistribution(-10, 10, step=0.5), + IntDistribution(3, 10), + IntDistribution(1, 100, log=True), + IntDistribution(3, 9, step=2), + ], +) +def test_sample_relative_numerical( + relative_sampler_class: Callable[[], BaseSampler], + x_distribution: BaseDistribution, + y_distribution: BaseDistribution, +) -> None: + search_space: dict[str, BaseDistribution] = dict(x=x_distribution, y=y_distribution) + study = optuna.study.create_study(sampler=relative_sampler_class()) + trial = study.ask(search_space) + study.tell(trial, sum(trial.params.values())) + + def sample() -> list[int | float]: + params = study.sampler.sample_relative(study, _create_new_trial(study), search_space) + return [params[name] for name in search_space] + + points = np.array([sample() for _ in range(10)]) + for i, distribution in enumerate(search_space.values()): + assert isinstance( + distribution, + ( + FloatDistribution, + IntDistribution, + ), + ) + assert np.all(points[:, i] >= distribution.low) + assert np.all(points[:, i] <= distribution.high) + for param_value, distribution in zip(sample(), search_space.values()): + assert not isinstance(param_value, np.floating) + assert not isinstance(param_value, np.integer) + if isinstance(distribution, IntDistribution): + assert isinstance(param_value, int) + else: + assert isinstance(param_value, float) + + +@parametrize_relative_sampler +def test_sample_relative_categorical(relative_sampler_class: Callable[[], BaseSampler]) -> None: + search_space: dict[str, BaseDistribution] = dict( + x=CategoricalDistribution([1, 10, 100]), y=CategoricalDistribution([-1, -10, -100]) + ) + study = optuna.study.create_study(sampler=relative_sampler_class()) + trial = study.ask(search_space) + study.tell(trial, sum(trial.params.values())) + + def sample() -> list[float]: + params = study.sampler.sample_relative(study, _create_new_trial(study), search_space) + return [params[name] for name in search_space] + + points = np.array([sample() for _ in range(10)]) + for i, distribution in enumerate(search_space.values()): + assert isinstance(distribution, CategoricalDistribution) + assert np.all([v in distribution.choices for v in points[:, i]]) + for param_value in sample(): + assert not isinstance(param_value, np.floating) + assert not isinstance(param_value, np.integer) + assert isinstance(param_value, int) + + +@parametrize_relative_sampler +@pytest.mark.parametrize( + "x_distribution", + [ + FloatDistribution(-1.0, 1.0), + FloatDistribution(1e-7, 1.0, log=True), + FloatDistribution(-10, 10, step=0.5), + IntDistribution(1, 10), + IntDistribution(1, 100, log=True), + ], +) +def test_sample_relative_mixed( + relative_sampler_class: Callable[[], BaseSampler], x_distribution: BaseDistribution +) -> None: + search_space: dict[str, BaseDistribution] = dict( + x=x_distribution, y=CategoricalDistribution([-1, -10, -100]) + ) + study = optuna.study.create_study(sampler=relative_sampler_class()) + trial = study.ask(search_space) + study.tell(trial, sum(trial.params.values())) + + def sample() -> list[float]: + params = study.sampler.sample_relative(study, _create_new_trial(study), search_space) + return [params[name] for name in search_space] + + points = np.array([sample() for _ in range(10)]) + assert isinstance( + search_space["x"], + ( + FloatDistribution, + IntDistribution, + ), + ) + assert np.all(points[:, 0] >= search_space["x"].low) + assert np.all(points[:, 0] <= search_space["x"].high) + assert isinstance(search_space["y"], CategoricalDistribution) + assert np.all([v in search_space["y"].choices for v in points[:, 1]]) + for param_value, distribution in zip(sample(), search_space.values()): + assert not isinstance(param_value, np.floating) + assert not isinstance(param_value, np.integer) + if isinstance( + distribution, + ( + IntDistribution, + CategoricalDistribution, + ), + ): + assert isinstance(param_value, int) + else: + assert isinstance(param_value, float) + + +@parametrize_sampler +def test_conditional_sample_independent(sampler_class: Callable[[], BaseSampler]) -> None: + # This test case reproduces the error reported in #2734. + # See https://github.com/optuna/optuna/pull/2734#issuecomment-857649769. + + study = optuna.study.create_study(sampler=sampler_class()) + categorical_distribution = CategoricalDistribution(choices=["x", "y"]) + dependent_distribution = CategoricalDistribution(choices=["a", "b"]) + + study.add_trial( + optuna.create_trial( + params={"category": "x", "x": "a"}, + distributions={"category": categorical_distribution, "x": dependent_distribution}, + value=0.1, + ) + ) + + study.add_trial( + optuna.create_trial( + params={"category": "y", "y": "b"}, + distributions={"category": categorical_distribution, "y": dependent_distribution}, + value=0.1, + ) + ) + + _trial = _create_new_trial(study) + category = study.sampler.sample_independent( + study, _trial, "category", categorical_distribution + ) + assert category in ["x", "y"] + value = study.sampler.sample_independent(study, _trial, category, dependent_distribution) + assert value in ["a", "b"] + + +def _create_new_trial(study: Study) -> FrozenTrial: + trial_id = study._storage.create_new_trial(study._study_id) + return study._storage.get_trial(trial_id) + + +class FixedSampler(BaseSampler): + def __init__( + self, + relative_search_space: dict[str, BaseDistribution], + relative_params: dict[str, Any], + unknown_param_value: Any, + ) -> None: + self.relative_search_space = relative_search_space + self.relative_params = relative_params + self.unknown_param_value = unknown_param_value + + def infer_relative_search_space( + self, study: Study, trial: FrozenTrial + ) -> dict[str, BaseDistribution]: + return self.relative_search_space + + def sample_relative( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> dict[str, Any]: + return self.relative_params + + def sample_independent( + self, + study: Study, + trial: FrozenTrial, + param_name: str, + param_distribution: BaseDistribution, + ) -> Any: + return self.unknown_param_value + + +def test_sample_relative() -> None: + relative_search_space: dict[str, BaseDistribution] = { + "a": FloatDistribution(low=0, high=5), + "b": CategoricalDistribution(choices=("foo", "bar", "baz")), + "c": IntDistribution(low=20, high=50), # Not exist in `relative_params`. + } + relative_params = { + "a": 3.2, + "b": "baz", + } + unknown_param_value = 30 + + sampler = FixedSampler(relative_search_space, relative_params, unknown_param_value) + study = optuna.study.create_study(sampler=sampler) + + def objective(trial: Trial) -> float: + # Predefined parameters are sampled by `sample_relative()` method. + assert trial.suggest_float("a", 0, 5) == 3.2 + assert trial.suggest_categorical("b", ["foo", "bar", "baz"]) == "baz" + + # Other parameters are sampled by `sample_independent()` method. + assert trial.suggest_int("c", 20, 50) == unknown_param_value + assert trial.suggest_float("d", 1, 100, log=True) == unknown_param_value + assert trial.suggest_float("e", 20, 40) == unknown_param_value + + return 0.0 + + study.optimize(objective, n_trials=10, catch=()) + for trial in study.trials: + assert trial.params == {"a": 3.2, "b": "baz", "c": 30, "d": 30, "e": 30} + + +@parametrize_sampler +def test_nan_objective_value(sampler_class: Callable[[], BaseSampler]) -> None: + study = optuna.create_study(sampler=sampler_class()) + + def objective(trial: Trial, base_value: float) -> float: + return trial.suggest_float("x", 0.1, 0.2) + base_value + + # Non NaN objective values. + for i in range(10, 1, -1): + study.optimize(lambda t: objective(t, i), n_trials=1, catch=()) + assert int(study.best_value) == 2 + + # NaN objective values. + study.optimize(lambda t: objective(t, float("nan")), n_trials=1, catch=()) + assert int(study.best_value) == 2 + + # Non NaN objective value. + study.optimize(lambda t: objective(t, 1), n_trials=1, catch=()) + assert int(study.best_value) == 1 + + +@parametrize_sampler +def test_partial_fixed_sampling(sampler_class: Callable[[], BaseSampler]) -> None: + study = optuna.create_study(sampler=sampler_class()) + + def objective(trial: Trial) -> float: + x = trial.suggest_float("x", -1, 1) + y = trial.suggest_int("y", -1, 1) + z = trial.suggest_float("z", -1, 1) + return x + y + z + + # First trial. + study.optimize(objective, n_trials=1) + + # Second trial. Here, the parameter ``y`` is fixed as 0. + fixed_params = {"y": 0} + with warnings.catch_warnings(): + warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) + study.sampler = optuna.samplers.PartialFixedSampler(fixed_params, study.sampler) + study.optimize(objective, n_trials=1) + trial_params = study.trials[-1].params + assert trial_params["y"] == fixed_params["y"] + + +@parametrize_multi_objective_sampler +@pytest.mark.parametrize( + "distribution", + [ + FloatDistribution(-1.0, 1.0), + FloatDistribution(0.0, 1.0), + FloatDistribution(-1.0, 0.0), + FloatDistribution(1e-7, 1.0, log=True), + FloatDistribution(-10, 10, step=0.1), + FloatDistribution(-10.2, 10.2, step=0.1), + IntDistribution(-10, 10), + IntDistribution(0, 10), + IntDistribution(-10, 0), + IntDistribution(-10, 10, step=2), + IntDistribution(0, 10, step=2), + IntDistribution(-10, 0, step=2), + IntDistribution(1, 100, log=True), + CategoricalDistribution((1, 2, 3)), + CategoricalDistribution(("a", "b", "c")), + CategoricalDistribution((1, "a")), + ], +) +def test_multi_objective_sample_independent( + multi_objective_sampler_class: Callable[[], BaseSampler], distribution: BaseDistribution +) -> None: + study = optuna.study.create_study( + directions=["minimize", "maximize"], sampler=multi_objective_sampler_class() + ) + for i in range(100): + value = study.sampler.sample_independent( + study, _create_new_trial(study), "x", distribution + ) + assert distribution._contains(distribution.to_internal_repr(value)) + + if not isinstance(distribution, CategoricalDistribution): + # Please see https://github.com/optuna/optuna/pull/393 why this assertion is needed. + assert not isinstance(value, np.floating) + + if isinstance(distribution, FloatDistribution): + if distribution.step is not None: + # Check the value is a multiple of `distribution.step` which is + # the quantization interval of the distribution. + value -= distribution.low + value /= distribution.step + round_value = np.round(value) + np.testing.assert_almost_equal(round_value, value) + + +def test_before_trial() -> None: + n_calls = 0 + n_trials = 3 + + class SamplerBeforeTrial(optuna.samplers.RandomSampler): + def before_trial(self, study: Study, trial: FrozenTrial) -> None: + assert len(study.trials) - 1 == trial.number + assert trial.state == TrialState.RUNNING + assert trial.values is None + nonlocal n_calls + n_calls += 1 + + sampler = SamplerBeforeTrial() + study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) + + study.optimize( + lambda t: [t.suggest_float("y", -3, 3), t.suggest_int("x", 0, 10)], n_trials=n_trials + ) + assert n_calls == n_trials + + +def test_after_trial() -> None: + n_calls = 0 + n_trials = 3 + + class SamplerAfterTrial(optuna.samplers.RandomSampler): + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + assert len(study.trials) - 1 == trial.number + assert trial.state == TrialState.RUNNING + assert trial.values is None + assert state == TrialState.COMPLETE + assert values is not None + assert len(values) == 2 + nonlocal n_calls + n_calls += 1 + + sampler = SamplerAfterTrial() + study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) + + study.optimize(lambda t: [t.suggest_float("y", -3, 3), t.suggest_int("x", 0, 10)], n_trials=3) + + assert n_calls == n_trials + + +def test_after_trial_pruning() -> None: + n_calls = 0 + n_trials = 3 + + class SamplerAfterTrial(optuna.samplers.RandomSampler): + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + assert len(study.trials) - 1 == trial.number + assert trial.state == TrialState.RUNNING + assert trial.values is None + assert state == TrialState.PRUNED + assert values is None + nonlocal n_calls + n_calls += 1 + + sampler = SamplerAfterTrial() + study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) + + study.optimize(pruned_objective, n_trials=n_trials) + + assert n_calls == n_trials + + +def test_after_trial_failing() -> None: + n_calls = 0 + n_trials = 3 + + class SamplerAfterTrial(optuna.samplers.RandomSampler): + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + assert len(study.trials) - 1 == trial.number + assert trial.state == TrialState.RUNNING + assert trial.values is None + assert state == TrialState.FAIL + assert values is None + nonlocal n_calls + n_calls += 1 + + sampler = SamplerAfterTrial() + study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) + + with pytest.raises(ValueError): + study.optimize(fail_objective, n_trials=n_trials) + + # Called once after the first failing trial before returning from optimize. + assert n_calls == 1 + + +def test_after_trial_failing_in_after_trial() -> None: + n_calls = 0 + n_trials = 3 + + class SamplerAfterTrialAlwaysFail(optuna.samplers.RandomSampler): + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + nonlocal n_calls + n_calls += 1 + raise NotImplementedError # Arbitrary error for testing purpose. + + sampler = SamplerAfterTrialAlwaysFail() + study = optuna.create_study(sampler=sampler) + + with pytest.raises(NotImplementedError): + study.optimize(lambda t: t.suggest_int("x", 0, 10), n_trials=n_trials) + + assert len(study.trials) == 1 + assert n_calls == 1 + + sampler = SamplerAfterTrialAlwaysFail() + study = optuna.create_study(sampler=sampler) + + # Not affected by `catch`. + with pytest.raises(NotImplementedError): + study.optimize( + lambda t: t.suggest_int("x", 0, 10), n_trials=n_trials, catch=(NotImplementedError,) + ) + + assert len(study.trials) == 1 + assert n_calls == 2 + + +def test_after_trial_with_study_tell() -> None: + n_calls = 0 + + class SamplerAfterTrial(optuna.samplers.RandomSampler): + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + nonlocal n_calls + n_calls += 1 + + sampler = SamplerAfterTrial() + study = optuna.create_study(sampler=sampler) + + assert n_calls == 0 + + study.tell(study.ask(), 1.0) + + assert n_calls == 1 + + +@parametrize_sampler +def test_sample_single_distribution(sampler_class: Callable[[], BaseSampler]) -> None: + relative_search_space = { + "a": CategoricalDistribution([1]), + "b": IntDistribution(low=1, high=1), + "c": IntDistribution(low=1, high=1, log=True), + "d": FloatDistribution(low=1.0, high=1.0), + "e": FloatDistribution(low=1.0, high=1.0, log=True), + "f": FloatDistribution(low=1.0, high=1.0, step=1.0), + } + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) + sampler = sampler_class() + study = optuna.study.create_study(sampler=sampler) + + # We need to test the construction of the model, so we should set `n_trials >= 2`. + for _ in range(2): + trial = study.ask(fixed_distributions=relative_search_space) + study.tell(trial, 1.0) + for param_name in relative_search_space.keys(): + assert trial.params[param_name] == 1 + + +@parametrize_sampler +@parametrize_suggest_method("x") +def test_single_parameter_objective( + sampler_class: Callable[[], BaseSampler], suggest_method_x: Callable[[Trial], float] +) -> None: + def objective(trial: Trial) -> float: + return suggest_method_x(trial) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) + sampler = sampler_class() + + study = optuna.study.create_study(sampler=sampler) + study.optimize(objective, n_trials=10) + + assert len(study.trials) == 10 + assert all(t.state == TrialState.COMPLETE for t in study.trials) + + +@parametrize_sampler +def test_conditional_parameter_objective(sampler_class: Callable[[], BaseSampler]) -> None: + def objective(trial: Trial) -> float: + x = trial.suggest_categorical("x", [True, False]) + if x: + return trial.suggest_float("y", 0, 1) + return trial.suggest_float("z", 0, 1) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) + sampler = sampler_class() + + study = optuna.study.create_study(sampler=sampler) + study.optimize(objective, n_trials=10) + + assert len(study.trials) == 10 + assert all(t.state == TrialState.COMPLETE for t in study.trials) + + +@parametrize_sampler +@parametrize_suggest_method("x") +@parametrize_suggest_method("y") +def test_combination_of_different_distributions_objective( + sampler_class: Callable[[], BaseSampler], + suggest_method_x: Callable[[Trial], float], + suggest_method_y: Callable[[Trial], float], +) -> None: + def objective(trial: Trial) -> float: + return suggest_method_x(trial) + suggest_method_y(trial) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) + sampler = sampler_class() + + study = optuna.study.create_study(sampler=sampler) + study.optimize(objective, n_trials=3) + + assert len(study.trials) == 3 + assert all(t.state == TrialState.COMPLETE for t in study.trials) + + +@parametrize_sampler +@pytest.mark.parametrize( + "second_low,second_high", + [ + (0, 5), # Narrow range. + (0, 20), # Expand range. + (20, 30), # Set non-overlapping range. + ], +) +def test_dynamic_range_objective( + sampler_class: Callable[[], BaseSampler], second_low: int, second_high: int +) -> None: + def objective(trial: Trial, low: int, high: int) -> float: + v = trial.suggest_float("x", low, high) + v += trial.suggest_int("y", low, high) + return v + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) + sampler = sampler_class() + + study = optuna.study.create_study(sampler=sampler) + study.optimize(lambda t: objective(t, 0, 10), n_trials=10) + study.optimize(lambda t: objective(t, second_low, second_high), n_trials=10) + + assert len(study.trials) == 20 + assert all(t.state == TrialState.COMPLETE for t in study.trials) + + +# We add tests for constant objective functions to ensure the reproducibility of sorting. +@parametrize_sampler_with_seed +@pytest.mark.slow +@pytest.mark.parametrize("objective_func", [lambda *args: sum(args), lambda *args: 0.0]) +def test_reproducible(sampler_class: Callable[[int], BaseSampler], objective_func: Any) -> None: + def objective(trial: Trial) -> float: + a = trial.suggest_float("a", 1, 9) + b = trial.suggest_float("b", 1, 9, log=True) + c = trial.suggest_float("c", 1, 9, step=1) + d = trial.suggest_int("d", 1, 9) + e = trial.suggest_int("e", 1, 9, log=True) + f = trial.suggest_int("f", 1, 9, step=2) + g = trial.suggest_categorical("g", range(1, 10)) + return objective_func(a, b, c, d, e, f, g) + + study = optuna.create_study(sampler=sampler_class(1)) + study.optimize(objective, n_trials=15) + + study_same_seed = optuna.create_study(sampler=sampler_class(1)) + study_same_seed.optimize(objective, n_trials=15) + for i in range(15): + assert study.trials[i].params == study_same_seed.trials[i].params + + study_different_seed = optuna.create_study(sampler=sampler_class(2)) + study_different_seed.optimize(objective, n_trials=15) + assert any( + [study.trials[i].params != study_different_seed.trials[i].params for i in range(15)] + ) + + +@pytest.mark.slow +@parametrize_sampler_with_seed +def test_reseed_rng_change_sampling(sampler_class: Callable[[int], BaseSampler]) -> None: + def objective(trial: Trial) -> float: + a = trial.suggest_float("a", 1, 9) + b = trial.suggest_float("b", 1, 9, log=True) + c = trial.suggest_float("c", 1, 9, step=1) + d = trial.suggest_int("d", 1, 9) + e = trial.suggest_int("e", 1, 9, log=True) + f = trial.suggest_int("f", 1, 9, step=2) + g = trial.suggest_categorical("g", range(1, 10)) + return a + b + c + d + e + f + g + + sampler = sampler_class(1) + study = optuna.create_study(sampler=sampler) + study.optimize(objective, n_trials=15) + + sampler_different_seed = sampler_class(1) + sampler_different_seed.reseed_rng() + study_different_seed = optuna.create_study(sampler=sampler_different_seed) + study_different_seed.optimize(objective, n_trials=15) + assert any( + [study.trials[i].params != study_different_seed.trials[i].params for i in range(15)] + ) + + +# This function is used only in test_reproducible_in_other_process, but declared at top-level +# because local function cannot be pickled, which occurs within multiprocessing. +def run_optimize( + k: int, + sampler_name: str, + sequence_dict: DictProxy, + hash_dict: DictProxy, +) -> None: + def objective(trial: Trial) -> float: + a = trial.suggest_float("a", 1, 9) + b = trial.suggest_float("b", 1, 9, log=True) + c = trial.suggest_float("c", 1, 9, step=1) + d = trial.suggest_int("d", 1, 9) + e = trial.suggest_int("e", 1, 9, log=True) + f = trial.suggest_int("f", 1, 9, step=2) + g = trial.suggest_categorical("g", range(1, 10)) + return a + b + c + d + e + f + g + + hash_dict[k] = hash("nondeterministic hash") + sampler = sampler_class_with_seed[sampler_name](1) + study = optuna.create_study(sampler=sampler) + study.optimize(objective, n_trials=15) + sequence_dict[k] = list(study.trials[-1].params.values()) + + +@pytest.fixture +def unset_seed_in_test(request: SubRequest) -> None: + # Unset the hashseed at beginning and restore it at end regardless of an exception in the test. + # See https://docs.pytest.org/en/stable/how-to/fixtures.html#adding-finalizers-directly + # for details. + + hash_seed = os.getenv("PYTHONHASHSEED") + if hash_seed is not None: + del os.environ["PYTHONHASHSEED"] + + def restore_seed() -> None: + if hash_seed is not None: + os.environ["PYTHONHASHSEED"] = hash_seed + + request.addfinalizer(restore_seed) + + +@pytest.mark.slow +@parametrize_sampler_name_with_seed +def test_reproducible_in_other_process(sampler_name: str, unset_seed_in_test: None) -> None: + # This test should be tested without `PYTHONHASHSEED`. However, some tool such as tox + # set the environmental variable "PYTHONHASHSEED" by default. + # To do so, this test calls a finalizer: `unset_seed_in_test`. + + # Multiprocessing supports three way to start a process. + # We use `spawn` option to create a child process as a fresh python process. + # For more detail, see https://github.com/optuna/optuna/pull/3187#issuecomment-997673037. + multiprocessing.set_start_method("spawn", force=True) + manager = multiprocessing.Manager() + sequence_dict: DictProxy = manager.dict() + hash_dict: DictProxy = manager.dict() + for i in range(3): + p = multiprocessing.Process( + target=run_optimize, args=(i, sampler_name, sequence_dict, hash_dict) + ) + p.start() + p.join() + + # Hashes are expected to be different because string hashing is nondeterministic per process. + assert not (hash_dict[0] == hash_dict[1] == hash_dict[2]) + # But the sequences are expected to be the same. + assert sequence_dict[0] == sequence_dict[1] == sequence_dict[2] + + +@pytest.mark.parametrize("n_jobs", [1, 2]) +@parametrize_relative_sampler +def test_cache_is_invalidated( + n_jobs: int, relative_sampler_class: Callable[[], BaseSampler] +) -> None: + sampler = relative_sampler_class() + study = optuna.study.create_study(sampler=sampler) + + def objective(trial: Trial) -> float: + assert trial._relative_params is None + assert study._thread_local.cached_all_trials is None + + trial.suggest_float("x", -10, 10) + trial.suggest_float("y", -10, 10) + assert trial._relative_params is not None + return -1 + + study.optimize(objective, n_trials=10, n_jobs=n_jobs) From 8c4346a68e479ac8ee6ff4612a653c3673219d50 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Fri, 25 Oct 2024 07:54:15 +0200 Subject: [PATCH 35/51] Fix unittests so that everything passes --- .../auto_sampler/tests/test_sampler.py | 385 +----------------- 1 file changed, 20 insertions(+), 365 deletions(-) diff --git a/package/samplers/auto_sampler/tests/test_sampler.py b/package/samplers/auto_sampler/tests/test_sampler.py index b0f8dbeb..039c8fc8 100644 --- a/package/samplers/auto_sampler/tests/test_sampler.py +++ b/package/samplers/auto_sampler/tests/test_sampler.py @@ -5,9 +5,7 @@ import multiprocessing from multiprocessing.managers import DictProxy import os -import pickle from typing import Any -from unittest.mock import patch import warnings from _pytest.fixtures import SubRequest @@ -20,78 +18,29 @@ from optuna.distributions import FloatDistribution from optuna.distributions import IntDistribution from optuna.samplers import BaseSampler -from optuna.samplers._lazy_random_state import LazyRandomState from optuna.study import Study -from optuna.testing.objectives import fail_objective -from optuna.testing.objectives import pruned_objective from optuna.trial import FrozenTrial from optuna.trial import Trial from optuna.trial import TrialState +import optunahub import pytest # NOTE(nabenabe): This file content is mostly copied from the Optuna repository. +AutoSampler = optunahub.load_local_module( + package="samplers/auto_sampler", registry_root="package/" +).AutoSampler -def get_gp_sampler( - *, n_startup_trials: int = 0, deterministic_objective: bool = False, seed: int | None = None -) -> optuna.samplers.GPSampler: - return optuna.samplers.GPSampler( - n_startup_trials=n_startup_trials, - seed=seed, - deterministic_objective=deterministic_objective, - ) - - -parametrize_sampler = pytest.mark.parametrize( - "sampler_class", - [ - optuna.samplers.RandomSampler, - lambda: optuna.samplers.TPESampler(n_startup_trials=0), - lambda: optuna.samplers.TPESampler(n_startup_trials=0, multivariate=True), - lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), - lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0, use_separable_cma=True), - optuna.samplers.NSGAIISampler, - optuna.samplers.NSGAIIISampler, - optuna.samplers.QMCSampler, - lambda: get_gp_sampler(n_startup_trials=0), - lambda: get_gp_sampler(n_startup_trials=0, deterministic_objective=True), - ], -) -parametrize_relative_sampler = pytest.mark.parametrize( - "relative_sampler_class", - [ - lambda: optuna.samplers.TPESampler(n_startup_trials=0, multivariate=True), - lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), - lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0, use_separable_cma=True), - lambda: get_gp_sampler(n_startup_trials=0), - lambda: get_gp_sampler(n_startup_trials=0, deterministic_objective=True), - ], -) +parametrize_sampler = pytest.mark.parametrize("sampler_class", [AutoSampler]) +parametrize_relative_sampler = pytest.mark.parametrize("relative_sampler_class", [AutoSampler]) parametrize_multi_objective_sampler = pytest.mark.parametrize( - "multi_objective_sampler_class", - [ - optuna.samplers.NSGAIISampler, - optuna.samplers.NSGAIIISampler, - lambda: optuna.samplers.TPESampler(n_startup_trials=0), - ], + "multi_objective_sampler_class", [AutoSampler] ) sampler_class_with_seed: dict[str, Callable[[int], BaseSampler]] = { - "RandomSampler": lambda seed: optuna.samplers.RandomSampler(seed=seed), - "TPESampler": lambda seed: optuna.samplers.TPESampler(seed=seed), - "multivariate TPESampler": lambda seed: optuna.samplers.TPESampler( - multivariate=True, seed=seed - ), - "CmaEsSampler": lambda seed: optuna.samplers.CmaEsSampler(seed=seed), - "separable CmaEsSampler": lambda seed: optuna.samplers.CmaEsSampler( - seed=seed, use_separable_cma=True - ), - "NSGAIISampler": lambda seed: optuna.samplers.NSGAIISampler(seed=seed), - "NSGAIIISampler": lambda seed: optuna.samplers.NSGAIIISampler(seed=seed), - "QMCSampler": lambda seed: optuna.samplers.QMCSampler(seed=seed), - "GPSampler": lambda seed: get_gp_sampler(seed=seed, n_startup_trials=0), + "AutoSampler": lambda seed: AutoSampler(seed=seed) } param_sampler_with_seed = [] param_sampler_name_with_seed = [] @@ -104,26 +53,10 @@ def get_gp_sampler( ) +""" @pytest.mark.parametrize( - "sampler_class,expected_has_rng,expected_has_another_sampler", - [ - (optuna.samplers.RandomSampler, True, False), - (lambda: optuna.samplers.TPESampler(n_startup_trials=0), True, True), - (lambda: optuna.samplers.TPESampler(n_startup_trials=0, multivariate=True), True, True), - (lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), True, True), - (optuna.samplers.NSGAIISampler, True, True), - (optuna.samplers.NSGAIIISampler, True, True), - ( - lambda: optuna.samplers.PartialFixedSampler( - fixed_params={"x": 0}, base_sampler=optuna.samplers.RandomSampler() - ), - False, - True, - ), - (lambda: optuna.samplers.GridSampler(search_space={"x": [0]}), True, False), - (lambda: optuna.samplers.QMCSampler(), False, True), - (lambda: get_gp_sampler(n_startup_trials=0), True, True), - ], + # TODO: 知らん + "sampler_class,expected_has_rng,expected_has_another_sampler", [(AutoSampler, ..., ...)] ) def test_sampler_reseed_rng( sampler_class: Callable[[], BaseSampler], @@ -174,6 +107,7 @@ def _extract_attr_name_from_sampler_by_cls(sampler: BaseSampler, cls: Any) -> st had_sampler = sampler.__dict__[had_sampler_name] had_sampler_random_state = had_sampler.__dict__[had_sampler_rng_name].rng.get_state() assert str(original_had_sampler_random_state) != str(had_sampler_random_state) +""" def parametrize_suggest_method(name: str) -> MarkDecorator: @@ -190,33 +124,10 @@ def parametrize_suggest_method(name: str) -> MarkDecorator: ) -@pytest.mark.parametrize( - "sampler_class", - [ - lambda: optuna.samplers.CmaEsSampler(n_startup_trials=0), - ], -) -def test_raise_error_for_samplers_during_multi_objectives( - sampler_class: Callable[[], BaseSampler], -) -> None: - study = optuna.study.create_study(directions=["maximize", "maximize"], sampler=sampler_class()) - - distribution = FloatDistribution(0.0, 1.0) - with pytest.raises(ValueError): - study.sampler.sample_independent(study, _create_new_trial(study), "x", distribution) - - with pytest.raises(ValueError): - trial = _create_new_trial(study) - study.sampler.sample_relative( - study, trial, study.sampler.infer_relative_search_space(study, trial) - ) - - -@pytest.mark.parametrize("seed", [0, 169208]) -def test_pickle_random_sampler(seed: int) -> None: - sampler = optuna.samplers.RandomSampler(seed) - restored_sampler = pickle.loads(pickle.dumps(sampler)) - assert sampler._rng.rng.bytes(10) == restored_sampler._rng.rng.bytes(10) +def _choose_sampler_in_auto_sampler_and_set_n_startup_trials_to_zero(study: optuna.Study) -> None: + # NOTE(nabenabe): Choose a sampler inside AutoSampler. + study.sampler.before_trial(study, trial=_create_new_trial(study)) + study.sampler._sampler._n_startup_trials = 0 @parametrize_sampler @@ -231,10 +142,7 @@ def test_pickle_random_sampler(seed: int) -> None: FloatDistribution(-10.2, 10.2, step=0.1), ], ) -def test_float( - sampler_class: Callable[[], BaseSampler], - distribution: FloatDistribution, -) -> None: +def test_float(sampler_class: Callable[[], BaseSampler], distribution: FloatDistribution) -> None: study = optuna.study.create_study(sampler=sampler_class()) points = np.array( [ @@ -341,6 +249,7 @@ def test_sample_relative_numerical( study = optuna.study.create_study(sampler=relative_sampler_class()) trial = study.ask(search_space) study.tell(trial, sum(trial.params.values())) + _choose_sampler_in_auto_sampler_and_set_n_startup_trials_to_zero(study) def sample() -> list[int | float]: params = study.sampler.sample_relative(study, _create_new_trial(study), search_space) @@ -374,6 +283,7 @@ def test_sample_relative_categorical(relative_sampler_class: Callable[[], BaseSa study = optuna.study.create_study(sampler=relative_sampler_class()) trial = study.ask(search_space) study.tell(trial, sum(trial.params.values())) + _choose_sampler_in_auto_sampler_and_set_n_startup_trials_to_zero(study) def sample() -> list[float]: params = study.sampler.sample_relative(study, _create_new_trial(study), search_space) @@ -409,6 +319,7 @@ def test_sample_relative_mixed( study = optuna.study.create_study(sampler=relative_sampler_class()) trial = study.ask(search_space) study.tell(trial, sum(trial.params.values())) + _choose_sampler_in_auto_sampler_and_set_n_startup_trials_to_zero(study) def sample() -> list[float]: params = study.sampler.sample_relative(study, _create_new_trial(study), search_space) @@ -480,69 +391,6 @@ def _create_new_trial(study: Study) -> FrozenTrial: return study._storage.get_trial(trial_id) -class FixedSampler(BaseSampler): - def __init__( - self, - relative_search_space: dict[str, BaseDistribution], - relative_params: dict[str, Any], - unknown_param_value: Any, - ) -> None: - self.relative_search_space = relative_search_space - self.relative_params = relative_params - self.unknown_param_value = unknown_param_value - - def infer_relative_search_space( - self, study: Study, trial: FrozenTrial - ) -> dict[str, BaseDistribution]: - return self.relative_search_space - - def sample_relative( - self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] - ) -> dict[str, Any]: - return self.relative_params - - def sample_independent( - self, - study: Study, - trial: FrozenTrial, - param_name: str, - param_distribution: BaseDistribution, - ) -> Any: - return self.unknown_param_value - - -def test_sample_relative() -> None: - relative_search_space: dict[str, BaseDistribution] = { - "a": FloatDistribution(low=0, high=5), - "b": CategoricalDistribution(choices=("foo", "bar", "baz")), - "c": IntDistribution(low=20, high=50), # Not exist in `relative_params`. - } - relative_params = { - "a": 3.2, - "b": "baz", - } - unknown_param_value = 30 - - sampler = FixedSampler(relative_search_space, relative_params, unknown_param_value) - study = optuna.study.create_study(sampler=sampler) - - def objective(trial: Trial) -> float: - # Predefined parameters are sampled by `sample_relative()` method. - assert trial.suggest_float("a", 0, 5) == 3.2 - assert trial.suggest_categorical("b", ["foo", "bar", "baz"]) == "baz" - - # Other parameters are sampled by `sample_independent()` method. - assert trial.suggest_int("c", 20, 50) == unknown_param_value - assert trial.suggest_float("d", 1, 100, log=True) == unknown_param_value - assert trial.suggest_float("e", 20, 40) == unknown_param_value - - return 0.0 - - study.optimize(objective, n_trials=10, catch=()) - for trial in study.trials: - assert trial.params == {"a": 3.2, "b": "baz", "c": 30, "d": 30, "e": 30} - - @parametrize_sampler def test_nan_objective_value(sampler_class: Callable[[], BaseSampler]) -> None: study = optuna.create_study(sampler=sampler_class()) @@ -564,29 +412,6 @@ def objective(trial: Trial, base_value: float) -> float: assert int(study.best_value) == 1 -@parametrize_sampler -def test_partial_fixed_sampling(sampler_class: Callable[[], BaseSampler]) -> None: - study = optuna.create_study(sampler=sampler_class()) - - def objective(trial: Trial) -> float: - x = trial.suggest_float("x", -1, 1) - y = trial.suggest_int("y", -1, 1) - z = trial.suggest_float("z", -1, 1) - return x + y + z - - # First trial. - study.optimize(objective, n_trials=1) - - # Second trial. Here, the parameter ``y`` is fixed as 0. - fixed_params = {"y": 0} - with warnings.catch_warnings(): - warnings.simplefilter("ignore", optuna.exceptions.ExperimentalWarning) - study.sampler = optuna.samplers.PartialFixedSampler(fixed_params, study.sampler) - study.optimize(objective, n_trials=1) - trial_params = study.trials[-1].params - assert trial_params["y"] == fixed_params["y"] - - @parametrize_multi_objective_sampler @pytest.mark.parametrize( "distribution", @@ -635,176 +460,6 @@ def test_multi_objective_sample_independent( np.testing.assert_almost_equal(round_value, value) -def test_before_trial() -> None: - n_calls = 0 - n_trials = 3 - - class SamplerBeforeTrial(optuna.samplers.RandomSampler): - def before_trial(self, study: Study, trial: FrozenTrial) -> None: - assert len(study.trials) - 1 == trial.number - assert trial.state == TrialState.RUNNING - assert trial.values is None - nonlocal n_calls - n_calls += 1 - - sampler = SamplerBeforeTrial() - study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) - - study.optimize( - lambda t: [t.suggest_float("y", -3, 3), t.suggest_int("x", 0, 10)], n_trials=n_trials - ) - assert n_calls == n_trials - - -def test_after_trial() -> None: - n_calls = 0 - n_trials = 3 - - class SamplerAfterTrial(optuna.samplers.RandomSampler): - def after_trial( - self, - study: Study, - trial: FrozenTrial, - state: TrialState, - values: Sequence[float] | None, - ) -> None: - assert len(study.trials) - 1 == trial.number - assert trial.state == TrialState.RUNNING - assert trial.values is None - assert state == TrialState.COMPLETE - assert values is not None - assert len(values) == 2 - nonlocal n_calls - n_calls += 1 - - sampler = SamplerAfterTrial() - study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) - - study.optimize(lambda t: [t.suggest_float("y", -3, 3), t.suggest_int("x", 0, 10)], n_trials=3) - - assert n_calls == n_trials - - -def test_after_trial_pruning() -> None: - n_calls = 0 - n_trials = 3 - - class SamplerAfterTrial(optuna.samplers.RandomSampler): - def after_trial( - self, - study: Study, - trial: FrozenTrial, - state: TrialState, - values: Sequence[float] | None, - ) -> None: - assert len(study.trials) - 1 == trial.number - assert trial.state == TrialState.RUNNING - assert trial.values is None - assert state == TrialState.PRUNED - assert values is None - nonlocal n_calls - n_calls += 1 - - sampler = SamplerAfterTrial() - study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) - - study.optimize(pruned_objective, n_trials=n_trials) - - assert n_calls == n_trials - - -def test_after_trial_failing() -> None: - n_calls = 0 - n_trials = 3 - - class SamplerAfterTrial(optuna.samplers.RandomSampler): - def after_trial( - self, - study: Study, - trial: FrozenTrial, - state: TrialState, - values: Sequence[float] | None, - ) -> None: - assert len(study.trials) - 1 == trial.number - assert trial.state == TrialState.RUNNING - assert trial.values is None - assert state == TrialState.FAIL - assert values is None - nonlocal n_calls - n_calls += 1 - - sampler = SamplerAfterTrial() - study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler) - - with pytest.raises(ValueError): - study.optimize(fail_objective, n_trials=n_trials) - - # Called once after the first failing trial before returning from optimize. - assert n_calls == 1 - - -def test_after_trial_failing_in_after_trial() -> None: - n_calls = 0 - n_trials = 3 - - class SamplerAfterTrialAlwaysFail(optuna.samplers.RandomSampler): - def after_trial( - self, - study: Study, - trial: FrozenTrial, - state: TrialState, - values: Sequence[float] | None, - ) -> None: - nonlocal n_calls - n_calls += 1 - raise NotImplementedError # Arbitrary error for testing purpose. - - sampler = SamplerAfterTrialAlwaysFail() - study = optuna.create_study(sampler=sampler) - - with pytest.raises(NotImplementedError): - study.optimize(lambda t: t.suggest_int("x", 0, 10), n_trials=n_trials) - - assert len(study.trials) == 1 - assert n_calls == 1 - - sampler = SamplerAfterTrialAlwaysFail() - study = optuna.create_study(sampler=sampler) - - # Not affected by `catch`. - with pytest.raises(NotImplementedError): - study.optimize( - lambda t: t.suggest_int("x", 0, 10), n_trials=n_trials, catch=(NotImplementedError,) - ) - - assert len(study.trials) == 1 - assert n_calls == 2 - - -def test_after_trial_with_study_tell() -> None: - n_calls = 0 - - class SamplerAfterTrial(optuna.samplers.RandomSampler): - def after_trial( - self, - study: Study, - trial: FrozenTrial, - state: TrialState, - values: Sequence[float] | None, - ) -> None: - nonlocal n_calls - n_calls += 1 - - sampler = SamplerAfterTrial() - study = optuna.create_study(sampler=sampler) - - assert n_calls == 0 - - study.tell(study.ask(), 1.0) - - assert n_calls == 1 - - @parametrize_sampler def test_sample_single_distribution(sampler_class: Callable[[], BaseSampler]) -> None: relative_search_space = { From 5304f9dcafde28bf54be77051e4e3b75e119d09b Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 03:49:15 +0100 Subject: [PATCH 36/51] Apply c-bata's comments --- package/samplers/auto_sampler/sampler.py | 25 +++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/sampler.py index b52a4eb8..c0ab815e 100644 --- a/package/samplers/auto_sampler/sampler.py +++ b/package/samplers/auto_sampler/sampler.py @@ -26,8 +26,8 @@ from optuna.trial import FrozenTrial -MAXINT32 = (1 << 31) - 1 -SAMPLER_KEY = "auto:sampler" +_MAXINT32 = (1 << 31) - 1 +_SAMPLER_KEY = "auto:sampler" _logger = get_logger(f"optuna.{__name__}") @@ -87,7 +87,7 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: self._rng = LazyRandomState(seed) - seed_for_random_sampler = self._rng.rng.randint(MAXINT32) + seed_for_random_sampler = self._rng.rng.randint(_MAXINT32) sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) self._thread_local_sampler = _ThreadLocalSampler(sampler) self._constraints_func = constraints_func @@ -105,7 +105,9 @@ def reseed_rng(self) -> None: self._sampler.reseed_rng() def _include_conditional_param(self, study: Study) -> bool: - trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE, TrialState.PRUNED)) + trials = study._get_trials( + deepcopy=False, states=(TrialState.COMPLETE, TrialState.PRUNED), use_cache=True + ) if len(trials) == 0: return False @@ -118,7 +120,7 @@ def _determine_multi_objective_sampler( if isinstance(self._sampler, NSGAIISampler): return self._sampler - seed = self._rng.rng.randint(MAXINT32) + seed = self._rng.rng.randint(_MAXINT32) return NSGAIISampler(constraints_func=self._constraints_func, seed=seed) def _determine_single_objective_sampler( @@ -127,7 +129,7 @@ def _determine_single_objective_sampler( if isinstance(self._sampler, TPESampler): return self._sampler - seed = self._rng.rng.randint(MAXINT32) + seed = self._rng.rng.randint(_MAXINT32) if ( self._constraints_func is not None or any(isinstance(d, CategoricalDistribution) for d in search_space.values()) @@ -144,7 +146,9 @@ def _determine_single_objective_sampler( constant_liar=True, ) - complete_trials = study.get_trials(deepcopy=False, states=(TrialState.COMPLETE,)) + complete_trials = study._get_trials( + deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True + ) complete_trials.sort(key=lambda trial: trial.datetime_complete) if len(complete_trials) < self._N_COMPLETE_TRIALS_FOR_CMAES: # Use ``GPSampler`` if search space is numerical and @@ -195,13 +199,16 @@ def before_trial(self, study: Study, trial: FrozenTrial) -> None: # NOTE(nabenabe): Sampler must be updated in this method. If, for example, it is updated in # infer_relative_search_space, the sampler for before_trial and that for sample_relative, # after_trial might be different, meaning that the sampling routine could be incompatible. - if len(study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,))) != 0: + if ( + len(study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True)) + != 0 + ): search_space = IntersectionSearchSpace().calculate(study) self._sampler = self._determine_sampler(study, trial, search_space) sampler_name = self._sampler.__class__.__name__ _logger.debug(f"Sample trial#{trial.number} with {sampler_name}.") - study._storage.set_trial_system_attr(trial._trial_id, SAMPLER_KEY, sampler_name) + study._storage.set_trial_system_attr(trial._trial_id, _SAMPLER_KEY, sampler_name) self._sampler.before_trial(study, trial) def after_trial( From 3d4dd5ee287b33907899bf3ccfbdbae9abc4d075 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 05:04:16 +0100 Subject: [PATCH 37/51] Enable cache --- package/samplers/auto_sampler/tests/test_sampler.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/tests/test_sampler.py b/package/samplers/auto_sampler/tests/test_sampler.py index 039c8fc8..470c47e4 100644 --- a/package/samplers/auto_sampler/tests/test_sampler.py +++ b/package/samplers/auto_sampler/tests/test_sampler.py @@ -6,6 +6,7 @@ from multiprocessing.managers import DictProxy import os from typing import Any +from unittest.mock import Mock import warnings from _pytest.fixtures import SubRequest @@ -704,11 +705,17 @@ def test_cache_is_invalidated( n_jobs: int, relative_sampler_class: Callable[[], BaseSampler] ) -> None: sampler = relative_sampler_class() + original_before_trial = sampler.before_trial + + def mock_before_trial(study: Study, trial: FrozenTrial) -> None: + assert study._thread_local.cached_all_trials is None + original_before_trial(study, trial) + + sampler.before_trial = Mock(side_effect=mock_before_trial) study = optuna.study.create_study(sampler=sampler) def objective(trial: Trial) -> float: assert trial._relative_params is None - assert study._thread_local.cached_all_trials is None trial.suggest_float("x", -10, 10) trial.suggest_float("y", -10, 10) From 7bd35d1ce89dcc5f60e0a738ab38dccfc6af1ce0 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 05:06:49 +0100 Subject: [PATCH 38/51] Apply c-bata's comment --- package/samplers/auto_sampler/__init__.py | 2 +- package/samplers/auto_sampler/{sampler.py => _sampler.py} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename package/samplers/auto_sampler/{sampler.py => _sampler.py} (100%) diff --git a/package/samplers/auto_sampler/__init__.py b/package/samplers/auto_sampler/__init__.py index b74f25a5..fbe3b9f9 100644 --- a/package/samplers/auto_sampler/__init__.py +++ b/package/samplers/auto_sampler/__init__.py @@ -1,4 +1,4 @@ -from .sampler import AutoSampler +from ._sampler import AutoSampler __all__ = ["AutoSampler"] diff --git a/package/samplers/auto_sampler/sampler.py b/package/samplers/auto_sampler/_sampler.py similarity index 100% rename from package/samplers/auto_sampler/sampler.py rename to package/samplers/auto_sampler/_sampler.py From c2be1351ef54b038bfccb7c0a41f307c264ca435 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 05:09:40 +0100 Subject: [PATCH 39/51] Apply c-bata's comment --- package/samplers/auto_sampler/_sampler.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index c0ab815e..dc997956 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -32,9 +32,7 @@ class _ThreadLocalSampler(threading.local): - def __init__(self, sampler: BaseSampler) -> None: - self._sampler = sampler - super().__init__() + _sampler: BaseSampler | None = None class AutoSampler(BaseSampler): @@ -89,11 +87,13 @@ def __init__( self._rng = LazyRandomState(seed) seed_for_random_sampler = self._rng.rng.randint(_MAXINT32) sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) - self._thread_local_sampler = _ThreadLocalSampler(sampler) + self._thread_local_sampler = _ThreadLocalSampler() + self._thread_local_sampler._sampler = sampler self._constraints_func = constraints_func @property def _sampler(self) -> BaseSampler: + assert self._sampler is not None return self._thread_local_sampler._sampler @_sampler.setter From 9a4d0d9114ea204dc6760db98d6f8e6b02693a06 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 07:08:02 +0100 Subject: [PATCH 40/51] Fix local thread and its tests --- package/samplers/auto_sampler/_sampler.py | 11 +++++++---- .../samplers/auto_sampler/tests/test_auto_sampler.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index dc997956..9fa4115a 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -85,15 +85,18 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: self._rng = LazyRandomState(seed) - seed_for_random_sampler = self._rng.rng.randint(_MAXINT32) - sampler: BaseSampler = RandomSampler(seed=seed_for_random_sampler) self._thread_local_sampler = _ThreadLocalSampler() - self._thread_local_sampler._sampler = sampler self._constraints_func = constraints_func @property def _sampler(self) -> BaseSampler: - assert self._sampler is not None + if self._thread_local_sampler._sampler is None: + # NOTE(nabenabe): Do not do this process in the __init__ method because the + # substitution at the init does not update attributes in self._thread_local_sampler + # in each thread. + seed_for_random_sampler = self._rng.rng.randint(_MAXINT32) + self._sampler = RandomSampler(seed=seed_for_random_sampler) + return self._thread_local_sampler._sampler @_sampler.setter diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index 0eab42b8..b765ae2a 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -135,3 +135,15 @@ def test_choose_tpe_with_conditional_params() -> None: assert ["RandomSampler"] + ["GPSampler"] * 15 + ["TPESampler"] * ( n_trials - 16 ) == sampler_names + + +def test_multi_thread() -> None: + n_trials = 30 + auto_sampler = AutoSampler() + auto_sampler._N_COMPLETE_TRIALS_FOR_CMAES = 10 + study = optuna.create_study(sampler=auto_sampler) + study.optimize(objective, n_trials=n_trials) + sampler_names = _get_used_sampler_names(study) + assert "RandomSampler" in sampler_names + assert "GPSampler" in sampler_names + assert "CmaEsSampler" in sampler_names From b8c45886185694ace8ecb5d46f9afd6701e6cc46 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 07:10:38 +0100 Subject: [PATCH 41/51] Remove algo description --- package/samplers/auto_sampler/README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 11399bb4..1d726e74 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -56,9 +56,3 @@ pip install pytest ```python python -m pytest package/samplers/auto_sampler/tests/test_auto_sampler.py ``` - -## Others - -### Algorithm Switch Heurtistic in AutoSampler - -TODO From a2a1896eda091c78fd3628dd29ebe5dfa7dc3832 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 08:22:20 +0100 Subject: [PATCH 42/51] Add ref of test --- .../auto_sampler/tests/test_sampler.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/package/samplers/auto_sampler/tests/test_sampler.py b/package/samplers/auto_sampler/tests/test_sampler.py index 470c47e4..de9e6f46 100644 --- a/package/samplers/auto_sampler/tests/test_sampler.py +++ b/package/samplers/auto_sampler/tests/test_sampler.py @@ -1,3 +1,26 @@ +"""MIT License + +Copyright (c) 2018 Preferred Networks, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +This file is taken from Optuna (https://github.com/optuna/optuna/blob/master/tests/samplers_tests/test_samplers.py) +and modified to test AutoSampler. +""" + from __future__ import annotations from collections.abc import Callable From d56cbe3637feb01bb34bc6ea54b9ff8b2e77251e Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 08:55:56 +0100 Subject: [PATCH 43/51] Apply not's comment --- package/samplers/auto_sampler/_sampler.py | 7 +++++-- package/samplers/auto_sampler/tests/test_auto_sampler.py | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index 9fa4115a..c555ec19 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -28,6 +28,7 @@ _MAXINT32 = (1 << 31) - 1 _SAMPLER_KEY = "auto:sampler" +# NOTE(nabenabe): The prefix `optuna.` enables us to use the optuna logger externally. _logger = get_logger(f"optuna.{__name__}") @@ -52,7 +53,8 @@ class AutoSampler(BaseSampler): def objective(trial): x = trial.suggest_float("x", -5, 5) - return x**2 + y = trial.suggest_float("y", -5, 5) + return x**2 + y**2 module = optunahub.load_module("samplers/auto_sampler") study = optuna.create_study(sampler=module.AutoSampler()) @@ -120,6 +122,7 @@ def _include_conditional_param(self, study: Study) -> bool: def _determine_multi_objective_sampler( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> BaseSampler: + # TODO(nabenabe): Add more efficient heuristic for MO. if isinstance(self._sampler, NSGAIISampler): return self._sampler @@ -152,7 +155,6 @@ def _determine_single_objective_sampler( complete_trials = study._get_trials( deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True ) - complete_trials.sort(key=lambda trial: trial.datetime_complete) if len(complete_trials) < self._N_COMPLETE_TRIALS_FOR_CMAES: # Use ``GPSampler`` if search space is numerical and # len(complete_trials) < _N_COMPLETE_TRIALS_FOR_CMAES. @@ -162,6 +164,7 @@ def _determine_single_objective_sampler( # Use ``CmaEsSampler`` if search space is numerical and # len(complete_trials) > _N_COMPLETE_TRIALS_FOR_CMAES. # Warm start CMA-ES with the first _N_COMPLETE_TRIALS_FOR_CMAES complete trials. + complete_trials.sort(key=lambda trial: trial.datetime_complete) warm_start_trials = complete_trials[: self._N_COMPLETE_TRIALS_FOR_CMAES] # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index b765ae2a..b5432636 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -6,7 +6,6 @@ # TODO(nabaenabe): Add the CI for this sampler. -# optuna.logging.set_verbosity(optuna.logging.CRITICAL) AutoSampler = optunahub.load_local_module( package="samplers/auto_sampler", registry_root="package/" From 90193ffcd980b214666cabad53c1d05d4ac6327d Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 29 Oct 2024 09:01:14 +0100 Subject: [PATCH 44/51] Apply not's comment --- package/samplers/auto_sampler/_sampler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index c555ec19..daa18160 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -141,7 +141,6 @@ def _determine_single_objective_sampler( or any(isinstance(d, CategoricalDistribution) for d in search_space.values()) or self._include_conditional_param(study) ): - # NOTE(nabenabe): The statement above is always true for Trial#1. # Use ``TPESampler`` if search space includes conditional or categorical parameters. # TBD: group=True? return TPESampler( From d37f6c9e01583f45c81150f30feb57c8f7c1bdc1 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 30 Oct 2024 05:44:05 +0100 Subject: [PATCH 45/51] Apply c-bata's comments --- package/samplers/auto_sampler/README.md | 2 +- package/samplers/auto_sampler/_sampler.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 1d726e74..96bddde9 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -54,5 +54,5 @@ pip install pytest ``` ```python -python -m pytest package/samplers/auto_sampler/tests/test_auto_sampler.py +pytest package/samplers/auto_sampler/tests/ ``` diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index daa18160..85aa971d 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -32,8 +32,8 @@ _logger = get_logger(f"optuna.{__name__}") -class _ThreadLocalSampler(threading.local): - _sampler: BaseSampler | None = None +class ThreadLocalSampler(threading.local): + sampler: BaseSampler | None = None class AutoSampler(BaseSampler): @@ -87,23 +87,23 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ) -> None: self._rng = LazyRandomState(seed) - self._thread_local_sampler = _ThreadLocalSampler() + self._thread_local_sampler = ThreadLocalSampler() self._constraints_func = constraints_func @property def _sampler(self) -> BaseSampler: - if self._thread_local_sampler._sampler is None: + if self._thread_local_sampler.sampler is None: # NOTE(nabenabe): Do not do this process in the __init__ method because the # substitution at the init does not update attributes in self._thread_local_sampler # in each thread. seed_for_random_sampler = self._rng.rng.randint(_MAXINT32) self._sampler = RandomSampler(seed=seed_for_random_sampler) - return self._thread_local_sampler._sampler + return self._thread_local_sampler.sampler @_sampler.setter def _sampler(self, sampler: BaseSampler) -> None: - self._thread_local_sampler._sampler = sampler + self._thread_local_sampler.sampler = sampler def reseed_rng(self) -> None: self._rng.rng.seed() From 13e63a6977b228bbb9c053269ec1a1782a2f39b6 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 30 Oct 2024 06:24:18 +0100 Subject: [PATCH 46/51] Apply c-bata's comments --- .../auto_sampler/tests/test_sampler.py | 57 ------------------- 1 file changed, 57 deletions(-) diff --git a/package/samplers/auto_sampler/tests/test_sampler.py b/package/samplers/auto_sampler/tests/test_sampler.py index de9e6f46..6677d1a8 100644 --- a/package/samplers/auto_sampler/tests/test_sampler.py +++ b/package/samplers/auto_sampler/tests/test_sampler.py @@ -77,63 +77,6 @@ ) -""" -@pytest.mark.parametrize( - # TODO: 知らん - "sampler_class,expected_has_rng,expected_has_another_sampler", [(AutoSampler, ..., ...)] -) -def test_sampler_reseed_rng( - sampler_class: Callable[[], BaseSampler], - expected_has_rng: bool, - expected_has_another_sampler: bool, -) -> None: - def _extract_attr_name_from_sampler_by_cls(sampler: BaseSampler, cls: Any) -> str | None: - for name, attr in sampler.__dict__.items(): - if isinstance(attr, cls): - return name - return None - - sampler = sampler_class() - - rng_name = _extract_attr_name_from_sampler_by_cls(sampler, LazyRandomState) - has_rng = rng_name is not None - assert expected_has_rng == has_rng - if has_rng: - rng_name = str(rng_name) - original_random_state = sampler.__dict__[rng_name].rng.get_state() - sampler.reseed_rng() - random_state = sampler.__dict__[rng_name].rng.get_state() - if not isinstance(sampler, optuna.samplers.CmaEsSampler): - assert str(original_random_state) != str(random_state) - else: - # CmaEsSampler has a RandomState that is not reseed by its reseed_rng method. - assert str(original_random_state) == str(random_state) - - had_sampler_name = _extract_attr_name_from_sampler_by_cls(sampler, BaseSampler) - has_another_sampler = had_sampler_name is not None - assert expected_has_another_sampler == has_another_sampler - - if has_another_sampler: - had_sampler_name = str(had_sampler_name) - had_sampler = sampler.__dict__[had_sampler_name] - had_sampler_rng_name = _extract_attr_name_from_sampler_by_cls(had_sampler, LazyRandomState) - original_had_sampler_random_state = had_sampler.__dict__[ - had_sampler_rng_name - ].rng.get_state() - with patch.object( - had_sampler, - "reseed_rng", - wraps=had_sampler.reseed_rng, - ) as mock_object: - sampler.reseed_rng() - assert mock_object.call_count == 1 - - had_sampler = sampler.__dict__[had_sampler_name] - had_sampler_random_state = had_sampler.__dict__[had_sampler_rng_name].rng.get_state() - assert str(original_had_sampler_random_state) != str(had_sampler_random_state) -""" - - def parametrize_suggest_method(name: str) -> MarkDecorator: return pytest.mark.parametrize( f"suggest_method_{name}", From 396b70344e5541b96194621924e3b5cfbfe373f9 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 31 Oct 2024 05:29:49 +0100 Subject: [PATCH 47/51] Apply ozaki's comment --- .../auto_sampler/tests/test_sampler.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/package/samplers/auto_sampler/tests/test_sampler.py b/package/samplers/auto_sampler/tests/test_sampler.py index 6677d1a8..13b3933a 100644 --- a/package/samplers/auto_sampler/tests/test_sampler.py +++ b/package/samplers/auto_sampler/tests/test_sampler.py @@ -29,7 +29,7 @@ from multiprocessing.managers import DictProxy import os from typing import Any -from unittest.mock import Mock +from unittest.mock import patch import warnings from _pytest.fixtures import SubRequest @@ -677,15 +677,15 @@ def mock_before_trial(study: Study, trial: FrozenTrial) -> None: assert study._thread_local.cached_all_trials is None original_before_trial(study, trial) - sampler.before_trial = Mock(side_effect=mock_before_trial) - study = optuna.study.create_study(sampler=sampler) + with patch.object(sampler, "before_trial", side_effect=mock_before_trial): + study = optuna.study.create_study(sampler=sampler) - def objective(trial: Trial) -> float: - assert trial._relative_params is None + def objective(trial: Trial) -> float: + assert trial._relative_params is None - trial.suggest_float("x", -10, 10) - trial.suggest_float("y", -10, 10) - assert trial._relative_params is not None - return -1 + trial.suggest_float("x", -10, 10) + trial.suggest_float("y", -10, 10) + assert trial._relative_params is not None + return -1 - study.optimize(objective, n_trials=10, n_jobs=n_jobs) + study.optimize(objective, n_trials=10, n_jobs=n_jobs) From a5bc25eca548412c4a42924f9cc22a767e0b63c6 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 31 Oct 2024 05:30:17 +0100 Subject: [PATCH 48/51] Apply not's comment --- package/samplers/auto_sampler/_sampler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index 85aa971d..28e52e4c 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -168,7 +168,7 @@ def _determine_single_objective_sampler( # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for # 1D problems. return CmaEsSampler( - seed=seed, source_trials=warm_start_trials, warn_independent_sampling=False + seed=seed, source_trials=warm_start_trials, warn_independent_sampling=True ) return self._sampler # No update happens to self._sampler. From ea89dd19d12d7b85b848717823b606d9895cb6ed Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 31 Oct 2024 08:44:44 +0100 Subject: [PATCH 49/51] Apply the feedback from the mob review --- package/samplers/auto_sampler/_sampler.py | 27 ++++++++++++------- .../auto_sampler/tests/test_auto_sampler.py | 20 ++++++++++++++ 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/package/samplers/auto_sampler/_sampler.py b/package/samplers/auto_sampler/_sampler.py index 28e52e4c..55669274 100644 --- a/package/samplers/auto_sampler/_sampler.py +++ b/package/samplers/auto_sampler/_sampler.py @@ -159,16 +159,23 @@ def _determine_single_objective_sampler( # len(complete_trials) < _N_COMPLETE_TRIALS_FOR_CMAES. if not isinstance(self._sampler, GPSampler): return GPSampler(seed=seed) - elif not isinstance(self._sampler, CmaEsSampler): - # Use ``CmaEsSampler`` if search space is numerical and - # len(complete_trials) > _N_COMPLETE_TRIALS_FOR_CMAES. - # Warm start CMA-ES with the first _N_COMPLETE_TRIALS_FOR_CMAES complete trials. - complete_trials.sort(key=lambda trial: trial.datetime_complete) - warm_start_trials = complete_trials[: self._N_COMPLETE_TRIALS_FOR_CMAES] - # NOTE(nabenabe): ``CmaEsSampler`` internally falls back to ``RandomSampler`` for - # 1D problems. - return CmaEsSampler( - seed=seed, source_trials=warm_start_trials, warn_independent_sampling=True + elif len(search_space) > 1: + if not isinstance(self._sampler, CmaEsSampler): + # Use ``CmaEsSampler`` if search space is numerical and + # len(complete_trials) > _N_COMPLETE_TRIALS_FOR_CMAES. + # Warm start CMA-ES with the first _N_COMPLETE_TRIALS_FOR_CMAES complete trials. + complete_trials.sort(key=lambda trial: trial.datetime_complete) + warm_start_trials = complete_trials[: self._N_COMPLETE_TRIALS_FOR_CMAES] + return CmaEsSampler( + seed=seed, source_trials=warm_start_trials, warn_independent_sampling=True + ) + else: + return TPESampler( + seed=seed, + multivariate=True, + warn_independent_sampling=False, + constraints_func=self._constraints_func, + constant_liar=True, ) return self._sampler # No update happens to self._sampler. diff --git a/package/samplers/auto_sampler/tests/test_auto_sampler.py b/package/samplers/auto_sampler/tests/test_auto_sampler.py index b5432636..130473cc 100644 --- a/package/samplers/auto_sampler/tests/test_auto_sampler.py +++ b/package/samplers/auto_sampler/tests/test_auto_sampler.py @@ -14,6 +14,11 @@ parametrize_constraints = pytest.mark.parametrize("use_constraint", [True, False]) +def objective_1d(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", -5, 5) + return x**2 + + def objective(trial: optuna.Trial) -> float: x = trial.suggest_float("x", -5, 5) y = trial.suggest_int("y", -5, 5) @@ -105,6 +110,21 @@ def test_choose_cmaes() -> None: ] * n_trials_of_cmaes == sampler_names +def test_choose_tpe_for_1d() -> None: + # This test must be performed with a numerical objective function. + # For 1d problems, TPESampler will be chosen instead of CmaEsSampler. + n_trials_of_tpe = 100 + n_trials_before_tpe = 20 + auto_sampler = AutoSampler() + auto_sampler._N_COMPLETE_TRIALS_FOR_CMAES = n_trials_before_tpe + study = optuna.create_study(sampler=auto_sampler) + study.optimize(objective_1d, n_trials=n_trials_of_tpe + n_trials_before_tpe) + sampler_names = _get_used_sampler_names(study) + assert ["RandomSampler"] + ["GPSampler"] * (n_trials_before_tpe - 1) + [ + "TPESampler" + ] * n_trials_of_tpe == sampler_names + + def test_choose_tpe_in_single_with_constraints() -> None: n_trials = 30 auto_sampler = AutoSampler(constraints_func=constraints_func) From 5660f62340c1d34b4af93546ea61230a94bdcb15 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 31 Oct 2024 08:47:47 +0100 Subject: [PATCH 50/51] Add an Optuna version constraint for GPSampler with n_jobs>1 --- package/samplers/auto_sampler/README.md | 2 +- package/samplers/auto_sampler/requirements.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index 96bddde9..efeefd6f 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -3,7 +3,7 @@ author: Optuna Team title: AutoSampler description: This sampler automatically chooses an appropriate built-in sampler for the provided objective function. tags: [sampler, automatic, automated] -optuna_versions: [4.0.0] +optuna_versions: [4.1.0] license: MIT License --- diff --git a/package/samplers/auto_sampler/requirements.txt b/package/samplers/auto_sampler/requirements.txt index 10fd7a0f..52b403bd 100644 --- a/package/samplers/auto_sampler/requirements.txt +++ b/package/samplers/auto_sampler/requirements.txt @@ -1,3 +1,4 @@ scipy torch cmaes +optuna>=4.1.0 From b0da1943f041e8a8a704821946fd7b391d0b6455 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 31 Oct 2024 08:56:38 +0100 Subject: [PATCH 51/51] Add the note about the Optuna version constraint and remove constraint from requirements --- package/samplers/auto_sampler/README.md | 2 ++ package/samplers/auto_sampler/requirements.txt | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package/samplers/auto_sampler/README.md b/package/samplers/auto_sampler/README.md index efeefd6f..78ffb581 100644 --- a/package/samplers/auto_sampler/README.md +++ b/package/samplers/auto_sampler/README.md @@ -27,6 +27,8 @@ This sampler requires optional dependencies of Optuna. $ pip install optunahub cmaes torch scipy ``` +Note that since we may update the implementation of `AutoSampler`, it is highly encouraged to use the latest version of Optuna. + ## Example ```python diff --git a/package/samplers/auto_sampler/requirements.txt b/package/samplers/auto_sampler/requirements.txt index 52b403bd..10fd7a0f 100644 --- a/package/samplers/auto_sampler/requirements.txt +++ b/package/samplers/auto_sampler/requirements.txt @@ -1,4 +1,3 @@ scipy torch cmaes -optuna>=4.1.0