From 833a58ea2aa01b8b9e88a89111fe7b03e60ad475 Mon Sep 17 00:00:00 2001 From: mamu Date: Mon, 24 Jun 2024 10:49:15 +0900 Subject: [PATCH 1/6] Add PFNs4BO sampler --- package/samplers/pfns4bo/LICENSE | 21 ++ package/samplers/pfns4bo/README.md | 50 ++++ package/samplers/pfns4bo/__init__.py | 4 + package/samplers/pfns4bo/example.py | 22 ++ package/samplers/pfns4bo/requirements.txt | 4 + package/samplers/pfns4bo/sampler.py | 263 ++++++++++++++++++++++ 6 files changed, 364 insertions(+) create mode 100644 package/samplers/pfns4bo/LICENSE create mode 100644 package/samplers/pfns4bo/README.md create mode 100644 package/samplers/pfns4bo/__init__.py create mode 100644 package/samplers/pfns4bo/example.py create mode 100644 package/samplers/pfns4bo/requirements.txt create mode 100644 package/samplers/pfns4bo/sampler.py diff --git a/package/samplers/pfns4bo/LICENSE b/package/samplers/pfns4bo/LICENSE new file mode 100644 index 00000000..a26456de --- /dev/null +++ b/package/samplers/pfns4bo/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Hideaki Imamura + +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/pfns4bo/README.md b/package/samplers/pfns4bo/README.md new file mode 100644 index 00000000..620a8dda --- /dev/null +++ b/package/samplers/pfns4bo/README.md @@ -0,0 +1,50 @@ +--- +author: "HideakiImamura" +title: "PFNs4BO sampler" +description: "In-context learning for Bayesian optimization. This sampler uses Prior-data Fitted Networks (PFNs) as a surrogate model for Bayesian optimization." +tags: ["sampler"] +optuna_versions: ["3.6.1"] +license: "MIT License" +--- + +## Class or Function Names +- PFNs4BOSampler + +## Installation +```bash +pip install -r requirements.txt +``` + +## Example +```python +from __future__ import annotations + +import os + +import optuna +import optunahub + + +module = optunahub.load_module("samplers/pfns4bo") +PFNs4BOSampler = module.PFNs4BOSampler + + +def objective(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", -10, 10) + return (x - 2) ** 2 + + +if __name__ == "__main__": + study = optuna.create_study( + sampler=PFNs4BOSampler(), + ) + study.optimize(objective, n_trials=100) + print(study.best_params) + print(study.best_value) +``` + +## Others + +### Reference + +Samuel Müller, Matthias Feurer, Noah Hollmann, and Frank Hutter. 2023. PFNs4BO: in-context learning for Bayesian optimization. In Proceedings of the 40th International Conference on Machine Learning (ICML'23), Vol. 202. JMLR.org, Article 1056, 25444–25470. diff --git a/package/samplers/pfns4bo/__init__.py b/package/samplers/pfns4bo/__init__.py new file mode 100644 index 00000000..21f30a9f --- /dev/null +++ b/package/samplers/pfns4bo/__init__.py @@ -0,0 +1,4 @@ +from .sampler import PFNs4BOSampler + + +__all__ = ["PFNs4BOSampler"] diff --git a/package/samplers/pfns4bo/example.py b/package/samplers/pfns4bo/example.py new file mode 100644 index 00000000..563c8fc8 --- /dev/null +++ b/package/samplers/pfns4bo/example.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +import optuna +import optunahub + + +module = optunahub.load_module("samplers/pfns4bo") +PFNs4BOSampler = module.PFNs4BOSampler + + +def objective(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", -10, 10) + return (x - 2) ** 2 + + +if __name__ == "__main__": + study = optuna.create_study( + sampler=PFNs4BOSampler(), + ) + study.optimize(objective, n_trials=100) + print(study.best_params) + print(study.best_value) diff --git a/package/samplers/pfns4bo/requirements.txt b/package/samplers/pfns4bo/requirements.txt new file mode 100644 index 00000000..f5d7f92f --- /dev/null +++ b/package/samplers/pfns4bo/requirements.txt @@ -0,0 +1,4 @@ +botorch<0.8.0 +matplotlib +numpy<2.0.0 +pfns@git+https://github.com/automl/PFNs.git diff --git a/package/samplers/pfns4bo/sampler.py b/package/samplers/pfns4bo/sampler.py new file mode 100644 index 00000000..2abc1215 --- /dev/null +++ b/package/samplers/pfns4bo/sampler.py @@ -0,0 +1,263 @@ +from __future__ import annotations + +from collections.abc import Sequence +from typing import Any +from typing import cast +import warnings + +import numpy as np +import optuna._gp.search_space as gp_search_space +from optuna._gp.search_space import sample_normalized_params +from optuna.distributions import BaseDistribution +from optuna.samplers import BaseSampler +from optuna.samplers import RandomSampler +from optuna.samplers._lazy_random_state import LazyRandomState +from optuna.search_space import IntersectionSearchSpace +from optuna.study import Study +from optuna.study import StudyDirection +from optuna.trial import FrozenTrial +from optuna.trial import Trial +from optuna.trial import TrialState +from pfns import bar_distribution +from pfns import encoders +from pfns import priors +from pfns import utils +from pfns.priors.fast_gp import get_batch +from pfns.scripts.acquisition_functions import optimize_acq_w_lbfgs +from pfns.train import train +import torch + + +def get_vanilla_gp_config(device: str) -> dict[str, Any]: + hps = { + "outputscale": 1.0, + "lengthscale": 0.1, + "noise": 1e-4, + } + batch = get_batch(100000, 20, 1, hyperparameters=hps) + ys = batch.target_y.to(device) + + config_vanilla_gp = { + "priordataloader_class_or_get_batch": priors.fast_gp.get_batch, + "criterion": bar_distribution.FullSupportBarDistribution( + bar_distribution.get_bucket_limits(num_outputs=100, ys=ys) + ), + "encoder_generator": encoders.get_normalized_uniform_encoder(encoders.Linear), + "emsize": 256, + "nhead": 4, + "nhid": 512, + "nlayers": 4, + "y_encoder_generator": encoders.Linear, + "extra_prior_kwargs_dict": { + "num_features": 1, + "fuse_x_y": False, + "hyperparameters": hps, + }, + "epochs": 20, + "warmup_epochs": 5, + "steps_per_epoch": 100, + "batch_size": 8, + "lr": 0.001, + "seq_len": 20, + "single_eval_pos_gen": utils.get_uniform_single_eval_pos_sampler(20), + } + + return config_vanilla_gp + + +def get_heboplus_config(device: str) -> dict[str, Any]: + config = { + "priordataloader_class_or_get_batch": priors.get_batch_to_dataloader( + priors.get_batch_sequence( + priors.hebo_prior.get_batch, + priors.utils.sample_num_feaetures_get_batch, + ) + ), + "encoder_generator": encoders.get_normalized_uniform_encoder( + encoders.get_variable_num_features_encoder(encoders.Linear) + ), + "emsize": 512, + "nhead": 4, + "warmup_epochs": 5, + "y_encoder_generator": encoders.Linear, + "batch_size": 128, + "scheduler": utils.get_cosine_schedule_with_warmup, + "extra_prior_kwargs_dict": { + "num_features": 18, + "hyperparameters": { + "lengthscale_concentration": 1.2106559584074301, + "lengthscale_rate": 1.5212245992840594, + "outputscale_concentration": 0.8452312502679863, + "outputscale_rate": 0.3993553245745406, + "add_linear_kernel": False, + "power_normalization": False, + "hebo_warping": False, + "unused_feature_likelihood": 0.3, + "observation_noise": True, + }, + }, + "epochs": 50, + "lr": 0.0001, + "seq_len": 60, + "single_eval_pos_gen": utils.get_uniform_single_eval_pos_sampler( + 50, min_len=1 + ), # .()>, + "aggregate_k_gradients": 2, + "nhid": 1024, + "steps_per_epoch": 1024, + "weight_decay": 0.0, + "train_mixed_precision": False, + "efficient_eval_masking": True, + "nlayers": 12, + } + + bs = 128 + all_targets = [] + for num_hps in [ + 2, + 8, + 12, + ]: # a few different samples in case the number of features makes a difference in y dist + b = config["priordataloader_class_or_get_batch"].get_batch_method( + bs, + 1000, + num_hps, + epoch=0, + device=device, + hyperparameters={ + **config["extra_prior_kwargs_dict"]["hyperparameters"], + "num_hyperparameter_samples_per_batch": -1, + }, + ) + all_targets.append(b.target_y.flatten()) + ys = torch.cat(all_targets, 0).cpu() + + config["criterion"] = bar_distribution.FullSupportBarDistribution( + bar_distribution.get_bucket_limits(1000, ys=ys) + ) + + return config + + +class PFNs4BOSampler(BaseSampler): + def __init__( + self, + *, + seed: int | None = None, + independent_sampler: BaseSampler | None = None, + n_startup_trials: int = 10, + num_grad_steps: int = 15_000, + num_candidates: int = 100, + pre_sample_size: int = 100_000, + ) -> None: + self._num_grad_steps = num_grad_steps + self._num_candidates = num_candidates + self._pre_sample_size = pre_sample_size + + self._rng = LazyRandomState(seed) + self._independent_sampler = independent_sampler or RandomSampler(seed=seed) + self._intersection_search_space = IntersectionSearchSpace() + self._n_startup_trials = n_startup_trials + + self._device = utils.default_device + + # _, _, trained_model, _ = train(**get_vanilla_gp_config(self._device)) + _, _, trained_model, _ = train(**get_heboplus_config(self._device)) + + self._model = trained_model + self._model.eval() + + def sample_relative( + self, study: Study, trial: Trial, search_space: dict[str, BaseDistribution] + ) -> dict[str, Any]: + self._raise_error_if_multi_objective(study) + + if search_space == {}: + return {} + + states = (TrialState.COMPLETE,) + trials = study._get_trials(deepcopy=False, states=states, use_cache=True) + + if len(trials) < self._n_startup_trials: + return {} + + ( + internal_search_space, + normalized_params, + ) = gp_search_space.get_search_space_and_normalized_params(trials, search_space) + + _sign = -1.0 if study.direction == StudyDirection.MINIMIZE else 1.0 + score_vals = np.array([_sign * cast(float, trial.value) for trial in trials]) + + if np.any(~np.isfinite(score_vals)): + warnings.warn( + "This sampler cannot handle infinite values. " + "We clamp those values to worst/best finite value." + ) + + finite_score_vals = score_vals[np.isfinite(score_vals)] + best_finite_score = np.max(finite_score_vals, initial=0.0) + worst_finite_score = np.min(finite_score_vals, initial=0.0) + + score_vals = np.clip(score_vals, worst_finite_score, best_finite_score) + + standarized_score_vals = (score_vals - score_vals.mean()) / max(1e-10, score_vals.std()) + + def rand_sample_func(n: int) -> torch.Tensor: + xs = sample_normalized_params(n, internal_search_space, None) + ret = torch.from_numpy(xs).to(torch.float32).to(self._device) + return ret + + known_x = torch.from_numpy(normalized_params).to(torch.float32).to(self._device) + known_y = torch.from_numpy(standarized_score_vals).to(torch.float32).to(self._device) + + with torch.enable_grad(): + _, x_options, eis, _, _ = optimize_acq_w_lbfgs( + model=self._model, + known_x=known_x, + known_y=known_y, + num_grad_steps=self._num_grad_steps, + num_candidates=self._num_candidates, + pre_sample_size=self._pre_sample_size, + device=self._device, + rand_sample_func=rand_sample_func, + apply_power_transform=False, + ) + + normalized_param = x_options[torch.argmax(eis)] + return gp_search_space.get_unnormalized_param(search_space, normalized_param) + + def infer_relative_search_space( + self, study: Study, trial: Trial + ) -> dict[str, BaseDistribution]: + search_space = {} + for name, distribution in self._intersection_search_space.calculate(study).items(): + if distribution.single(): + continue + search_space[name] = distribution + + return search_space + + def sample_independent( + self, + study: Study, + trial: Trial, + param_name: str, + param_distribution: BaseDistribution, + ) -> Any: + self._raise_error_if_multi_objective(study) + return self._independent_sampler.sample_independent( + study, trial, param_name, param_distribution + ) + + def before_trial(self, study: Study, trial: FrozenTrial) -> None: + self._independent_sampler.before_trial(study, trial) + + def after_trial( + self, + study: Study, + trial: FrozenTrial, + state: TrialState, + values: Sequence[float] | None, + ) -> None: + self._independent_sampler.after_trial(study, trial, state, values) From 57670aec9c8242d1e018780755aa578548af0504 Mon Sep 17 00:00:00 2001 From: mamu Date: Mon, 24 Jun 2024 12:17:52 +0900 Subject: [PATCH 2/6] Save and load pretrained model --- package/samplers/pfns4bo/sampler.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/package/samplers/pfns4bo/sampler.py b/package/samplers/pfns4bo/sampler.py index 2abc1215..6ad113bf 100644 --- a/package/samplers/pfns4bo/sampler.py +++ b/package/samplers/pfns4bo/sampler.py @@ -143,6 +143,8 @@ class PFNs4BOSampler(BaseSampler): def __init__( self, *, + prior: str | torch.nn.Module = "hebo", + model_path: str | None = None, seed: int | None = None, independent_sampler: BaseSampler | None = None, n_startup_trials: int = 10, @@ -161,12 +163,21 @@ def __init__( self._device = utils.default_device - # _, _, trained_model, _ = train(**get_vanilla_gp_config(self._device)) - _, _, trained_model, _ = train(**get_heboplus_config(self._device)) + if isinstance(prior, torch.nn.Module): + trained_model = prior + elif prior == "vanilla gp": + _, _, trained_model, _ = train(**get_vanilla_gp_config(self._device)) + elif prior == "hebo": + _, _, trained_model, _ = train(**get_heboplus_config(self._device)) + else: + raise ValueError("You should specify `prior` as 'vanilla gp', 'hebo', or a model.") self._model = trained_model self._model.eval() + if model_path is not None: + torch.save(trained_model, model_path) + def sample_relative( self, study: Study, trial: Trial, search_space: dict[str, BaseDistribution] ) -> dict[str, Any]: From ad753866ff9a7225dfe2b1282ca96a4bfa8be3e8 Mon Sep 17 00:00:00 2001 From: mamu Date: Thu, 27 Jun 2024 09:28:18 +0900 Subject: [PATCH 3/6] Add user warning --- package/samplers/pfns4bo/example.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package/samplers/pfns4bo/example.py b/package/samplers/pfns4bo/example.py index 563c8fc8..0c04deba 100644 --- a/package/samplers/pfns4bo/example.py +++ b/package/samplers/pfns4bo/example.py @@ -1,5 +1,7 @@ from __future__ import annotations +import warnings + import optuna import optunahub @@ -7,6 +9,8 @@ module = optunahub.load_module("samplers/pfns4bo") PFNs4BOSampler = module.PFNs4BOSampler +warnings.filterwarnings("ignore", category=UserWarning) + def objective(trial: optuna.Trial) -> float: x = trial.suggest_float("x", -10, 10) From a4000230b63180fe2640d9c2a8c3bd711ac5b5d2 Mon Sep 17 00:00:00 2001 From: mamu Date: Fri, 28 Jun 2024 16:50:57 +0900 Subject: [PATCH 4/6] Add comparison results --- package/samplers/pfns4bo/README.md | 6 ++++++ .../images/compare2-pfns4bo-vs-random-1.png | Bin 0 -> 152698 bytes 2 files changed, 6 insertions(+) create mode 100644 package/samplers/pfns4bo/images/compare2-pfns4bo-vs-random-1.png diff --git a/package/samplers/pfns4bo/README.md b/package/samplers/pfns4bo/README.md index 620a8dda..31226f27 100644 --- a/package/samplers/pfns4bo/README.md +++ b/package/samplers/pfns4bo/README.md @@ -42,6 +42,12 @@ if __name__ == "__main__": print(study.best_params) print(study.best_value) ``` +See [`example.py`](https://github.com/optuna/optunahub-registry/blob/main/package/samplers/pfns4bo/example.py) for a full example. You need GPU to run this example. + +The following figures are experimental results of the comparison between PFNs4BO and the random search. +This figure stands for the performance of PFNs4BO against the random search. The horizontal axis represents the amount of budgets, which is equal to the number of trials. The vertical axis represents the p-value of the Mann–Whitney U test, in which the null hypothesis is that the PFNs4BO loses the random search. Therefore, don't get me wrong, but the lower is better. +The benchmark consists of 70 problems. The 8 problems are from HPO tabular benchmarks in https://github.com/automl/HPOBench (original 4 problems, and log-converted 4 problems). The 62 problems are several synthetic functions in https://github.com/sigopt/evalset (Not just use it, but I re-implement them). +![Comparison between PFNs4BO and random search](images/compare2-pfns4bo-vs-random-1.png "Comparison between PFNs4BO and random search") ## Others diff --git a/package/samplers/pfns4bo/images/compare2-pfns4bo-vs-random-1.png b/package/samplers/pfns4bo/images/compare2-pfns4bo-vs-random-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a72413f2031347665d17467395d886f3f3ea2f5 GIT binary patch literal 152698 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 literal 0 HcmV?d00001 From b0ffe06e8c147c849fe5332888152e684fec5619 Mon Sep 17 00:00:00 2001 From: mamu Date: Tue, 2 Jul 2024 10:41:26 +0900 Subject: [PATCH 5/6] apply suggestions by the author of the paper --- package/samplers/pfns4bo/README.md | 11 ++++++ package/samplers/pfns4bo/sampler.py | 61 ++++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/package/samplers/pfns4bo/README.md b/package/samplers/pfns4bo/README.md index 31226f27..7b6bc124 100644 --- a/package/samplers/pfns4bo/README.md +++ b/package/samplers/pfns4bo/README.md @@ -51,6 +51,17 @@ The benchmark consists of 70 problems. The 8 problems are from HPO tabular bench ## Others +The default prior argument is ``"hebo"``. This trains the PFNs model in the init of the sampler. If you want to use a pre-trained model, you can download the model checkpoint from the following link: https://github.com/automl/PFNs/blob/main/models_diff/prior_diff_real_checkpoint_n_0_epoch_42.cpkt and load it using the following code: + +```python +import torch + +model = torch.load("PATH/TO/prior_diff_real_checkpoint_n_0_epoch_42.cpkt") +sampler = PFNs4BOSampler(prior=model) +``` + +The performance of PFNs4BO with the HEBO+ prior is maximized with the number of trials smaller than 100 or 200 in most cases. If you have a large number of trials, it is recommended to change the sampler to a random sampler or etc after a certain number of trials. + ### Reference Samuel Müller, Matthias Feurer, Noah Hollmann, and Frank Hutter. 2023. PFNs4BO: in-context learning for Bayesian optimization. In Proceedings of the 40th International Conference on Machine Learning (ICML'23), Vol. 202. JMLR.org, Article 1056, 25444–25470. diff --git a/package/samplers/pfns4bo/sampler.py b/package/samplers/pfns4bo/sampler.py index 6ad113bf..2b03f8f9 100644 --- a/package/samplers/pfns4bo/sampler.py +++ b/package/samplers/pfns4bo/sampler.py @@ -140,6 +140,62 @@ def get_heboplus_config(device: str) -> dict[str, Any]: class PFNs4BOSampler(BaseSampler): + """A sampler based on the Prior-data Fitted Networks (PFNs) as the surrogate model. + + This sampler is based on the PFNs, which is a neural network-based surrogate model. + + .. note:: + The default prior argument is ``"hebo"``. This trains the PFNs model in the + init of the sampler. If you want to use a pre-trained model, you can download + the model checkpoint from the following link: + https://github.com/automl/PFNs/blob/main/models_diff/prior_diff_real_checkpoint_n_0_epoch_42.cpkt + and load it using the following code: + + .. code-block:: python + import torch + + model = torch.load("PATH/TO/prior_diff_real_checkpoint_n_0_epoch_42.cpkt") + sampler = PFNs4BOSampler(prior=model) + + .. note:: + The performance of PFNs4BO with the HEBO+ prior is maximized with the number of + trials smaller than 100 or 200 in most cases. If you have a large number of trials, + it is recommended to change the sampler to a random sampler or etc after a certain + number of trials. + + Args: + prior: + A string or a torch.nn.Module object. If a string, it should be one of the following: + + - ``"vanilla gp"``: A vanilla GP model. + - ``"hebo"``: A model based on the HEBO+ algorithm. + + If a torch.nn.Module object, it should be a trained model. + model_path: + A file path to save the trained model. If None, the model will not be saved. + seed: + Seed for random number generator. + independent_sampler: + A sampler instance for independent sampling. If None, :class:`~optuna.samplers.RandomSampler` + is used. + n_startup_trials: + The number of initial trials that are used to fit the model. + num_grad_steps: + The number of gradient steps for optimization. + num_candidates: + The number of candidates for optimization. + pre_sample_size: + The number of samples for pre-sampling. + acquisition_function_type: + The type of acquisition function. It should be one of the following: + + - ``"ei"``: Expected improvement. + - ``"pi"``: Probability of improvement. + - ``"ucb"``: Upper confidence bound. + - ``"ei_or_rand"``: Expected improvement mixed with random sampling. + - ``"mean"``: Mean of the model. + """ + def __init__( self, *, @@ -151,10 +207,12 @@ def __init__( num_grad_steps: int = 15_000, num_candidates: int = 100, pre_sample_size: int = 100_000, + acquisition_function_type: str = "ei", ) -> None: self._num_grad_steps = num_grad_steps self._num_candidates = num_candidates self._pre_sample_size = pre_sample_size + self._acquisition_function_type = acquisition_function_type self._rng = LazyRandomState(seed) self._independent_sampler = independent_sampler or RandomSampler(seed=seed) @@ -232,7 +290,8 @@ def rand_sample_func(n: int) -> torch.Tensor: pre_sample_size=self._pre_sample_size, device=self._device, rand_sample_func=rand_sample_func, - apply_power_transform=False, + apply_power_transform=True, + acq_function=self._acquisition_function_type, ) normalized_param = x_options[torch.argmax(eis)] From 2f9eb6653a11641db77f0b7330a4912d9437b9f8 Mon Sep 17 00:00:00 2001 From: mamu Date: Tue, 2 Jul 2024 14:15:07 +0900 Subject: [PATCH 6/6] Apply review comments --- package/samplers/pfns4bo/README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/package/samplers/pfns4bo/README.md b/package/samplers/pfns4bo/README.md index 7b6bc124..e8dd6ebc 100644 --- a/package/samplers/pfns4bo/README.md +++ b/package/samplers/pfns4bo/README.md @@ -1,8 +1,8 @@ --- -author: "HideakiImamura" +author: "Hideaki Imamura" title: "PFNs4BO sampler" description: "In-context learning for Bayesian optimization. This sampler uses Prior-data Fitted Networks (PFNs) as a surrogate model for Bayesian optimization." -tags: ["sampler"] +tags: ["sampler", "Bayesian optimization", "Pre-trained Model"] optuna_versions: ["3.6.1"] license: "MIT License" --- @@ -60,8 +60,11 @@ model = torch.load("PATH/TO/prior_diff_real_checkpoint_n_0_epoch_42.cpkt") sampler = PFNs4BOSampler(prior=model) ``` -The performance of PFNs4BO with the HEBO+ prior is maximized with the number of trials smaller than 100 or 200 in most cases. If you have a large number of trials, it is recommended to change the sampler to a random sampler or etc after a certain number of trials. +The performance of PFNs4BO with the HEBO+ prior is maximized with the number of trials smaller than 100 or 200 in most cases. If you have a large number of trials, changing the sampler to another one (e.g., a random sampler) after a certain number of trials is recommended. ### Reference Samuel Müller, Matthias Feurer, Noah Hollmann, and Frank Hutter. 2023. PFNs4BO: in-context learning for Bayesian optimization. In Proceedings of the 40th International Conference on Machine Learning (ICML'23), Vol. 202. JMLR.org, Article 1056, 25444–25470. + +See the [paper](https://arxiv.org/abs/2305.17535) for more details. +```