This is the release note of v4.8.0.
Highlights
Support for Constant Liar Strategy to GPSampler
A constant liar strategy for efficient parallelization has been introduced to GPSampler by @sawa3030. The figures (left: v4.7.0, right: v4.8.0) show that the overlap of search points has decreased, and a wider variety of solutions are being explored. The experiment uses n_jobs = 10 and n_trials = 100. Currently, this feature supports single-objective and unconstrained optimization. Further extensions are coming in v4.9.0.
| v4.7.0 | v4.8.0 |
|---|---|
|
|
SHAP-like beeswarm plot visualization
@yasumorishima introduces the new visualization to OptunaHub. Please refer to https://hub.optuna.org/visualization/plot_beeswarm/ for details.
New Features
- Add Trackio Integration for Optuna (optuna/optuna-integration#259, thanks @ParagEkbote!)
- Add constant liar strategy to
GPSampler(#6430)
Enhancements
- Validate artifact_id in FileSystemArtifactStore to prevent path traversal (#6432, thanks @RinZ27!)
- fix: correct inverted warning message in pareto front plot (#6498, thanks @aerosta!)
Bug Fixes
- Fix shared callback state in parallel OptunaSearchCV with LightGBM (optuna/optuna-integration#260, thanks @Quant-Quasar!)
- Fix GPSampler crash when torch default device is CUDA (#6418, thanks @VedantMadane!)
- Fix combination between
PartialFixedSamplerandTPESamplerwith group decomposed search space (#6428) - Fix
TPESamplerwithmultivariateandconstant_liar(#6505)
Documentation
- Add documentation indicating that
WilcoxonPrunerrequiresscipy(#6477) - Remove version & language selectors in the sidebar of docs (#6482)
Examples
- Apply black 26.1.0 (optuna/optuna-examples#348)
- Remove CI workflow for allennlp since no longer maintained (optuna/optuna-examples#351)
- Reduce the frequency of scheduled CI triggers (optuna/optuna-examples#352)
- Remove the scheduled trigger for
aimCI (optuna/optuna-examples#353) - Add constraint to
transformers(optuna/optuna-examples#355)
Tests
- Add
SamplerTestCaseclass inoptuna.testing package(#6424) - Move
test_before_trialandtest_after_trial_*totest_trial.pyandtest_study.py, respectively (#6429)
Code Fixes
- Move type-only imports to TYPE_CHECKING in
_param_importances.py(#6423, thanks @dotz0ver!) - Use future.annotations in matplotlib/_intermediate_values (#6425, thanks @Lakshman142!)
- Reformat files with the latest version of ruff (#6426)
- Replace
.format()with f-strings in_parallel_coordinate.py(#6431, thanks @yasumorishima!) - Use
TYPE_CHECKINGfor import inpruners/_base.py(#6434, thanks @yasumorishima!) - Use f-strings in
optuna/storages/_base.py(#6435, thanks @edwiniac!) - Use f-strings in
_contour.py(#6436, thanks @edwiniac!) - Use f-strings in
_intermediate_values.py(#6437, thanks @edwiniac!) - Use f-strings in
cli.py(#6438, thanks @edwiniac!) - Use f-strings in
optuna/testing/storages.py(#6439, thanks @edwiniac!) - Use f-strings in
optuna/storages/journal/_storage.py(#6440, thanks @edwiniac!) - Use f-strings in
_imports.py(#6442, thanks @edwiniac!) - Use f-strings in
_deprecated.py(#6443, thanks @edwiniac!) - Use
TYPE_CHECKINGfor import inpruners/_hyperband.py(#6447, thanks @yasumorishima!) - Use
TYPE_CHECKINGfor typing-only imports intest_timeline.py(#6451, thanks @KRMed!) - Refactor: Use f string in multi_objective tutorial (#6455, thanks @ryota717!)
- refactor: move type-only imports into TYPE_CHECKING in samplers/_grid.py (#6466, thanks @dhruvildarji!)
- refactor: move BaseDistribution into TYPE_CHECKING in search_space/intersection.py (#6467, thanks @dhruvildarji!)
- Simplify Union type alias in optuna/samplers/_cmaes.py (#6478, thanks @roli-lpci!)
- Use f-string in
_convert_positional_args.py(#6483, thanks @toroleapinc!) - Add acqf import inside a
TYPE_CHECKINGblock (#6484, thanks @acabellom!) - Refactor
__repr__intrial/_frozen.pyto use f-strings (#6485, thanks @Bhavyag1337!) - Use
TYPE_CHECKINGinpruners/_threshold.py(#6487, thanks @LuciferDono!) - Use f-string in
tutorial/10_key_features/005_visualization.py(#6489, thanks @maheer14!) - Move
JSONSerializableimport toTYPE_CHECKINGinstudy/study.py(#6490, thanks @yasumorishima!) - Use f-string and {var_name=} instead of .format and var_name={var_name} (#6494, thanks @buddy0452004!)
- Move
optunaimport toTYPE_CHECKINGinpruners/_patient.py(#6501, thanks @yasumorishima!) - Move application import to
TYPE_CHECKINGinpruners/_patient.py(#6502, thanks @nightcityblade!) - Move application import to
TYPE_CHECKINGinpruners/_successive_halving.py(#6503, thanks @nightcityblade!) - Replace
.format()with f-strings in002_configurations.py(#6506, thanks @acabellom!) - Fix type checking (#6507, thanks @sateeshkumarb!)
Continuous Integration
- Fix test for
FastAIV2PruningCallback(optuna/optuna-integration#265) - Fix windows-test failure due to
NamedTemporaryFilePool(#6417) - Fix checks-optional CI (#6422)
- Fix mypy errors in GP module (#6492)
Other
- Bump up version number to
4.8.0.dev(optuna/optuna-integration#263) - Bump the version up to v4.8.0 (optuna/optuna-integration#269)
- Bump up version to 4.8.0.dev (#6414)
- Update news section for the v4.7 release (#6420)
Thanks to All the Contributors!
This release was made possible by the authors and the people who participated in the reviews and discussions.
@Bhavyag1337, @KRMed, @Lakshman142, @LuciferDono, @ParagEkbote, @Quant-Quasar, @RinZ27, @VedantMadane, @acabellom, @aerosta, @buddy0452004, @c-bata, @dhruvildarji, @dotz0ver, @edwiniac, @gen740, @kAIto47802, @maheer14, @nabenabe0928, @nightcityblade, @not522, @roli-lpci, @ryota717, @sateeshkumarb, @sawa3030, @toroleapinc, @y0z, @yasumorishima

