Skip to content

Commit 731854e

Browse files
renesassdengdifanmfeurerbenjamceddiebergman
authored
Version 2.0.0 (#898)
* Update runhistory2epm.py * pre_commit * Updated changelog * Fixed comment * Updated changelog * Some small improvements * Removed trailing space * Updated changelog * Restricted pynisher * Updated changelog * Link JMLR paper * Update bibtex entry Before: arxiv paper, now journal article. * Fixed citation in docs * Fixed callback typos * BOinG for mixed hyperparameter search space * fix format * maint * maint documentation * maint pre-commit * fix workflow * maint * Add dependabot for workflow files * Bump actions/setup-python from 2 to 4 (#849) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2 to 4. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](actions/setup-python@v2...v4) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/checkout from 2 to 3 (#850) Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * maint * Updated stale bot * Updated stale options again * Fixed typing * Increased version * rename check_point_in_ss to check_subspace_point * Make format * Uncomment test procedure * docstrings for boing facade * avoid typing namespace everywhere in epm_configuration_chooser * fix docstring in rh2epm_boing * Limit on dask * Trying to fix tests * Replaced typing in all files * docstring for boing subspace * Changed feature requests to feature * allow acq_optimizer_local_kwargs to be passed to boing subspace without acq_optimizer_local * fix pre-commit * Added any * Update facade * Fix typing * Match arguments from pSMAC with SMAC4AC signature * Add description of pSMAC to docstring * Add option to pass facade class to pSMAC * Add example for pSMAC * Removed docstring in readme's example * Corrected text * move construct_gp_kernels to smac.epm_gpytorch.boing_kernels * maint * fix wrongly imported func name in tests * Add reference for pSMAC #609 * Rename example file * Added roadmap to readme * Prettification * Add result merger * Reformat with black * Delete unnecessary import * Fix typing * Inject first trajectory entry from file from first rundir * Add test for ResultMerger * Fix docstring * Get runhistory and trajectory from pSMAC run Via the result merger. Searchers rundirs and merges found runhistories and calculates a new trajectory. * Get trajectory * Add regex to requirements * Fixed MO cache problem * Fix MO tests * Fixing MO in AbstractRacer * Accepting ints * Hacking in the sum cost for MO * Fix mypi * Bugfix * Make mypi happy * Fix tests * Make format * Remove num_obj in MO optimizer * A lot of restructuring * Solve importings * Solve importings * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Fixing, fixing, fixing, ... * Updated changelog * Still fixing :) * fix docstrings * Change directory of tests * Fix ambiguous variable * Del newlines * fix mypy * mypy and doc fix * Removed int type checking * fix tests * Always return List of incs * fix path issue in example * maint boing facade * Better docstring * Return values if no bounds passed * Removed import * Return only one incumbent * Rename n_optimizers -> n_workers * Update example * Update docstring * Remove legacy function * Update to new signature * Update changelog.md * Format black * Update test * Please pre-commit * Merge development * Fix tests * Fix typos * Format black * Updated text * Increased version * Improved readme * SMAC logo 50% * SMAC logo 50% * Removed dev-2.0 * Added doc workflow for latest tag * Fixing docs latest tag * Fixing docs latest tag * First steps new intensifier * Make it work again * MOVE random weight initialization to smbo ask method * ADD enable parego in unittests * Test issues * FIX formatting * Link to old documentation * MOVE random weight initialization to smbo ask method * ADD enable parego in unittests * FIX formatting * Fix unit tests * Add annotation * corrected log prob for tophat prior * Removed configurations from callback * Fixed tests * Fix mypy * Save docs as latest version too * Enabled all tests again * Make version an env * Added last version to docs * Global variable fix * Added v before version number * New Intensifier Implementation (#888) - Completely reimplemented the intensifiers (including Successive Halving and Hyperband): All intensifiers support multi-fidelity, multi-objective and multi-threading by nature now. - Expected behaviour for ask-and-tell interface ensured (also for Successive Halving). - Continuing a run is now fully supported. - Added more examples. - Updated documentation based on new implementation. * First benchmark steps * Added a warning * Set xi to 0.01 * Incorporated walltime in trajectory * Working version of benchmark * Changed requirements * Changed xi back to 0.0 again * No duplicate budgets * Fixed bug which updated tracker wrongly * Bugfix: Delete correct bracket+stage * Fixed tests * Added costs to the trajectory * Changed initial design max ratio to 0.25 * Make format * Added more details to intensifier * Finished benchmark * Added benchmark source files * Fixed tests because of initial design changes * Improved runhistory API * Fixed typo (#894) * Merge doc fixes * Doc fixes (#893) Co-authored-by: timruhkopf <[email protected]> Co-authored-by: Carolin Benjamins <[email protected]> Co-authored-by: dengdifan <[email protected]> Co-authored-by: Alexander Tornede <[email protected]> Co-authored-by: Sarah Krebs <[email protected]> * Make format * Satisfied mypy * Enabled more tests * Increased version * Mypy * Mypy * Mypy * Fixed critical bug when using highest budget for inc selection * Added SH+HB comparison * Stuff * Updated report * Fixed docstring * Fixed image path * Removed vscode folder * Bugfixes * Doc fixes * Updated changelog * Make isort * Fix typos * Removed new line * Added alpha2 to docs selection * update description * Fix 531 correctly create integers in initial design This PR fixes a bug in which integer hyperparameters would not be created correctly in the initial design. This went unnoticed, except in the case where it was part of a condition and the function deactivate_inactive_hyperparameters was called. This PR fixes this bug by mapping the random float that was sampled by, for example and LHD or Sobol sequence, to the float representation of an integer by calling _transform and _inverse_transform of the integer hyperparameter. * Add contact paragraph to README. * Increase days until stale issues are closed by stalebot (#904) * Edit changelog * Add issue number * Closes #907 * Clarify origin of configurations (#908) * Random forest speed up (#903) Co-authored-by: René Sass <[email protected]> * Add: workflow to update pre-commit versions (#874) Co-authored-by: René Sass <[email protected]> * Add Git-Flow Workflow Specification * [DOC] acquisition function maximizers * Add stale reminder email action * Increase version number of ConfigSpace * Add guideline for updating copyright notice years to CONTRIBUTING.md * Update requirement for pyrfr (#920) * Update pre-commit: isort,flake8 version numbers * Format black * Fix mypy * Ac bench (#929) * Add Branin AC Task * Add ac optimization type * Nicer plotting * Add ac mode * Update ac task * Make new smac env name adjustable * Increase python version for smac 1.4 * Update benchmark * Update plotting * Goodby comments * Fix path * Fix 1.4 wrapper * Update benchmark results --------- Co-authored-by: Carolin Benjamins <[email protected]> * [DOC] added documentation on the incumbent update * Feature/add version to make publish (#931) * Add version, correct package name and use bash in makefile * Increase version * Increase version in makefile, add places with versions to make publish * Fix typo * Transform integer feature names to strings (#930) * Transform int features to str * Fix pre-commit * Update version to 2.0.0 * Update version to 2.0.0 * Update CHANGELOG.md * Add information on deepcave to the readme * Correct doc version --------- Co-authored-by: dengdifan <[email protected]> Co-authored-by: dengdifan <[email protected]> Co-authored-by: Matthias Feurer <[email protected]> Co-authored-by: Carolin Benjamins <[email protected]> Co-authored-by: eddiebergman <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carolin Benjamins <[email protected]> Co-authored-by: C. Benjamins <[email protected]> Co-authored-by: Katharina Eggensperger <[email protected]> Co-authored-by: Eric Kalosa-Kenyon <[email protected]> Co-authored-by: Pascal <[email protected]> Co-authored-by: helegraf <[email protected]> Co-authored-by: timruhkopf <[email protected]> Co-authored-by: Alexander Tornede <[email protected]> Co-authored-by: Sarah Krebs <[email protected]> Co-authored-by: Alexander Tornede <[email protected]> Co-authored-by: Alexander Tornede <[email protected]> Co-authored-by: Sarah Krebs <[email protected]> Co-authored-by: helegraf <[email protected]> Co-authored-by: Jeroen Rook <[email protected]> Co-authored-by: Tim Ruhkopf <[email protected]>
1 parent 0a1dff4 commit 731854e

Some content is hidden

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

43 files changed

+9197
-95
lines changed

.github/stale.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
daysUntilStale: 60
33

44
# Number of days of inactivity before a stale issue is closed
5-
daysUntilClose: 7
5+
daysUntilClose: 14
66

77
# Issues with these labels will never be considered stale
88
exemptLabels:
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Pre-commit auto-update
2+
3+
on:
4+
# every Monday at 1pm utc
5+
schedule:
6+
- cron: "0 13 * * 1"
7+
# on demand
8+
workflow_dispatch:
9+
10+
jobs:
11+
auto-update:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v2
15+
16+
- uses: actions/setup-python@v2
17+
18+
- uses: browniebroke/pre-commit-autoupdate-action@main
19+
20+
- name: Run updated pre-commit
21+
run: |
22+
pre-commit run --all-files
23+
24+
- uses: peter-evans/create-pull-request@v3
25+
with:
26+
token: ${{ secrets.GITHUB_TOKEN }}
27+
branch: update/pre-commit-hooks
28+
title: Update pre-commit hooks
29+
commit-message: "chore: update pre-commit hooks"
30+
body: Update versions of pre-commit hooks to latest version.

.github/workflows/stale_reminder.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Stale-Reminder
2+
3+
on:
4+
schedule:
5+
- cron: '42 14 * * 3'
6+
workflow_dispatch:
7+
8+
jobs:
9+
stale-reminder:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Get cutoff date for soon-to-be-stale issues
13+
id: date
14+
run: |
15+
echo "CUTOFF_DATE=$(date -d '-46 days' '+%Y-%m-%d')" >> $GITHUB_ENV
16+
- name: Collect issues that may become stale
17+
id: stale
18+
uses: lee-dohm/select-matching-issues@v1
19+
with:
20+
format: list
21+
path: "potentially_stale_issues.md"
22+
token: ${{ github.token }}
23+
query: >-
24+
is:open
25+
-label:dependency,documentation,feature,enhancement,bug,test,example
26+
updated:<${{ env.CUTOFF_DATE }}
27+
sort:updated-asc
28+
- name: Collect labelled issues that have not had interaction in a long time (but will not become stale)
29+
id: old
30+
uses: lee-dohm/select-matching-issues@v1
31+
with:
32+
format: list
33+
path: "old_issues.md"
34+
token: ${{ github.token }}
35+
query: >-
36+
is:open
37+
label:dependency,documentation,feature,enhancement,bug,test,example
38+
updated:<${{ env.CUTOFF_DATE }}
39+
sort:updated-asc
40+
- name: Combine issues into mail content
41+
id: combine
42+
run: |
43+
echo $date
44+
echo "## Issues that may become stale in <= 14 days <br />" >> mail.html
45+
echo "$(<potentially_stale_issues.md) <br />" >> mail.html
46+
echo "## Issues that have not had interaction in the last 46 days but will not go stale due to their labels<br />" >> mail.html
47+
echo "$(<old_issues.md) <br />" >> mail.html
48+
- name: Send mail
49+
id: mail
50+
uses: dawidd6/action-send-mail@v3
51+
with:
52+
server_address: ${{secrets.MAIL_SERVER_ADDRESS}}
53+
server_port: ${{secrets.MAIL_SERVER_PORT}}
54+
secure: true
55+
username: ${{secrets.MAIL_USERNAME}}
56+
password: ${{secrets.MAIL_PASSWORD}}
57+
subject: '[Stale Issues] Issues with last interaction before ${{ env.CUTOFF_DATE }}'
58+
to: ${{secrets.MAIL_TARGET}}
59+
from: SMAC3 Stale-Bot <${{secrets.MAIL_ADDRESS}}>
60+
html_body: file://mail.html
61+
convert_markdown: true

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
# If things break on update, raise an issue
44

55
repos:
6-
- repo: https://github.com/pycqa/isort
7-
rev: 5.10.1
6+
- repo: https://github.com/PyCQA/isort
7+
rev: 5.12.0
88
hooks:
99
- id: isort
1010
name: isort smac
@@ -37,7 +37,7 @@ repos:
3737
exclude: "scripts|tests"
3838

3939
- repo: https://github.com/PyCQA/flake8
40-
rev: 5.0.4
40+
rev: 6.0.0
4141
hooks:
4242
- id: flake8
4343
name: flake8 smac

CHANGELOG.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,33 @@
1+
# 2.0.0
2+
3+
## Improvements
4+
- Clarify origin of configurations (#908).
5+
- Random forest with instances predicts the marginalized costs by using a C++ implementation in `pyrfr`, which is much faster (#903).
6+
- Add version to makefile to install correct test release version
7+
8+
## Bugfixes
9+
- Continue run when setting incumbent selection to highest budget when using Successive Halving (#907).
10+
- If integer features are used, they are automatically converted to strings.
11+
12+
## Workflows
13+
- Added workflow to update pre-commit versions (#874).
14+
15+
## Misc
16+
- Added benchmarking procedure to compare to previous releases.
17+
18+
119
# 2.0.0b1
220

3-
- Completely reimplemented the intensifiers (including Successive Halving and Hyperband): All intensifiers support
4-
multi-fidelity, multi-objective and multi-threading by nature now.
21+
- Completely reimplemented the intensifiers (including Successive Halving and Hyperband): All intensifiers support multi-fidelity, multi-objective and multi-threading by nature now.
522
- Expected behaviour for ask-and-tell interface ensured (also for Successive Halving).
623
- Continuing a run is now fully supported.
724
- Added more examples.
825
- Updated documentation based on new implementation.
926
- Added benchmark to compare different versions.
1027

28+
## Bugfixes
29+
- Correct handling of integer hyperparameters in the initial design (#531)
30+
1131

1232
# 2.0.0a2
1333

CONTRIBUTING.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,27 @@ If you know how to fix a bug or implement your own feature, follow this small gu
5353
- Pull request must include tests.
5454
- We are using the Numpy Style Python Docstrings. Take a look at this [example](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html#example-numpy).
5555
- The code should follow the PEP8 coding convention.
56+
- Check that the copyright notice of all files that have been significantly changed includes the current year.
5657

5758
We try to react as fast as possible to your pull request.
5859

60+
## Git-Flow Workflow and Branch-Naming
61+
62+
We aim to approximately follow the [Git-Flow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow).
63+
Thus, the following conventions apply:
64+
65+
Branches are named as follows:
66+
- `main` The main branch, containing the latest stable release (tagged)
67+
- `development` The development branch, for merging features and bugfixes in-between releases
68+
- `release/<version>` Release branches for *preparing* a new release (no new features developed here),
69+
deleted after release
70+
- `feature/<feature-name>` Feature branches for implementing new functionality, updating existing functionality
71+
or fixing bugs on the development branch
72+
- `hotfix/<bug-name>` Hotfix branches for fixing bugs in the latest release
73+
- `support/<version>` Support branches for bugfixes in older releases (e.g., `support/v0.12.x`). New 'old' versions are
74+
tagged here.
75+
- `gh-pages` The branch for the GitHub pages
76+
5977
## Reporting Security Issues
6078

6179
If you find security related issues, vulnerabilities or bugs including sensitive information, please do *not* report this to the issue tracker, or elsewhere public. Instead, please let us know via [email protected]

Makefile

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# These have been configured to only really run short tasks. Longer form tasks
22
# are usually completed in github actions.
33

4+
SHELL := /bin/bash
5+
46
NAME := SMAC3
57
PACKAGE_NAME := smac
8+
VERSION := 2.0.0
69

710
DIR := "${CURDIR}"
811
SOURCE_DIR := ${PACKAGE_NAME}
@@ -133,15 +136,16 @@ clean-data:
133136
# Will echo the commands to actually publish to be run to publish to actual PyPi
134137
# This is done to prevent accidental publishing but provide the same conveniences
135138
publish: clean build
136-
read -p "Did you update the version number? Did you add the old version to docs/conf.py?"
139+
read -p "Did you update the version number in Makefile, smac/__init__.py, benchmark/src/wrappers/v20.py? \
140+
Did you add the old version to docs/conf.py? Did you add changes to CHANGELOG.md?"
137141

138142
$(PIP) install twine
139143
$(PYTHON) -m twine upload --repository testpypi ${DIST}/*
140144
@echo
141145
@echo "Test with the following:"
142-
@echo "* Create a new virtual environment to install the uplaoded distribution into"
146+
@echo "* Create a new virtual environment to install the uploaded distribution into"
143147
@echo "* Run the following:"
144-
@echo "--- pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${NAME}"
148+
@echo "--- pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ${PACKAGE_NAME}==${VERSION}"
145149
@echo
146150
@echo "* Run this to make sure it can import correctly, plus whatever else you'd like to test:"
147151
@echo "--- python -c 'import ${PACKAGE_NAME}'"

README.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ Status](https://codecov.io/gh/automl/SMAC3/branch/master/graph/badge.svg)](https
88

99
<img src="docs/images/logo.png" style="width: 50%;" />
1010

11-
SMAC is a tool for algorithm configuration to optimize the parameters of arbitrary algorithms, including hyperparameter
12-
optimization of Machine Learning algorithms. The main core consists of Bayesian Optimization in combination with an
13-
aggressive racing mechanism to efficiently decide which of two configurations performs better.
11+
SMAC offers a robust and flexible framework for Bayesian Optimization to support users in determining well-performing
12+
hyperparameter configurations for their (Machine Learning) algorithms, datasets and applications at hand. The main core
13+
consists of Bayesian Optimization in combination with an aggressive racing mechanism to efficiently decide which of two configurations performs better.
1414

1515
SMAC3 is written in Python3 and continuously tested with Python 3.8, 3.9, and 3.10. Its Random
1616
Forest is written in C++. In further texts, SMAC is representatively mentioned for SMAC3.
@@ -96,6 +96,10 @@ incumbent = smac.optimize()
9696

9797
More examples can be found in the [documentation](https://automl.github.io/SMAC3/main/examples/).
9898

99+
## Visualization via DeepCAVE
100+
101+
With DeepCAVE ([Repo](https://github.com/automl/DeepCAVE), [Paper](https://arxiv.org/abs/2206.03493)) you can visualize your SMAC runs. It is a visualization and analysis tool for AutoML (especially for the sub-problem
102+
hyperparameter optimization) runs.
99103

100104
## License
101105

@@ -110,6 +114,11 @@ You should have received a copy of the 3-clause BSD license
110114
along with this program (see LICENSE file).
111115
If not, see [here](https://opensource.org/licenses/BSD-3-Clause).
112116

117+
## Contacting us
118+
119+
If you have trouble using SMAC, a concrete question or found a bug, please create an [issue](https://github.com/automl/SMAC3/issues). This is the easiest way to communicate about these things with us.
120+
121+
For all other inquiries, please write an email to smac[at]ai[dot]uni[dash]hannover[dot]de.
113122

114123
## Miscellaneous
115124

0 commit comments

Comments
 (0)