This is the release note of v3.4.0.
Highlights
Optuna 3.4 newly supports the following new features. See our release blog for more detailed information.
- Preferential Optimization (Optuna Dashboard)
- Optuna Artifact
- Jupyter Lab Extension
- VS Code Extension
- User-defined Distance for Categorical Parameters in TPE
- Constrained Optimization Support for Visualization Functions
- User-Defined Plotly’s Figure Support (Optuna Dashboard)
- 3D Model Viewer Support (Optuna Dashboard)
Breaking Changes
New Features
- Support constraints for intermediate values plot (#4851, thanks @adjeiv!)
- Display all objectives on hyperparameter importances plot (#4871)
- Implement
get_all_study_names()
(#4898) - Support constraints
plot_rank
(#4899, thanks @ryota717!) - Support Study Artifacts (#4905)
- Support specifying distance between categorical choices in
TPESampler
(#4926) - Add
metric_names
getter to study (#4930) - Add artifact middleware for exponential backoff retries (#4956)
- Add
GCSArtifactStore
(#4967, thanks @semiexp!) - Add
BestValueStagnationEvaluator
(#4974, thanks @smygw72!) - Allow user-defined objective names in hyperparameter importance plots (#4986)
Enhancements
- CHG constrained param displayed in #cccccc (#4877, thanks @louis-she!)
- Faster implementation of fANOVA (#4897)
- Support constraint in plot slice (#4906, thanks @hrntsm!)
- Add mimetype input (#4910, thanks @hrntsm!)
- Show all ticks in
_parallel_coordinate.py
when log scale (#4911) - Speed up multi-objective TPE (#5017)
Bug Fixes
- Fix numpy indexing bugs and named tuple comparing (#4874, thanks @ryota717!)
- Fix
fail_stale_trials
with race condition (#4886) - Fix alias handler (#4887)
- Add lazy random state and use it in
RandomSampler
(#4970, thanks @shu65!) - Fix TensorBoard error on categorical choices of mixed types (#4973, thanks @ciffelia!)
- Use lazy random state in samplers (#4976, thanks @shu65!)
- Fix an error that does not consider
min_child_samples
(#5007) - Fix
BruteForceSampler
in parallel optimization (#5022)
Documentation
- Fix typo in
_filesystem.py
(#4909) - Mention a pruner instance is not stored in a storage in resuming tutorial (#4927)
- Add introduction of
optuna-fast-fanova
in documents (#4943) - Add artifact tutorial (#4954)
- Fix an example code in
Boto3ArtifactStore
's docstring (#4957) - Add tutorial for
JournalStorage
(#4980, thanks @semiexp!) - Fix document regarding
ArtifactNotFound
(#4982, thanks @smygw72!) - Add the workaround for duplicated samples to FAQ (#5006)
Examples
- Add huggingface's link to external projects (optuna/optuna-examples#201)
- Fix samplers CI (optuna/optuna-examples#202)
- Set version constraint on aim (optuna/optuna-examples#206)
- Add an example of Optuna Terminator for LightGBM (optuna/optuna-examples#210, thanks @hamster-86!)
Tests
- Reduce
n_trials
intest_combination_of_different_distributions_objective
(#4950) - Replaces California housing dataset with iris dataset (#4953)
- Fix numpy duplication warning (#4978, thanks @torotoki!)
- Make test order deterministic for
pytest-xdist
(#4999)
Code Fixes
- Move shap (optuna/optuna-integration#32)
- Remove shap (#4791)
- Use
isinstance
instead ofif type() is ...
(#4896) - Make
cmaes
dependency optional (#4901) - Call internal sampler's
before_trial
(#4914) - Refactor
_grid.py
(#4918) - Fix the
checks-integration
errors on LightGBMTuner (#4923) - Replace deprecated
botorch
method to remove warning (#4940) - Fix type annotation (#4941)
- Add
_split_trials
instead of_get_observation_pairs
and_split_observation_pairs
(#4947) - Use
__future__.annotations
inoptuna/visualization/_optimization_history.py
(#4964, thanks @YuigaWada!) - Fix #4508 for
optuna/visualization/_hypervolume_history.py
(#4965, thanks @RuTiO2le!) - Use future annotation in
optuna/_convert_positional_args.py
(#4966, thanks @hamster-86!) - Fix type annotation of
SQLAlchemy
(#4968) - Use
collections.abc
inoptuna/visualization/_edf.py
(#4969, thanks @g-tamaki!) - Use
collections.abc
in plot pareto front (#4971) - Remove
experimental_func
frommetric_names
property (#4983, thanks @semiexp!) - Add
__future__.annotations
toprogress_bar.py
(#4992) - Fix annotations in
optuna/optuna/visualization/matplotlib/_optimization_history.py
(#5015, thanks @sousu4!)
Continuous Integration
- Fix checks integration (#4869)
- Remove fakeredis version constraint (#4873)
- Support
asv
0.6.0 (#4882) - Fix speed-benchmarks CI (#4903)
- Fix Tests (MPI) CI (#4904)
- Fix xgboost pruning callback (#4921)
- Enhance speed benchmark (#4981, thanks @g-tamaki!)
- Drop Python 3.7 on
tests-mpi
(#4998) - Remove Python 3.7 from the development docker image build (#5009)
- Use CPU version of PyTorch in Docker image (#5019)
Other
- Bump up version number to v3.4.0.dev (optuna/optuna-integration#37)
- Update python shield in
README.md
(optuna/optuna-integration#39) - Replace deprecated mypy option (optuna/optuna-integration#40)
- Bump up version to v3.4.0 (optuna/optuna-integration#42)
- Bump the version up to v3.4.0.dev (#4861)
- Use OIDC (#4867)
- Add
FUNDING.yml
(#4912) - Update
optional-dependencies
and document deselecting integration tests inCONTRIBUTING.md
(#4962) - Bump the version up to v3.4.0 (#5031)
Thanks to All the Contributors!
This release was made possible by the authors and the people who participated in the reviews and discussions.
@Alnusjaponica, @HideakiImamura, @RuTiO2le, @YuigaWada, @adjeiv, @c-bata, @ciffelia, @contramundum53, @cross32768, @eukaryo, @g-tamaki, @g-votte, @gen740, @hamster-86, @hrntsm, @hvy, @keisuke-umezawa, @knshnb, @lucasmrdt, @louis-she, @moririn2528, @nabenabe0928, @not522, @nzw0301, @ryota717, @semiexp, @shu65, @smygw72, @sousu4, @torotoki, @toshihikoyanase, @xadrianzetx