pypi optuna 4.8.0
v4.8.0

5 hours ago

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
image60 image26

SHAP-like beeswarm plot visualization

image52

@yasumorishima introduces the new visualization to OptunaHub. Please refer to https://hub.optuna.org/visualization/plot_beeswarm/ for details.

New Features

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 PartialFixedSampler and TPESampler with group decomposed search space (#6428)
  • Fix TPESampler with multivariate and constant_liar (#6505)

Documentation

  • Add documentation indicating that WilcoxonPruner requires scipy (#6477)
  • Remove version & language selectors in the sidebar of docs (#6482)

Examples

Tests

  • Add SamplerTestCase class in optuna.testing package (#6424)
  • Move test_before_trial and test_after_trial_* to test_trial.py and test_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_CHECKING for import in pruners/_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_CHECKING for import in pruners/_hyperband.py (#6447, thanks @yasumorishima!)
  • Use TYPE_CHECKING for typing-only imports in test_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_CHECKING block (#6484, thanks @acabellom!)
  • Refactor __repr__ in trial/_frozen.py to use f-strings (#6485, thanks @Bhavyag1337!)
  • Use TYPE_CHECKING in pruners/_threshold.py (#6487, thanks @LuciferDono!)
  • Use f-string in tutorial/10_key_features/005_visualization.py (#6489, thanks @maheer14!)
  • Move JSONSerializable import to TYPE_CHECKING in study/study.py (#6490, thanks @yasumorishima!)
  • Use f-string and {var_name=} instead of .format and var_name={var_name} (#6494, thanks @buddy0452004!)
  • Move optuna import to TYPE_CHECKING in pruners/_patient.py (#6501, thanks @yasumorishima!)
  • Move application import to TYPE_CHECKING in pruners/_patient.py (#6502, thanks @nightcityblade!)
  • Move application import to TYPE_CHECKING in pruners/_successive_halving.py (#6503, thanks @nightcityblade!)
  • Replace .format() with f-strings in 002_configurations.py (#6506, thanks @acabellom!)
  • Fix type checking (#6507, thanks @sateeshkumarb!)

Continuous Integration

Other

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

Don't miss a new optuna release

NewReleases is sending notifications on new releases.