You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Big Changes
* We redesigned the scenario class completely. The scenario is implemented as a dataclass now and holds only environment variables (like limitations or save directory). Everything else was moved to the components directly.
* We removed runtime optimization completely (no adaptive capping or imputing anymore).
* We removed the command-line interface and restructured everything alongside. Since SMAC was building upon the command-line interface (especially in combination with the scenario), it was complicated to understand the behavior or find specific implementations. With the removal, we re-wrote everything in python and re-implemented the feature of using scripts as target functions.
* Introducing trials: Each config/seed/budget/instance calculation is a trial.
* The configuration chooser is integrated into the SMBO object now. Therefore, SMBO finally implements an ask-tell interface now.
* Facades are redesigned so that they accept instantiated components directly. If a component is not passed, a default component is used, which is specified for each facade individually in the form of static methods. You can use those static methods directly to adapt a component to your choice.
* A lot of API changes and renamings (e.g., RandomConfigurationChooser -> RandomDesign, Runhistory2EPM -> RunHistoryEncoder).
* Ambiguous variables are renamed and unified across files.
* Dependencies of modules are reduced drastically.
* We incorporated Pynisher 1.0, which ensures limitations cross-platform.
* We incorporated ConfigSpace 0.6, which simplified our examples.
* Examples and documentation are completely reworked. Examples use the new ConfigSpace, and the documentation is adapted to version 2.0.
* Transparent target function signatures: SMAC checks now explicitly if an argument is available (the required arguments are now specified in the intensifier). If there are more arguments that are not passed by SMAC, a warning is raised.
* Components implement a ``meta`` property now, all of which describe the initial state of SMAC. The facade collects all metadata and saves the initial state of the scenario.
* Improved multi-objective in general: RunHistory (in addition to RunHistoryEncoder) both incorporates the multi-objective algorithm. In other words, if the multi-objective algorithm changes the output, it directly affects the optimization process.
* Configspace is saved in json only
* StatusType is saved as integer and not as dict anymore
* We changed the behavior of continuing a run:
* SMAC automatically checks if a scenario was saved earlier. If there exists a scenario and the initial state is the same, SMAC automatically loads the previous data. However, continuing from that run is not possible yet.
* If there was a scenario earlier, but the initial state is different, then the user is asked to overwrite the run or to still continue the run although the state is different (Note that this only can happen if the name specified in the scenario is the same). Alternatively, an `old` to the old run is added (e.g., the name was test, it becomes test-old).
* The initial state of the SMAC run also specifies the name (if no name in the scenario is specified). If the user changes something in the code base or in the scenario, the name and, therefore, the save location automatically changes.
## New Features
* Added a new termination feature: Use `terminate_cost_threshold` in the scenario to stop the optimization after a configuration was evaluated with a cost lower than the threshold.
* Callbacks are completely redesigned. Added callbacks to the facade are called in different positions in the Bayesian optimization loop.
* The multi-objective algorithm `MeanAggregationStrategy` supports objective weights now.
* RunHistory got more methods like ``get_incumbent`` or ``get_pareto_front``.
## Fixes
* You ever noticed that the third configuration has no origin? It's fixed now.
* We fixed ParEGO (it updates every time training is performed now).
## Optimization Changes
* Changed initial design behavior
* You can add additional configurations now.
* ``max_ratio`` will limit both ``n_configs`` and ``n_configs_per_hyperparameter`` but not additional configurations
* Reduced default ``max_ratio`` to 0.1.
## Code Related
* Converted all unittests to pytests.
* Instances, seeds, and budgets can be set to none now. However, mixing none and non-none will throw an exception.
Co-authored-by: Carolin Benjamins <benjamins@tnt.uni-hannover.de>
Co-authored-by: dengdifan <difandeng@gmail.com>
Co-authored-by: eddiebergman <eddiebergmanhs@gmail.com>
Co-authored-by: timruhkopf <timruhkopf@gmail.com>
Co-authored-by: Katharina Eggensperger <eggenspk@cs.uni-freiburg.de>
With the next big major release of SMAC, we drastically boosted the user experience by improving the APIs and how the
25
+
pipelining is done (see [changelog](CHANGELOG.md)). However, cleaning the code base, we removed the command-line
26
+
interface (calling a target function from a script is still supported), runtime optimization, and pSMAC. Also,
27
+
python 3.7 is not supported anymore. If you depend on those functionalities, we kindly ask you to keep using v1.4.
28
+
29
+
We are excited to introduce the new major release and look forward to developing new features on the new code base.
30
+
We hope you enjoy this new user experience as much as we do. 🚀
31
+
32
+
23
33
## Installation
24
34
25
-
Create a new environment with python 3.9 and make sure swig is installed either on your system or
35
+
This instruction is for the installation on a Linux system, for Windows and Mac and further information see the [documention](https://automl.github.io/SMAC3/main/installation.html).
36
+
37
+
Create a new environment with python 3.10 and make sure swig is installed either on your system or
26
38
inside the environment. We demonstrate the installation via anaconda in the following:
27
39
28
40
Create and activate environment:
29
41
```
30
-
conda create -n SMAC python=3.9
42
+
conda create -n SMAC python=3.10
31
43
conda activate SMAC
32
44
```
33
45
@@ -44,56 +56,41 @@ pip install smac
44
56
Or alternatively, clone the environment:
45
57
```
46
58
git clone https://github.com/automl/SMAC3.git && cd SMAC3
47
-
pip install -r requirements.txt
48
-
pip install .
59
+
pip install -e .[dev]
49
60
```
50
61
51
-
We refer to the [documention](https://automl.github.io/SMAC3) for further installation options.
52
-
53
62
54
63
## Minimal Example
55
64
56
65
```py
57
-
import numpy as np
58
-
59
-
from sklearn.ensemble import RandomForestClassifier
60
-
from ConfigSpace import ConfigurationSpace
61
-
from ConfigSpace.hyperparameters import UniformIntegerHyperparameter
author = {Marius Lindauer and Katharina Eggensperger and Matthias Feurer and André Biedenkapp and Difan Deng and Carolin Benjamins and Tim Ruhkopf and René Sass and Frank Hutter},
@@ -131,4 +131,4 @@ If you use SMAC in one of your research projects, please cite our [JMLR paper](h
0 commit comments