A toolset for black-box hyperparameter optimisation.
Hypertunity is a lightweight, high-level library for hyperparameter optimisation. Among others, it supports:
For the full set of features refer to the documentation.
Define the objective function to optimise. For example, it can take the hyperparameters params
as input and
return a raw value score
as output:
import hypertunity as ht
def foo(**params) -> float:
# do some very costly computations
...
return score
To define the valid ranges for the values of params
we create a Domain
object:
domain = ht.Domain({
"x": [-10., 10.], # continuous variable within the interval [-10., 10.]
"y": {"opt1", "opt2"}, # categorical variable from the set {"opt1", "opt2"}
"z": set(range(4)) # discrete variable from the set {0, 1, 2, 3}
})
Then we set up the optimiser:
bo = ht.BayesianOptimisation(domain=domain)
And we run the optimisation for 10 steps. Each result is used to update the optimiser so that informed domain samples are drawn:
n_steps = 10
for i in range(n_steps):
samples = bo.run_step(batch_size=2, minimise=True) # suggest next samples
evaluations = [foo(**s.as_dict()) for s in samples] # evaluate foo
bo.update(samples, evaluations) # update the optimiser
Finally, we visualise the results in Tensorboard:
import hypertunity.reports.tensorboard as tb
results = tb.Tensorboard(domain=domain, metrics=["score"], logdir="path/to/logdir")
results.from_history(bo.history)
A high-level wrapper class Trial
allows for seamless parallel optimisation
without bothering with scheduling jobs, updating optimisers and logging:
trial = ht.Trial(objective=foo,
domain=domain,
optimiser="bo",
reporter="tensorboard",
metrics=["score"])
trial.run(n_steps, batch_size=2, n_parallel=2)
To install the base version run:
pip install hypertunity
To use the Tensorboard dashboard, build the docs or run the test suite you will need the following extras:
pip install hypertunity[tensorboard,docs,tests]
Checkout the latest master and install locally:
git clone https://github.com/gdikov/hypertunity.git
cd hypertunity
pip install ./[tensorboard]