Package Overview#
SMAC supports you in determining well-performing hyperparameter configurations for your algorithms. By being a robust and flexible framework for Bayesian Optimization, SMAC can improve performance within a few function evaluations. It offers several entry points and pre-sets for typical use cases, such as optimizing hyperparameters, solving low dimensional continuous (artificial) global optimization problems and configuring algorithms to perform well across multiple problem instances.
Features#
SMAC has the following characteristics and capabilities:
Global Optimizer#
Bayesian Optimization is used for sample-efficient optimization.
Optimize Black-Box Functions#
Optimization is only aware of input and output. It is agnostic to internals of the function.
Flexible Hyperparameters#
Use categorical, continuous, hierarchical and/or conditional hyperparameters with the well-integrated ConfigurationSpace. SMAC can optimize up to 100 hyperparameters efficiently.
Any Objectives#
Optimization with any objective (e.g., accuracy, runtime, cross-validation, ...) is possible.
Multi-Objective Optimization#
Optimize arbitrary number of objectives using scalarized multi-objective algorithms. Both ParEGO [Know06] and mean aggregation strategies are supported.
Multi-Fidelity Optimization#
Judge configurations on multiple budgets to discard unsuitable configurations early on. This will result in a massive speed-up, depending on the budgets.
Instances#
Find well-performing hyperparameter configurations not only for one instance (e.g. dataset) of an algorithm, but for many.
Command-Line Interface#
SMAC can not only be executed within a python file but also from the command line. Consequently, not only algorithms in python can be optimized, but implementations in other languages as well.
Note
Command-line interface has been temporarily disabled in v2.0. Please fall back to v1.4 if you need it.
Comparison#
The following table provides an overview of SMAC's capabilities in comparison with other optimization tools.
Package | Complex Hyperparameter Space | Multi-Objective | Multi-Fidelity | Instances | Command-Line Interface | Parallelism |
---|---|---|---|---|---|---|
HyperMapper | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Optuna | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
Hyperopt | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
BoTorch | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
OpenBox | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
HpBandSter | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ |
SMAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |