v3.6.0
This is the release note of v3.6.0.
Highlights
Optuna 3.6 newly supports the following new features. See our release blog for more detailed information.
- Wilcoxon Pruner: New Pruner Based on Wilcoxon Signed-Rank Test
- Lightweight Gaussian Process (GP)-Based Sampler
- Speeding up Importance Evaluation with PED-ANOVA
- Stricter Verification Logic for FrozenTrial
- Refactoring the Optuna Dashboard
- Migration to Optuna Integration
Breaking Changes
- Implement
optuna.terminator
usingoptuna._gp
(#5241)
These migration-related PRs do not break the backward compatibility as long as optuna-integration v3.6.0 or later is installed in your environment.
- Move TensorBoard Integration (optuna/optuna-integration#56, thanks @dheemantha-bhat!)
- Delete TensorBoard integration for migration to
optuna-integration
(#5161, thanks @dheemantha-bhat!) - Remove CatBoost integration for isolation (#5198)
- Remove PyTorch integration (#5213)
- Remove Dask integration (#5222)
- Migrate the
sklearn
integration (#5225) - Remove BoTorch integration (#5230)
- Remove
SkoptSampler
(#5234) - Remove the
cma
integration (#5236) - Remove the
wandb
integration (#5237) - Remove XGBoost Integration (#5239)
- Remove MLflow integration (#5246)
- Migrate LightGBM integration (#5249)
- Add CatBoost integration (optuna/optuna-integration#61)
- Add PyTorch integration (optuna/optuna-integration#62)
- Add XGBoost integration (optuna/optuna-integration#65, thanks @buruzaemon!)
- Add
sklearn
integration (optuna/optuna-integration#66) - Move Dask integration (optuna/optuna-integration#67)
- Migrate BoTorch integration (optuna/optuna-integration#72)
- Move
SkoptSampler
(optuna/optuna-integration#74) - Migrate
pycma
integration (optuna/optuna-integration#77) - Migrate the Weights & Biases integration (optuna/optuna-integration#79)
- Add LightGBM integration (optuna/optuna-integration#81, thanks @DanielAvdar!)
- Migrate
MLflow
integration (optuna/optuna-integration#84)
New Features
- Backport the change of the timeline plot in Optuna Dashboard (#5168)
- Wilcoxon pruner (#5181)
- Add
GPSampler
(#5185) - Add a super quick f-ANOVA algorithm named PED-ANOVA (#5212)
Enhancements
- Add
formats.sh
based onoptuna/master
(optuna/optuna-integration#75) - Use vectorization for categorical distance (#5147)
- Unify implementation of fast non-dominated sort (#5160)
- Raise
TypeError
ifparams
is not adict
inenqueue_trial
(#5164, thanks @adjeiv!) - Upgrade
FrozenTrial._validate()
(#5211) - Import SQLAlchemy lazily (#5215)
- Add UCB for
optuna._gp
(#5224) - Enhance performance of
GPSampler
(#5274) - Fix inconsistencies between terminator and its visualization (#5276, thanks @SimonPop!)
- Enhance
GPSampler
performance other than introducing local search (#5279)
Bug Fixes
- Fix import path (optuna/optuna-integration#83)
- Fix
README.md
(optuna/optuna-integration#88) - Fix
LightGBMTuner
test (optuna/optuna-integration#89) - Fix
JSONDecodeError
inJournalStorage
(#5195) - Fix trial validation (#5229)
- Make
gp.fit_kernel_params
more robust (#5247) - Fix checking value in
study.tell
(#5269, thanks @ryota717!) - Fix
_split_trials
ofTPESampler
for constrained optimization with constant liar (#5298) - Make each importance evaluator compatible with doc (#5311)
Documentation
- Remove
study optimize
from CLI tutorial page (#5152) - Clarify the
GridSampler
with ask-and-tell interface (#5153) - Clean-up
faq.rst
(#5170) - Make Methods section hidden from Artifact Docs (#5188)
- Enhance README (#5189)
- Add a new section explaing how to customize figures (#5194)
- Replace legacy
plotly.graph_objs
withplotly.graph_objects
(#5223) - Add a note section to explain that reseed affects reproducibility (#5233)
- Update links to papers (#5235)
- adding link for module's example to documetation for the
optuna.terminator
module (#5243, thanks @HarshitNagpal29!) - Replace the old example directory (#5244)
- Add Optuna Dashboard section to docs (#5250, thanks @porink0424!)
- Add a safety guard to Wilcoxon pruner, and modify the docstring (#5256)
- Replace LightGBM with PyTorch-based example to remove
lightgbm
dependency in visualization tutorial (#5257) - Remove unnecessary comment in
Specify Hyperparameters Manually
tutorial page (#5258) - Add a tutorial of Wilcoxon pruner (#5266)
- Clarify that pruners module does not support multi-objective optimization (#5270)
- Minor fixes (#5275)
- Add a guide to PED-ANOVA for
n_trials>10000
(#5310) - Minor fixes of docs and code comments for
PedAnovaImportanceEvaluator
(#5312) - Fix doc for
WilcoxonPruner
(#5313) - Fix doc example in
WilcoxonPruner
(#5315)
Examples
- Remove Python 3.7 and 3.8 from tensorboard CI (optuna/optuna-examples#231)
- Specify black version in the CI (optuna/optuna-examples#232)
- Apply Black 2024 to codebase (optuna/optuna-examples#236)
- Remove MXNet examples (optuna/optuna-examples#237)
- Add an example of Wilcoxon pruner (optuna/optuna-examples#238)
- Make Keras examples Keras 3 friendly (optuna/optuna-examples#239)
- Remove a comment for keras that is not used anymore in this file (optuna/optuna-examples#240)
- Use Keras 3 friendly syntax in MLflow example (optuna/optuna-examples#242)
- Remove
-pre
option in therl
integration (optuna/optuna-examples#243) - Hotfix CI by adding version constraints to
dask
andtensorflow
(optuna/optuna-examples#245)
Tests
- Unify the implementation of
_create_frozen_trial()
undertesting
module (#5157) - Remove the Python version constraint for PyTorch (#5278)
Code Fixes
- Fix unused (and unintended) import (optuna/optuna-integration#68)
- Add Dask to
__init__.py
and fix its documentation generation (optuna/optuna-integration#71) - Replace
optuna.integration
withoptuna_integration
in the doc and the issue template (optuna/optuna-integration#73) - Fix the doc for TensorFlow (optuna/optuna-integration#76)
- Add skopt dependency (optuna/optuna-integration#78)
- Fastai readme fix (optuna/optuna-integration#82, thanks @DanielAvdar!)
- Fix
__init__.py
(optuna/optuna-integration#86) - Apply Black 2024 to codebase (optuna/optuna-integration#87)
- Change the order of dependencies by name (optuna/optuna-integration#92)
- Remove the deprecated decorator of
KerasPruningCallback
(optuna/optuna-integration#93) - Remove
UserWarning
bytests/test_keras.py
(optuna/optuna-integration#94) - Refactor
TPESampler
for more clarity before c-TPE integration (#5117) - Fix
Checks(integration)
failure (#5167) - Fix type annotation of logging (#5176)
- Update NamedTuple in
_ParzenEstimatorParameters
to more modern style (#5193) - Apply Black 2024 to codebase (#5252)
- Simplify annotations in
optuna/study/_optimize.py
(#5261, thanks @shahpratham!) - Unify and refactor
plot_timeline
test (#5281)
Continuous Integration
- Remove non oldest and latest Python versions from tests (optuna/optuna-integration#44)
- Fix flake8 failure in CI (optuna/optuna-integration#55)
- Delete workflow dispatch input (optuna/optuna-integration#57)
- Fix default branch (optuna/optuna-integration#58)
- Fix coverage source path (optuna/optuna-integration#60)
- Not use
black 24.*
(optuna/optuna-integration#64) - Simplify integration test (optuna/optuna-integration#95)
- Hotfix the version of
botorch<0.10.
for CI failures (optuna/optuna-integration#96) - Hotfix the CI error by adding version constraint to dask (optuna/optuna-integration#99)
- Fix tests with MPI (#5166)
- Fix Checks (Integration) CI for NumPy 1.23.5 (#5177)
- Add version constraint for black (#5210)
- Skip the reproducibility tests for lightgbm (#5214)
- Fix the errors in mypy for the
Checks (Integration)
CI (#5217) - Add a version constraint for Torch (#5221)
- Hotfix mypy error in integration (#5232)
- Skip
test_reproducible_in_other_process
forGPSampler
with Python 3.12 (#5251) - Add CI settings to test Matplotlib without Plotly (#5263, thanks @DanielAvdar!)
- Unify indent size, two in toml file (#5271)
- Follow up for split integrations (#5277)
- Add a version constraint to
fakeredis
(#5307)
Other
- Bump up version number to 3.6.0.dev (optuna/optuna-integration#53)
- Bump up version number to 3.6.0 (optuna/optuna-integration#100)
- Bump the version up to v3.6.0.dev (#5143)
- Ignore auto generated files by Sphinx (#5192)
- Delete
labeler.yml
to disable thetriage
action (#5240) - Bump up to version number 3.6.0 (#5318)
Thanks to All the Contributors!
This release was made possible by the authors and the people who participated in the reviews and discussions.
@Alnusjaponica, @DanielAvdar, @HarshitNagpal29, @HideakiImamura, @SimonPop, @adjeiv, @buruzaemon, @c-bata, @contramundum53, @dheemantha-bhat, @eukaryo, @gen740, @hrntsm, @knshnb, @nabenabe0928, @not522, @nzw0301, @porink0424, @ryota717, @shahpratham, @toshihikoyanase, @y0z