This is the release note of v4.7.0.
Highlights
Two New Multi-Objective Samplers Added to OptunaHub!
@hrntsm introduces two new multi-objective samplers—SPEA-II (Strength Pareto Evolutionary Algorithm 2) and HypE (Hypervolume Estimation Algorithm)—to OptunaHub. SPEA-II is an improved multi-objective evolutionary algorithm that differs from NSGA-II in its selection mechanism. HypE is a fast, hypervolume-based evolutionary algorithm designed for many-objective optimization problems. Please refer to the following pages for more details:
PedAnovaImportanceEvaluator Now Supports Local Hyperparameter Importance Computation
The target_quantile and region_quantile arguments have been introduced to PedAnovaImportanceEvaluator. This change allows you to investigate local hyperparameter importance rather than the global one with region_quantile < 1.0. See the original paper for the technical details.
Enhancements
- Introduce stacklevel-aware custom warnings (#6293)
- Cache distributions to skip consistency check (#6301)
- Add warnings when
JournalStoragelock acquisition is delayed (#6361) - Add support for local HPI in PED-ANOVA (#6362)
Bug Fixes
- Fix log PDF of discrete trunc log-norm distribution for
TPESampler(#6258) - Fix coefficient in PED-ANOVA (#6358)
- Fix GPSampler crash when default torch device is CUDA (#6397, thanks @Quant-Quasar!)
Documentation
- Add
SECURITY.md(#6317) - Add a note for future dev of exclusive HV (#6318)
- Update GPSampler documentation to include D-BE optimization details (#6347, thanks @Kaichi-Irie!)
- Revert PR #6354 to enable
-Woption on Sphinx build (#6373)
Examples
- Disable scheduled runs for PyTorch and visualization temporarily (optuna/optuna-examples#337)
- Fix skorch example: Replace unavailable OpenML MNIST (optuna/optuna-examples#338, thanks @sotagg!)
- Pin
minioversion to<=7.2.18to fix CI & stop daily CI running (optuna/optuna-examples#339) - fix spark example (optuna/optuna-examples#342, thanks @fritshermans!)
- Pin scikit-learn to < 1.6.0 for lightgbm (optuna/optuna-examples#343)
- Remove python 3.9 due to EOL Status (optuna/optuna-examples#344, thanks @ParagEkbote!)
- Add IPython as a dependency of fastai example (optuna/optuna-examples#347)
Tests
Code Fixes
- Replace
.format()with f-string in_setup_studies(#6326, thanks @haitham404!) - Update
_upload.pyforTYPE_CHECKING(#6327, thanks @satyarth7srivastava!) - Replace .format() with f-string in progress_bar.py (#6328, thanks @Nayil97!)
- Use f-strings in
optuna/samplers/_cmaes.py(#6331, thanks @swativdusane!) - Replace
.format()with f-string in_parallel_coordinate.py(#6333, thanks @satyarth7srivastava!) - Refactor/fstring storage rdb (#6336, thanks @gadmin7!)
- Migrate to ruff from black/blackdoc/isort/flake8 (#6341)
- Replace
.formatwith f-strings inoptuna/importance/_base(#6342, thanks @VihaanMotwani!) - updated
_terminator_improvement.pyforTYPE_CHECKING(#6343, thanks @satyarth7srivastava!) - Replace
.formatwith f-string in_param_importances.py(#6345, thanks @Harshadev-24!) - Replace .format() with f-strings in several modules (#6348, thanks @varundevr!)
- Replace more .format() calls with f-strings (#6349, thanks @varundevr!)
- Replace
.formatwith f-string intutorial/20_recipes/004_cli.py(#6350, thanks @RektPunk!) - Replace
.formatwith f-string inoptuna/study/_optimize.py(#6351, thanks @RektPunk!) - Format
optuna/files with Ruff (#6352) - Refactor: Use f-string in 001_rdb.py (#6356, thanks @sotagg!)
- Format
tests/andtutorials/files with Ruff (#6360) - Remove redundant
_color_supported()check (#6363) - Add
StorageTestCaseclass inoptuna.testingpackage (#6369) - Change string formatting in
optuna/pruners/_hyperband.py(#6370, thanks @eleannapapaio!) - Refactor
test_study.pyto use f-string instead of.format()(#6372, thanks @nepersoned!) - Fix mypy error for np.select (#6374)
- Change string formatting for
_successive_halving.py(#6375, thanks @spenam!) - Fix type annotations for
optuna/trial/_frozen.py(#6377, thanks @spenam!) - fix type annotations for
optuna/study/study.py(#6378, thanks @spenam!) - Fix type annotations for
tests/study_tests/test_study.py(#6379, thanks @spenam!) - Move type-only imports to
TYPE_CHECKINGintest_visualizations.py(#6380, thanks @Sip4818!) - Move type-only imports to
TYPE_CHECKINGin_constrained_optimization.py(#6381, thanks @Sip4818!) - Replace format with f-string (#6383, thanks @varundevr!)
- Move type-only imports to
TYPE_CHECKINGin_multi_objective.py(#6385, thanks @Sip4818!) - Move
FrozenTrialimport underTYPE_CHECKINGfor_study_summary.pyfile (#6386, thanks @Sip4818!) - Move type-check imports to
TYPE_CHECKINGinoptuna/terminator/callback.py(#6388, thanks @Sip4818!) - Using f-string instead of
.format()(#6389, thanks @Lakshman142!) - Use f-strings in
optuna/_experimental.py(#6390, thanks @Rohan0497!) - Fix invalid
StorageTestCasescenarios involving trial state and values (#6391) - Move
type-hintimport insideType-Checkingblock inoptuna\terminator\erroreval.py(#6395, thanks @Sip4818!) - Move
type-checkimports toTYPE_CHECKINGinoptuna\terminator\improvement\emmr.py(#6396, thanks @Sip4818!) - Move typing-only imports under
TYPE_CHECKINGinmatplotlib/_slice.py(#6399, thanks @kapishyadav!) - Use
logger.warninginstead ofoptuna_warnfor lock-acquisition delay notifications (#6400) - Update string formatting in
optuna/samplers/_grid.py(#6401, thanks @kapishyadav!) - Updating
storages/_in_memory.pyto use f-strings (#6404, thanks @jrings!) - Move
type-hintimports intotype-checkingblock inoptuna\terminator\improvement\evaluator.py(#6405, thanks @Sip4818!) - Move
type-hintimports intotype-checkingblock inmedian_erroreval.py(#6408, thanks @Sip4818!) - Replace
.format()with f-string in_rank.py(#6409, thanks @jwalith!) - Replace .format() with f-string in test_hyperband.py (#6411, thanks @Banjiola!)
- Replace .format() with f-string in _fixed.py (#6412, thanks @VedantMadane!)
Continuous Integration
- Fix for CI (optuna/optuna-integration#258)
- Add ipython as a dependency of fastai (optuna/optuna-integration#261)
- Remove FastAIV2PruningCallback from docs to resolve warning (optuna/optuna-integration#264)
- Dispose SQLAlchemy's engine in
storage_tests/test_with_server.py(#6330) - Dispose SQLAlchemy's engine in
storage_tests/test_cached_storage.py(#6337) - Dispose SQLAlchemy's engine in
storage_tests/rdb_tests/test_storage.py(#6338) - Support Python 3.14 (#6339)
- Temporarily disable
-Woption on Sphinx build (#6354)
Other
- Bump up version (optuna/optuna-integration#256)
- Bump up version number to 4.7.0 (optuna/optuna-integration#262)
- Bump up to the version number
v4.7.0.dev(#6325) - Update the news section on README (#6335)
- Remove Codecov usage (#6340)
- Remove
formats.shand tidy upCONTRIBUTING.md(#6353) - Remove
asvand the speed benchmark workflow (#6393) - Bump up version to v4.7.0 (#6413)
Thanks to All the Contributors!
This release was made possible by the authors and the people who participated in the reviews and discussions.
@Alnusjaponica, @Banjiola, @Harshadev-24, @HideakiImamura, @Kaichi-Irie, @Lakshman142, @Nayil97, @ParagEkbote, @Quant-Quasar, @RektPunk, @Rohan0497, @Sip4818, @VedantMadane, @VihaanMotwani, @c-bata, @eleannapapaio, @fritshermans, @fusawa-yugo, @gadmin7, @gen740, @haitham404, @jiayusu, @jrings, @jwalith, @kAIto47802, @kapishyadav, @nabenabe0928, @nepersoned, @not522, @nzw0301, @satyarth7srivastava, @sawa3030, @sotagg, @spenam, @swativdusane, @toshihikoyanase, @varundevr, @y0z