Efficient and generalized blackbox optimization (BBO) system
Project description
OpenBox: Generalized and Efficient Blackbox Optimization System.
OpenBox is an efficient and generalized blackbox optimization (BBO) system, which owns the following characteristics:
- BBO with multiple objectives and constraints.
- BBO with transfer learning.
- BBO with distributed parallelization.
- BBO with multi-fidelity acceleration.
- BBO with early stops.
Deployment Artifacts
Standalone Python package.
Users can install the released package and use it using Python.
Distributed BBO service.
We adopt the "BBO as a service" paradigm and implement OpenBox as a managed general service for black-box optimization. Users can access this service via REST API conveniently, and do not need to worry about other issues such as environment setup, software maintenance, programming, and optimization of the execution. Moreover, we also provide a Web UI, through which users can easily track and manage the tasks.
Design Goal
OpenBox’s design satisfies the following desiderata:
-
Ease of use: Minimal user effort, and user-friendly visualization for tracking and managing BBO tasks.
-
Consistent performance: Host state-of-the-art optimization algorithms; Choose the proper algorithm automatically.
-
Resource-aware management: Give cost-model-based advice to users, e.g., minimal workers or time-budget.
-
Scalability: Scale to dimensions on the number of input variables, objectives, tasks, trials, and parallel evaluations.
-
High efficiency: Effective use of parallel resources, system optimization with transfer-learning and multi-fidelities, etc.
-
Fault tolerance, extensibility, and data privacy protection.
Links
- Documentations
- Examples
- Pypi package
- Conda package: to appear soon
- Blog post: to appear soon
Application Tutorials
Benchmark Results
Single-objective problems
Ackley-4 | Hartmann |
---|---|
Single-objective problems with constraints
Mishra | Keane-10 |
---|---|
Multi-objective problems
DTLZ1-6-5 | ZDT2-3 |
---|---|
Multi-objective problems with constraints
CONSTR | SRN |
---|---|
Installation
System Requirements
Installation Requirements:
- Python >= 3.6 (3.7 is recommended!)
We STRONGLY suggest you to create a python environment via Anaconda:
conda create -n openbox3.7 python=3.7
source activate openbox3.7
Then we recommend you to update your pip
and setuptools
as follows:
pip install pip setuptools --upgrade --user
Installation from PyPI
To install OpenBox from PyPI:
pip install openbox --user
Manual Installation from Source
To install the newest version of OpenBox, please type the following scripts on the command line:
git clone https://github.com/thomas-young-2013/open-box.git && cd open-box
cat requirements/main.txt | xargs -n 1 -L 1 pip install
python setup.py install --user --prefix=
Quick Start
import numpy as np
from openbox.utils.config_space import ConfigurationSpace, UniformFloatHyperparameter
from openbox.optimizer.generic_smbo import SMBO
# Define Configuration Space
config_space = ConfigurationSpace()
x1 = UniformFloatHyperparameter("x1", -5, 10, default_value=0)
x2 = UniformFloatHyperparameter("x2", 0, 15, default_value=0)
config_space.add_hyperparameters([x1, x2])
# Define Objective Function
def branin(config):
x1, x2 = config['x1'], config['x2']
y = (x2-5.1/(4*np.pi**2)*x1**2+5/np.pi*x1-6)**2+10*(1-1/(8*np.pi))*np.cos(x1)+10
return y
# Run
if __name__ == '__main__':
bo = SMBO(branin, config_space, max_runs=50, task_id='quick_start')
history = bo.run()
print(history)
Releases and Contributing
OpenBox has a frequent release cycle. Please let us know if you encounter a bug by filling an issue.
We appreciate all contributions. If you are planning to contribute any bug-fixes, please do so without further discussions.
If you plan to contribute new features, new modules, etc. please first open an issue or reuse an existing issue, and discuss the feature with us.
To learn more about making a contribution to OpenBox, please refer to our How-to contribution page.
We appreciate all contributions and thank all the contributors!
Feedback
- File an issue on GitHub.
- Email us via liyang.cs@pku.edu.cn.
Related Projects
Targeting at openness and advancing AutoML ecosystems, we had also released few other open source projects.
- VolcanoML : an open source system that provides end-to-end ML model training and inference capabilities.
Related Publications
OpenBox: A Generalized Black-box Optimization Service Yang Li, Yu Shen, Wentao Zhang, Yuanwei Chen, Huaijun Jiang, Mingchao Liu, Jiawei Jiang, Jinyang Gao, Wentao Wu, Zhi Yang, Ce Zhang, Bin Cui; ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD 2021).
MFES-HB: Efficient Hyperband with Multi-Fidelity Quality Measurements Yang Li, Yu Shen, Jiawei Jiang, Jinyang Gao, Ce Zhang, Bin Cui; The Thirty-Fifth AAAI Conference on Artificial Intelligence (AAAI 2021).
License
The entire codebase is under MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.