This section shows you how to get your feet wet with BoTorch.
Before jumping the gun, we recommend you start with the high-level Overview to learn about the basic concepts in BoTorch.
- Python >= 3.8
- PyTorch >= 1.11
- gpytorch == 1.9.0
- linear_operator == 0.1.1
- pyro-ppl >= 1.8.2
BoTorch is easily installed via
conda install botorch -c pytorch -c gpytorch -c conda-forge
pip install botorch
For more detailed installation instructions, please see the Project Readme on GitHub.
Here's a quick run down of the main components of a Bayesian Optimization loop.
Fit a Gaussian Process model to data
import torch from botorch.models import SingleTaskGP from botorch.fit import fit_gpytorch_mll from gpytorch.mlls import ExactMarginalLogLikelihood train_X = torch.rand(10, 2) Y = 1 - (train_X - 0.5).norm(dim=-1, keepdim=True) # explicit output dimension Y += 0.1 * torch.rand_like(Y) train_Y = (Y - Y.mean()) / Y.std() gp = SingleTaskGP(train_X, train_Y) mll = ExactMarginalLogLikelihood(gp.likelihood, gp) fit_gpytorch_mll(mll);
Construct an acquisition function
from botorch.acquisition import UpperConfidenceBound UCB = UpperConfidenceBound(gp, beta=0.1)
Optimize the acquisition function
from botorch.optim import optimize_acqf bounds = torch.stack([torch.zeros(2), torch.ones(2)]) candidate, acq_value = optimize_acqf( UCB, bounds=bounds, q=1, num_restarts=5, raw_samples=20, )
Our Jupyter notebook tutorials help you get off the ground with BoTorch. View and download them here.
For an in-depth reference of the various BoTorch internals, see our API Reference.
You'd like to contribute to BoTorch? Great! Please see here for how to help out.