Docker image for the bencher project. See https://github.com/LeoIV/bencher
3.0K
The Docker container can be pulled from the Docker Hub or built locally. It contains all benchmarks and dependencies and exposes the benchmark server via port 50051.
We give an exemplary usage of the Docker container in the bencherclient repository.
pwd # /path/to/bencher
docker build -t bencher .
# always keep the container running, can be stopped with docker stop <container-id>
docker run -p 50051:50051 --restart always -d gaunab/bencher:latest
or
docker pull gaunab/bencher:latest
# always keep the container running, can be stopped with docker stop <container-id>
docker run -p 50051:50051 --restart always -d gaunab/bencher:latest
You can build an Apptainer container from the Docker image:
Bootstrap: docker
From: gaunab/bencher:latest
Namespace:
Stage: build
%environment
export LANG=C.UTF-8
export PATH="/root/.local/bin:$PATH"
%post
cd /opt
git clone your-repo
cd your-repo
pip install bencherscaffold # you'll need bencherscaffold to call bencher
pip install your-dependencies
%startscript
bash -c "/docker-entrypoint.sh"
%runscript
bash -c "your-command-to-run-your-app"
This will create an Apptainer container with the Docker image gaunab/bencher:latest and the repository your-repo
with the dependencies your-dependencies installed.
apptainer build container.sif your-apptainer-file
This starts all the benchmarks in the container (as defined in the startscript of the Apptainer file).
apptainer instance start container.sif your-instance-name
This runs your command in the instance your-instance-name as defined in the runscript of the Apptainer file.
apptainer run instance://your-instance-name
We show how to run all benchmarks in the bencherclient repository.
You don't need to use this repository, it is mainly used to test the benchmarks.
The general setup to evaluate a benchmark is as follows.
First, install the bencherscaffold package:
pip install git+https://github.com/LeoIV/BencherScaffold
Then, you can use the following code to evaluate a benchmark:
from bencherscaffold.client import BencherClient
from bencherscaffold.protoclasses.bencher_pb2 import Value, ValueType
# Create a client to communicate with the Bencher server
# By default, it connects to 127.0.0.1:50051
client = BencherClient()
# Create a list of values to evaluate
values = [Value(type=ValueType.CONTINUOUS, value=0.5) for _ in range(180)]
# The benchmark name is the name of the benchmark you want to evaluate
benchmark_name = 'lasso-dna'
# Evaluate the benchmark with the given values
# This will send the values to the server and return the result
# If the server is not running, it will raise an error
result = client.evaluate_point(
benchmark_name=benchmark_name,
point=values,
)
print(f"Result: {result}")
The following benchmarks are available:
| Benchmark Name | # Dimensions | Type | Source(s) | Noisy |
|---|---|---|---|---|
| lasso-dna | 180 | continuous | 1,2 | ☒ |
| lasso-simple | 60 | continuous | 1 | ☒ |
| lasso-medium | 100 | continuous | 1 | ☒ |
| lasso-high | 300 | continuous | 1,2 | ☒ |
| lasso-hard | 1000 | continuous | 1,2 | ☒ |
| lasso-leukemia | 7129 | continuous | 1 | ☒ |
| lasso-rcv1 | 47236 | continuous | 1,3 | ☒ |
| lasso-diabetes | 8 | continuous | 1 | ☒ |
| lasso-breastcancer | 10 | continuous | 1 | ☒ |
| mopta08 | 124 | continuous | 4,2 | ☒ |
| maxsat60 | 60 | binary | 5,6 | ☒ |
| maxsat125 | 125 | binary | 6 | ☒ |
| robotpushing | 14 | continuous | 7 | ☑ |
| lunarlander | 12 | continuous | 7 | ☑ |
| rover | 60 | continuous | 7 | ☒ |
| mujoco-ant | 888 | continuous | 8,2 | ☑ |
| mujoco-hopper | 33 | continuous | 8,2 | ☑ |
| mujoco-walker | 102 | continuous | 8,2 | ☑ |
| mujoco-halfcheetah | 102 | continuous | 8,2 | ☑ |
| mujoco-swimmer | 16 | continuous | 8,2 | ☑ |
| mujoco-humanoid | 6392 | continuous | 8,2 | ☑ |
| svm | 388 | continuous | 4,2,9 | ☒ |
| svmmixed | 53 | mixed | 5,6 | ☒ |
| pestcontrol | 25 | categorical | 10,11 | ☒ |
| bbob-sphere | any | continuous | 12,13 | ☒ |
| bbob-ellipsoid | any | continuous | 12,13 | ☒ |
| bbob-rastrigin | any | continuous | 12,13 | ☒ |
| bbob-buecherastrigin | any | continuous | 12,13 | ☒ |
| bbob-linearslope | any | continuous | 12,13 | ☒ |
| bbob-attractivesector | any | continuous | 12,13 | ☒ |
| bbob-stepellipsoid | any | continuous | 12,13 | ☒ |
| bbob-rosenbrock | any | continuous | 12,13 | ☒ |
| bbob-rosenbrockrotated | any | continuous | 12,13 | ☒ |
| bbob-ellipsoidrotated | any | continuous | 12,13 | ☒ |
| bbob-discus | any | continuous | 12,13 | ☒ |
| bbob-bentcigar | any | continuous | 12,13 | ☒ |
| bbob-sharpridge | any | continuous | 12,13 | ☒ |
| bbob-differentpowers | any | continuous | 12,13 | ☒ |
| bbob-rastriginrotated | any | continuous | 12,13 | ☒ |
| bbob-weierstrass | any | continuous | 12,13 | ☒ |
| bbob-schaffers10 | any | continuous | 12,13 | ☒ |
| bbob-schaffers1000 | any | continuous | 12,13 | ☒ |
| bbob-griewankrosenbrock | any | continuous | 12,13 | ☒ |
| bbob-schwefel | any | continuous | 12,13 | ☒ |
| bbob-gallagher101 | any | continuous | 12,13 | ☒ |
| bbob-gallagher21 | any | continuous | 12,13 | ☒ |
| bbob-katsuura | any | continuous | 12,13 | ☒ |
| bbob-lunacekbirastrigin | any | continuous | 12,13 | ☒ |
| pbo-onemax | any | binary | 12 | ☒ |
| pbo-leadingones | any | binary | 12 | ☒ |
| pbo-linear | any | binary | 12 | ☒ |
| pbo-onemaxdummy1 | any | binary | 12 | ☒ |
| pbo-onemaxdummy2 | any | binary | 12 | ☒ |
| pbo-onemaxneutrality | any | binary | 12 | ☒ |
| pbo-onemaxepistasis | any | binary | 12 | ☒ |
| pbo-onemaxruggedness1 | any | binary | 12 | ☒ |
| pbo-onemaxruggedness2 | any | binary | 12 | ☒ |
| pbo-onemaxruggedness3 | any | binary | 12 | ☒ |
| pbo-leadingonesdummy1 | any | binary | 12 | ☒ |
| pbo-leadingonesdummy2 | any | binary | 12 | ☒ |
| pbo-leadingonesneutrality | any | binary | 12 | ☒ |
| pbo-leadingonesepistasis | any | binary | 12 | ☒ |
| pbo-leadingonesruggedness1 | any | binary | 12 | ☒ |
| pbo-leadingonesruggedness2 | any | binary | 12 | ☒ |
| pbo-leadingonesruggedness3 | any | binary | 12 | ☒ |
| pbo-labs | any | binary | 12 | ☒ |
| pbo-isingring | any | binary | 12 | ☒ |
| pbo-isingtorus | any | binary | 12 | ☒ |
| pbo-isingtriangular | any | binary | 12 | ☒ |
| pbo-mis | any | binary | 12 | ☒ |
| pbo-nqueens | any | binary | 12 | ☒ |
| pbo-concatenatedtrap | any | binary | 12 | ☒ |
| pbo-nklandscapes | any | binary | 12 | ☒ |
| graph-maxcut2000 | 800 | binary | 12 | ☒ |
| graph-maxcut2001 | 800 | binary | 12 | ☒ |
| graph-maxcut2002 | 800 | binary | 12 | ☒ |
| graph-maxcut2003 | 800 | binary | 12 | ☒ |
| graph-maxcut2004 | 800 | binary | 12 | ☒ |
| graph-maxcoverage2100 | 800 | binary | 12 | ☒ |
| graph-maxcoverage2101 | 800 | binary | 12 | ☒ |
LassoBench ( Šehić Kenan, Gramfort Alexandre, Salmon Joseph and Nardi Luigi, "LassoBench: A High-Dimensional Hyperparameter Optimization Benchmark Suite for Lasso", AutoML conference, 2022.) ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
BAxUS
Leonard Papenmeier, Luigi Nardi, and Matthias Poloczek, "Increasing the Scope as You Learn: Adaptive Bayesian Optimization in Nested Subspaces", NeurIPS 2022 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11
The LassoBench paper states 19,959 features, but the number of features in the RCV1 dataset is 47,236. ↩
SAASBO
David Eriksson and Martin Jankowiak, "High-dimensional Bayesian optimization with sparse axis-aligned subspaces", UAI 2021 ↩ ↩2
BODi
Aryan Deshwal, Sebastian Ament, Maximilian Balandat, Eytan Bakshy, Janardhan Rao Doppa, and David Eriksson, "Bayesian Optimization over High-Dimensional Combinatorial Spaces via Dictionary-based Embeddings", AISTATS 2023 ↩ ↩2
Bounce
Leonard Papenmeier, Luigi Nardi and Matthias Poloczek, "Bounce: Reliable High-Dimensional Bayesian Optimization for Combinatorial and Mixed Spaces", NeurIPS 2023 ↩ ↩2 ↩3
TurBO (
David Eriksson, Michael Pearce, Jacob Gardner, Ryan D Turner and Matthias Poloczek, "Scalable Global Optimization via Local Bayesian Optimization." NeurIPS 2019) ↩ ↩2 ↩3
LA-MCTS
Linnan Wang, Rodrigo Fonseca, and Yuandong Tian, "Learning Search Space Partition for Black-box Optimization using Monte Carlo Tree Search", NeurIPS 2020 ↩ ↩2 ↩3 ↩4 ↩5 ↩6
The SVM benchmark is not included in the repository and was obtained by corresponding with the authors of the paper. ↩
Oh, Changyong, et al. "Combinatorial bayesian optimization using the graph cartesian product." Advances in Neural Information Processing Systems 32 (2019). ↩
Each category has 5 possible values. The benchmark expects an integer between 0 and 4 for each category. ↩
de Nobel, Jacob, et al. "Iohexperimenter: Benchmarking platform for iterative optimization heuristics." Evolutionary Computation 32.3 (2024): 205-210. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48 ↩49 ↩50 ↩51 ↩52 ↩53 ↩54 ↩55 ↩56
Hansen, Nikolaus, et al. "COCO: A platform for comparing continuous optimizers in a black-box setting." Optimization Methods and Software 36.1 (2021): 114-144. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24
Content type
Image
Digest
sha256:b3b2e3f1b…
Size
2.5 GB
Last updated
about 1 month ago
docker pull gaunab/bencher