Hyperparameter optimization framework.
Initial use case: search of an optimal sweet-spot configuration (CPU Frequency
and number of threads
) for
different algorithms (data compressing, integers sorting, etc.) w.r.t. energy consumption minimization
(optimization goal).
Software requirements:
- Docker, Docker-compose.
- Python3.
Hardware requirements:
- 5 GB HDD, 2 GB RAM, 2x 2.5 GHz CPU + Resources for running
N
(Equal to number of workers. 3 by default) instances of your system.
To get working instance of BRISE:
git clone
this repository anddocker-compose up --build
BRISE instance in root folder of copied repository.
This will create following docker containers:
- main-node - for exploring of configuration search space, deciding which configuration should be evaluated (using Worker Service), predicting and validating best configuration.
- worker-service - for parallelization and orchestration of configuration evaluation between worker nodes.
N
workers - for evaluation of your system with concrete parameters.
- Get into main-node:
- If BRISE running locally:
$ docker exec -it main-node /bin/bash
- If BRISE running remotely - use openssh server running inside main node:
$ ssh root@IP_ADDR -p 2222
By default, exposed ssh port from container is 2222. Password is "root". You could also add you public key to configure_sshd.sh file.
- If BRISE running locally:
- Run BRISE by
python3 main.py
inside container. In the end you will see final report for default task. (Searching for best CPU Frequency and number of Threads.)
To apply this BRISE for your system, you need to:
- Install BRISE.
- Describe task of finding configuration for your system in
*.json
configuration file. - Describe search space of possible configurations in
*.json
file. This files should be inside main-node container (put it in main-node folder). - Adapt BRISE system to your optimization goal. Mostly it should be done in validation of predicted configurations by BRISE.
- Run BRISE and see results.
During integration BRISE to your system you should adapt main node to your system. Main node have single entry point - main.py in a root of main-node folder, so you could easily run it locally, after satisfying needed requirements.
See requirements for running main-node logic locally here.
Not published yet, under developing.
- Install Node.js version 6.9+
- Update NPM to version 3.0+
$ npm install @angular/cli -g
- From front-end root
$ npm install
- Start front-server with
$ ng serve --host 0.0.0.0 --port 4201
Questions, suggestions, remarks? Feel free to contact us via 📬
- Dmytro Pukhkaiev - initial idea, initial version of BRISE.
- Oleksandr Husak - Worker service and workers, front-end developing.
- Ievgeniia Svetsynska - Front-end APIs, improvements.
- Roman Kosonvnenko - Applying BRISE to different systems, improvements.
- Yevhenii Semendiak - main node logic.
This project is licensed under the MIT License - see the LICENSE file for details.