Skip to content

Commit 5811bf9

Browse files
renesassdwoiwodeeddiebergman
authored
Version 1.0
## General - Runs are sorted now and only "visible" directories are shown. - Mechanics to select runs changed. - Runs can be selected across different working directories now. - Another section to display selected runs. - Press on directory name changes the working directory directly. Makes it easier to navigate. There's also a button to go to parent directory. - Internally, a run has two hashes now - `id`: Based on prefix and path/name. This hash is used to select runs now. No need to distinguish between run and grouped run anymore. - `hash`: Changes based on content. - If DeepCAVE was not started before, the path of execution is used as working directory. - Shows the errors now if a run could not be converted. - Increased stability for static plugins. - Updated CLI immensively. Added --open, --n_workers and improved --config (both relative and absolute paths are working now). DeepCAVE starts now using only `deepcave`. - Improved run cache performance. Each input uses a single file for the output. - Improved performance overall. - Improved the API mode drastically. - Improved mapping of original and encoded data. - Configurations are clickable now. - API changes in `AbstractRun`. - Jobs in sidebar are clickable and removeable now. ## Documentation - Updated texts and images. - Documentation of plugins are shown in the dashboard now (converted from rst to md). - Added research questions. ## Plugins - Overview: Redesigned with barplot and heatmap for statuses. Also includes configspace now. - Added PDP again. - Merged LPI and fANOVA. - Added dynamic texts to overview and budget correlation. - Added help buttons. - Added configuration footprint. - Configurations display code now. ## Code related - Added dash-extensions so that multiple outputs, no outputs and trigger can be used. - Added global notification. - Cleaned-up run handler immensely. - Logs are better readable. - Improved config loading and add development config. - Renamed and moved things (Groups, Status, Objectives, ...). - Objective is a dataclass now. - Added REFRESH_RATE and SAVE_IMAGES to profile. ## Bugfixes - Files are no longer shown in run selection. - Runs are reloaded from disk in worker now. - Internal runs are updated now if they changed. - Results from static plugins are saved under the right path now. Co-authored-by: dwoiwode <dominik.woiwode@stud.uni-hannover.de> Co-authored-by: eddiebergman <eddiebergmanhs@gmail.com>
1 parent 6208479 commit 5811bf9

File tree

297 files changed

+194646
-15811
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

297 files changed

+194646
-15811
lines changed

.github/workflows/pytest.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ jobs:
1818

1919
- name: Install dependencies
2020
run: |
21-
conda env update --file environment.yml --name base
22-
pip install .
23-
pip install .[dev]
21+
conda install -c anaconda swig
22+
make install-dev
2423
2524
- name: Run pytest
2625
run: pytest tests

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,6 @@ examples/others
168168
examples/record/_*
169169
datasets
170170
lightning_logs
171+
vendors
172+
173+
file_system_store

CHANGELOG.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,60 @@
1+
# Version 1.0
2+
3+
## General
4+
- Runs are sorted now and only "visible" directories are shown.
5+
- Mechanics to select runs changed.
6+
- Runs can be selected across different working directories now.
7+
- Another section to display selected runs.
8+
- Press on directory name changes the working directory directly. Makes it easier to navigate.
9+
There's also a button to go to parent directory.
10+
- Internally, a run has two hashes now
11+
- `id`: Based on prefix and path/name. This hash is used to select runs now. No need to
12+
distinguish between run and grouped run anymore.
13+
- `hash`: Changes based on content.
14+
- If DeepCAVE was not started before, the path of execution is used as working directory.
15+
- Shows the errors now if a run could not be converted.
16+
- Increased stability for static plugins.
17+
- Updated CLI immensively. Added --open, --n_workers and improved --config (both relative
18+
and absolute paths are working now). DeepCAVE starts now using only `deepcave`.
19+
- Improved run cache performance. Each input uses a single file for the output.
20+
- Improved performance overall.
21+
- Improved the API mode drastically.
22+
- Improved mapping of original and encoded data.
23+
- Configurations are clickable now.
24+
- API changes in `AbstractRun`.
25+
- Jobs in sidebar are clickable and removeable now.
26+
27+
## Documentation
28+
- Updated texts and images.
29+
- Documentation of plugins are shown in the dashboard now (converted from rst to md).
30+
- Added research questions.
31+
32+
## Plugins
33+
- Overview: Redesigned with barplot and heatmap for statuses. Also includes configspace now.
34+
- Added PDP again.
35+
- Merged LPI and fANOVA.
36+
- Added dynamic texts to overview and budget correlation.
37+
- Added help buttons.
38+
- Added configuration footprint.
39+
- Configurations display code now.
40+
41+
## Code related
42+
- Added dash-extensions so that multiple outputs, no outputs and trigger can be used.
43+
- Added global notification.
44+
- Cleaned-up run handler immensely.
45+
- Logs are better readable.
46+
- Improved config loading and add development config.
47+
- Renamed and moved things (Groups, Status, Objectives, ...).
48+
- Objective is a dataclass now.
49+
- Added REFRESH_RATE and SAVE_IMAGES to profile.
50+
51+
## Bugfixes
52+
- Files are no longer shown in run selection.
53+
- Runs are reloaded from disk in worker now.
54+
- Internal runs are updated now if they changed.
55+
- Results from static plugins are saved under the right path now.
56+
57+
158
# Version 0.3
259

360
## General

MANIFEST.in

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
include LICENSE
22
include requirements.txt
3+
include deepcave/assets/custom.css
34
include deepcave/py.typed
4-
include start.sh
55
include deepcave/utils/logging.yml
6+
include deepcave/worker.py
7+
include deepcave/server.py
8+
include deepcave/open.py
9+
include deepcave/start.sh
10+
include docs/plugins/*
11+
12+
recursive-include deepcave/docs *.rst
613

714
prune tests
815
prune examples

Makefile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ help:
3030

3131
PYTHON ?= python
3232
PYTEST ?= python -m pytest
33-
PIP ?= python -m pip
33+
PIP ?= pip
3434
MAKE ?= make
3535
BLACK ?= black
3636
ISORT ?= isort
@@ -119,15 +119,13 @@ publish: clean build
119119
@echo "Test with the following:"
120120
@echo "* Create a new virtual environment to install the uplaoded distribution into"
121121
@echo "* Run the following:"
122-
@echo
123-
@echo " pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${NAME}"
122+
@echo "--- pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${NAME}"
124123
@echo
125124
@echo "* Run this to make sure it can import correctly, plus whatever else you'd like to test:"
126-
@echo
127-
@echo " python -c 'import ${PACKAGE_NAME}'"
125+
@echo "--- python -c 'import ${PACKAGE_NAME}'"
128126
@echo
129127
@echo "Once you have decided it works, publish to actual pypi with"
130-
@echo
128+
@echo "--- python -m twine upload dist/*"
131129

132130
# Clean up any builds in ./dist as well as doc, if present
133131
clean: clean-build clean-doc

README.md

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,64 @@
11
# DeepCAVE
22

3-
DeepCAVE has two main contributions:
4-
- Recording runs and
5-
- Visualizing and evaluating trials of a run to get better insights into the AutoML process.
3+
DeepCAVE is a visualization and analysis tool for AutoML (especially for the sub-problem
4+
hyperparameter optimization) runs. The framework is programmed on top of Dash and therefore
5+
entirely interactive. Multiple and diverse plugins make it possible to efficiently generate insights
6+
and bring the human back in the loop. Moreover, the powerful run interface and the modularized
7+
plugin structure allow extending the tool at any time effortlessly.
8+
9+
![Configuration Footprint](docs/images/plugins/configuration_footprint.png)
10+
11+
Following features are provided:
12+
- Interactive Dashboard (completely written in Python) to self-analyze optimization runs/processes.
13+
- Analyzing while optimizing (run changes are automatically detected).
14+
- A large collection of plugins to explore multiple areas like performance, hyperparameter and
15+
budget analysis.
16+
- Save your runs using DeepCAVE's native recorder.
17+
- Support for many optimizers using converter (e.g., DeepCAVE, SMAC and BOHB).
18+
- Select runs directly from a working directory in the interface.
19+
- Select groups of runs for combined analysis.
20+
- Modularized plugin structure with access to selected runs/groups to provide maximal flexibility.
21+
- Asynchronous execution of expensive plugins and caching of their results.
22+
- Help buttons and integrated documentation in the interface helps you to understand the plugins.
23+
- Use the matplotlib mode to customize and save the plots for your publication.
24+
- The API mode gives you full access to the code, while you do not have to interact with the
25+
interface. Otherwise, you can also make use of the raw data, provided by every plugin.
626

727

828
## Installation
929

10-
First, make sure you have
11-
[swig](https://www.dev2qa.com/how-to-install-swig-on-macos-linux-and-windows/) and
12-
[redis-server](https://flaviocopes.com/redis-installation/) installed on your
13-
computer.
30+
First, make sure you have [redis-server](https://flaviocopes.com/redis-installation/) installed on
31+
your computer.
1432

15-
If you are on an Non-Intel Mac you have to add
16-
```
17-
export DISABLE_SPRING=true
18-
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
33+
Afterwards, follow the instructions to install DeepCAVE:
34+
```bash
35+
conda create -n DeepCAVE python=3.9
36+
conda activate DeepCAVE
37+
conda install -c anaconda swig
38+
pip install DeepCAVE
1939
```
20-
to your ```~/.bash_profile``` to enable multi-processing.
2140

22-
Afterwards, follow the instructions:
23-
```
41+
If you want to contribute to DeepCAVE use the following steps instead:
42+
```bash
2443
git clone https://github.com/automl/DeepCAVE.git
25-
cd DeepCAVE
26-
conda env create -f environment.yml
44+
conda create -n DeepCAVE python=3.9
2745
conda activate DeepCAVE
28-
make install
29-
```
30-
to your ```~/.bash_profile``` to enable multi-processing.
31-
32-
If you want to contribute to DeepCAVE also install the dev packages:
33-
```
46+
conda install -c anaconda swig
3447
make install-dev
3548
```
3649

50+
Please visit the [documentation](https://automl.github.io/DeepCAVE/main/installation.html) to get
51+
further help (e.g. if you can not install redis server or you are on a mac).
52+
3753

3854
## Recording
3955

40-
In the following, a minimal example is given to show the simplicity yet powerful API to record runs.
56+
A minimal example is given to show the simplicity yet powerful API to record runs.
57+
However, existing optimizers like BOHB, SMAC, Auto-Sklearn, Auto-PyTorch are supported natively.
4158

42-
```
59+
```python
4360
import ConfigSpace as CS
44-
from deep_cave import Recorder, Objective
61+
from deepcave import Recorder, Objective
4562

4663

4764
configspace = CS.ConfigurationSpace(seed=0)
@@ -58,19 +75,21 @@ with Recorder(configspace, objectives=[accuracy, mse]) as r:
5875
r.start(config, budget)
5976
# Your code goes here
6077
r.end(costs=[0.5, 0.5])
61-
````
78+
```
6279

6380

6481
## Visualizing and Evaluating
6582

66-
The webserver as well as the queue/workers can be started by running
67-
```
68-
deepcave --start
83+
The webserver as well as the queue/workers can be started by simply running:
84+
```bash
85+
deepcave --open
6986
```
7087

71-
Visit `http://127.0.0.1:8050/` to get started. The following figures gives
72-
you a first impression of DeepCAVE. You can find more screenshots
73-
in the documentation.
88+
If you specify `--open` your webbrowser automatically opens at `http://127.0.0.1:8050/`.
89+
You can find more arguments and information (like using custom configurations) in the
90+
[documentation](https://automl.github.io/DeepCAVE/main/getting_started.html).
91+
7492

75-
![interface](docs/images/plugins/pareto_front.png)
93+
## Citation
7694

95+
Currently, DeepCAVE is under review.

configs/local.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from deepcave.config import Config as C
2+
3+
4+
class Config(C):
5+
DEBUG = True
6+
REFRESH_RATE: int = 2000

configs/server.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from deepcave.config import Config as C
2+
3+
4+
class Config(C):
5+
DEBUG = False
6+
7+
REDIS_PORT = 6379
8+
REDIS_ADDRESS = "redis://localhost"
9+
10+
DASH_PORT = 8050
11+
DASH_ADDRESS = "re" # If you are connected to a remote server sass@se, the address is "re".

0 commit comments

Comments
 (0)