-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 0.1.8rc2 #414
Merged
Merged
Release 0.1.8rc2 #414
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Co-Authored-By: Xavier Bouthillier <[email protected]>
Update developer documentation
Add link to cookiecutter template
Release & Packaging
Why: The helper functions were in different modules which was confusing. Moving them to storage/base and storage/legacy makes it more coherent.
Why: The method fetch many trials, not only one, hence the name is confusing.
Why: Database corruption occurs when there is Timeouts in PickledDB. The objective is saved but status is not set to completed. How: We catch non-completed trials with objective and log a warning with a pointer to documentation to manually fix corrupted trials.
Why: When there are issues that are expected, we silent the stack trace, print a user-friendly error and return an error code. The main script should leave with SystemExit(error code) otherwise it looks like it ended without any errors.
Handle producer config in experiment section
Why: Some commands such as `orion hunt` cannot be called without any arguments. The most helpful thing to do in such case is to print the help message instead of an error. How: Mark commands like `hunt` with `help_empty` in the base parser so that it knows that if no arguments are passed help should be printed.
Add roadmap update to the list of steps for a release
Why: The doc was referring to the test algo gradient descent instead of reusing the extensive documentation of the cookiecutter.
Update Plugins documentation section
Promote Oríon's agnosticity
Print help when calling `orion` alone
Fix mongodb count for v < 3.7
Raise exception when no prior is provided
Why: By merging the release branch on develop, master would have one additional commit ahead of develop at each release. Merging master on develop syncs them properly.
Codecov Report
@@ Coverage Diff @@
## master #414 +/- ##
===========================================
- Coverage 94.69% 47.52% -47.17%
===========================================
Files 62 70 +8
Lines 9826 13009 +3183
Branches 218 322 +104
===========================================
- Hits 9305 6183 -3122
- Misses 504 6800 +6296
- Partials 17 26 +9
Continue to review full report at Codecov.
|
Thomsch
approved these changes
Jul 2, 2020
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Important changes
The python API is finally ready for release v0.1.8! 🎉
Python API
An API is now available to run experiments directly from python instead of using the commandline.
Current API provides a simple function
workon
for cheap experiments that can be executed by a single worker, and a genericExperimentClient
(see example above) object for optimization with multiple workers.See documentation for more details.
New Algorithms
Hyperband
Hyperband extends the Successive Halving algorithm by providing a way to exploit a fixed budget with different number of configurations for SuccessiveHalving algorithm to evaluate. It is especially useful when the trials are expensive to run and cheap noisy evaluations are possible. Think of it as using early evaluation during training to filter out bad candidates.
For more information on the algorithm, see original paper.
TPE
Tree-structured Parzen Estimator (TPE) algorithm is one of Sequential Model-Based Global Optimization (SMBO) algorithms, which will build models to propose new points based on the historical observed trials.
Instead of modeling p(y|x) like other SMBO algorithms, TPE models p(x|y) and p(y), and p(x|y) is modeled by transforming that generative process, replacing the distributions of the configuration prior with non-parametric densities.
TPE has the advantage of scaling particularly well compared to most Model-Based algorithm which are typically sequential. It does not model however dependencies between hyper-parameters, they
are assumed independent.
For more information on the algorithm, see original papers at:
Storage
To support integration with other tools and services such as MLFlow or Weight & Biases we wrapped our previous database backend with a storage backend. The database backends are now available within the Legagy storage backend. In addition, we now have a backend for Track. The latter is planned to serve as a bridge between Oríon and other experiment management platforms
or services. Track package development is on the ice for now, but contributions are very much welcomed. :)
Drop python 3.5, support 3.8
Although Oríon may still be compatible with python 3.5 we do not maintain it's support anymore. Python 3.8 is now officially supported.
Precision of real dimensions
By default Oríon now rounds hyperparameters to 4 decimals (ex 0.00041239123 would become 0.0004124). The rational is that little variations on continuous hyperparameters typically leads
to little variations in the in objective. When sharing hyperparameters (ex: in publications), one can now share the rounded values with the exact corresponding objectives instead of rounding the hyperparameters after the execution and risk sharing unreproducible results.
Rework of documentation
The documentation has been through a major rework.
Detailed list of changes
New features
(useful to resume across fidelities)(Dev/recover experiment #313, Add hash params #322)
Breaking changes
Bug Fixes
orion
alone (Print help when callingorion
alone #408)Other improvements
Documentation improvements