Bender is a hyperparameters optimizer for black box optimization. It is currently open-access but we plan to open-source all its components.
It features 3 kind of components:
- benderopt: A custom library implementing 2 algorithms:
- Random Search
- Parzen Estimator Optimization (TPE-like)
- bender-api: A high level interface to interact with bender functionalities.
- CRUD for experiments, algorithms and trials.
- Relies on benderopt for suggesting new hyperparameters to try.
- Various clients to give you access to Bender functionalities from anywhere:
- web-client available at
https://bender.dreem.com
- python-client available by
pip install bender-client
- web-client available at
You can find a medium post about bender here: https://medium.com/@dylanheirstraeten/bender-c394a5bda78b
If you don't want to use our online services, you still have the option to run bender locally using docker.
Prerequisites: docker and git
To do so, first clone, fork, or download this repository, and from its root run the following command lines :
(WARNING: This will be done with default settings, to change the installation and initialisation settings please scroll to the next header)
make install
: To download all the ressources needed and install all bender dependencies into ./local
make build
: To build the different dependencies.
make start
: To run the database, the API and the frontend.
make
: Tu do the 3 above commands at the same time.
make stop
: To stop all bender services.
make clear
: To remove all bender services, source files, images and containers.
To use the different clients with the local API check the its specific documentation.
Bender will use the configuration file in .benderconf
.
It is defined in JSON syntax and looks like the following :
{
"benderWebClient": {
"localhostPort": <the port you want to use on localhost to expose the web-client>
},
"benderApi": {
"localhostPort": <the port you want to use on localhost to expose the api>
},
"benderDatabase": {
"username": <the username of the admin acount to create in the database>,
"email": <the email of the admin acount to create in the database>,
"password": <the password of the admin acount to create in the database>,
"databasePath": <the local volume to mount on the database docker to host your database>,
"localhostPort": <the port you want to use on localhost to expose the database>
}
}