This is the release note of v1.0.0. See here for the complete list of solved issues and merged PRs.
Highlights
The first major version of Optuna v1.0 is released. It includes a stable API, significant performance improvements by reduced memory allocations and database storage accesses. Documentation has been revised and Jupyter Notebook examples are available on Google Colab. The visualization API has become customizable such that layouts can be modified.
Python 2 Support Drop
Due to the end-of-life (EOL) of Python 2 in January 1, 2020, Optuna has dropped the support for Python 2 and has now shifted to support Python 3.5.1 and above.
Blog
A developer blog has started. The first post is about this release and future roadmaps.
New Features
- Use Joblib to parallelize optimization. (#692, thanks @AnesBenmerzoug!)
trials_dataframe
to allow returningDataFrame
with flattened columns. (#736)- Make plot functions return Plotly graph object. (#704)
Enhancements
- Add options to disable trials deep copy. (#696)
- Slice plot to dynamically resize figure width depending on number of parameters. (#720)
- Fix implementations of
__eq__
. (#726) - Speed up
study.best_trial
for RDB. (#729, thanks @chris-chris!) - Use the preferred module level logger in
structs.py
. (#768) - Use
SourceFileLoader
instead ofimp
module. (#778) - Add warning about use of
InMemoryStorage
with multi-processing. (#780) - Avoid redundant sort (reverse) in successive halving. (#807)
Bug Fixes
- Use default parameter when tuned parameter doesn't improve. (#721)
Documents
- Introduce
doctest
. (#702) - Comment out notes for contributors in GitHub templates. (#738, thanks @crcrpar!)
- Add installation via
conda
. (#739, thanks @crcrpar!) - Add badges to README. (#740, thanks @crcrpar!)
- First Contribution clarity edits. (#744)
- Clarity edits to
configurations.rst
. (#747) - Add Gitter badge to README.md. (#749)
- Replace Slack with Gitter in the issue template. (#750)
- Setup
intersphinx
. (#754) - Follow Google Analytics Privacy Disclosure Policy. (#776)
- Update example dataframe in tutorial. (#784)
- Document
BasePruner
in docs. (#788, thanks @crcrpar!) - Update docstring of
BasePruner.prune
. (#793, thanks @crcrpar!) - Add favicon to doc. (#796, thanks @harupy!)
- Fix indentation in
tutorial/index.rst
. (#816, thanks @harupy!) - Fix warnings in the documentation build. (#819, thanks @harupy!)
- Add integration modules list to README. (#830)
Examples
- Add an example for
OptunaSearchCV
. (#722, thanks @yutayamazaki!) - Add
scikit-image
example. (#730, thanks @tohmae!) - Merge visualization examples. (#735)
- Add "Open In Colab" badge to visualization example. (#737, thanks @crcrpar!)
- Add badge on README that launches starter notebook. (#741, thanks @harupy!)
- Consistent import of
optuna
in examples. (#746) - Remove Google Colab preinstalled library from
quickstart.ipynb
. (#753) - Refactor model definition of
examples/pytorch_simple.py
. (#779, thanks @crcrpar!) - Fix Colab badge on visualization example notebook. (#789, thanks @harupy!)
- Add MLflow example. (#795, thanks @harupy!)
- Use callback to report results to MLflow. (#799)
- Add README with gif to MLflow example. (#802, thanks @harupy!)
- Revise quickstart Jupyter notebook. (#804)
Tests
- Stop passing step to
should_prune
inchainermn
. (#764, thanks @crcrpar!) - Remove a temporary workaround in the
test_callbacks
function. (#769) - Add lock acquisition to make
test_callbacks
test thread-safe. (#773) - Simplify
Study
unit test parameterizations. (#774) - Remove
cache_mode
argument to fix a broken test. (#790)
Code Fixes
- Dissect
optuna/visualization.py
. (#681, thanks @crcrpar!) - Refactor
setup.py
. (#742) - Fix deprecated property access. (#751)
- Remove
StudySummary.__ne__
. (#756) - Remove redundant trailing commas. (#757)
- Fix a typo in
RDBStorage
. (#765) - Change
logger
to study's module variable. (#770, thanks @crcrpar!) - Separate standard library imports from third party imports. (#777, thanks @yutayamazaki!)
- Early commit after RDB session creation. (#792)
- Refactoring of successive halving. (#808)
Installation
- Remove
cython
from requirements. (#781) - Add version restriction of
scipy
. (#801) - Add version constraint of
scikit-learn
(<=0.22.0
). (#826) - Add version constraint of
pillow
to avoidtorchvision
's issue. (#827)
Breaking Changes
- Prefix '_' to private functions in
optuna.dashboard
. (#698) - Prefix '_' to private classes and attributes in
optuna.samplers
. (#699) - Prefix '_' to private attributes of pruners. (#703)
- Make plot functions return Plotly graph object. (#704)
- Prefix '_' to private attributes of classes in
optuna.integration
. (#705) - Remove
enable_cache
option fromRDBStorage
. (#706) - Remove Python 2 version check from
integration.__init__.py
condition. (#712) - Remove
six
. (#714) - Remove
__future__
. (#715) - Make
bokeh-allow-websocket-origins
required. (#716) - Make
study_id
private. (#718) - Add
FrozenTrial.__lt__
to sort trials without key. (#719) - Remove version checks from
setup.py
. (#724) trials_dataframe
to allow returningDataFrame
with flattened columns. (#736)BaseDistribution.__hash__
to take__class__
into account. (#743)- Only allow
float
,str
and castable tofloat
in categorical distribution. (#758) - Improving usability of
TrialState
in trials dataframes. (#771) - Remove deprecated
product_search_space
function. (#772) - Add 'attrs' option to
Study.trials_dataframe()
. (#775)