pypi optuna 4.6.0
v4.6.0

10 hours ago

This is the release note of v4.6.0.

Highlights

Optuna Dashboard LLM Integration

Optuna Dashboard is a web-based tool that helps you easily explore and visualize your Optuna optimization history. The latest release, v0.20.0, introduces LLM integration, enabling the natural language-based Trial filtering and automatic Plotly chart generation. Please refer to the release blog for more details.

image55

Further Speed Enhancements for GPSampler

GPSampler becomes significantly faster owing to parallelized multi-start acquisition function optimization via PyTorch batching, and to optimized NumPy operations.

image15

Full Support for Multi-objective and Constrained Optimization in AutoSampler

We have fully implemented sampler selection rules for multi-objective and constrained optimization in AutoSampler. For more details, please see our blog post, "AutoSampler: Full Support for Multi-Objective & Constrained Optimization."

optuna-blog-autosampler-multi-constrained

Additions of Robust Bayesian Optimization Packages

Robust Bayesian optimization methods have been added to OptunaHub. Robust Bayesian optimization enables suggesting more robust parameters against input perturbations. This is especially helpful for Sim2Real transfer scenarios.

image25

Breaking Changes

Enhancements

  • Use iterator for lazy evaluation in journal storage’s read_logs (#6144)
  • Cache pair-wise distances to speed up GPSampler (#6244)
  • Speed up LogEI implementation (#6248)
  • Speed up EHVI by optimizing tensor operation order (#6257)
  • Use the decremental approach in the hypervolume contribution calculation (#6264)
  • Use cached trials in TPESampler's sample_relative (#6265)
  • Remove find_or_raise_by_id in _set_trial_value_without_commit (#6266)
  • Speed up GPSampler by Batching Acquisition Function Evaluations (#6268, thanks @Kaichi-Irie!)
  • Use cached study direction and trial for _CachedStorage's get_best_trial (#6270)
  • Add upsert in _set_trial_attr_without_commit for PostgreSQL (#6282, thanks @jaikumarm!)
  • Add states argument to _read_trials_from_remote_storage (#6288)
  • Use cached trials for intersection search space calculation (#6291)
  • Replace np.linalg.inv with np.linalg.cholesky to speed up GPSampler for numpy>=2.0.0 (#6296)

Bug Fixes

  • Skip trial validation on copy_study (#6249)
  • Fix incremental update algorithm in _CachedStorage's _read_trials_from_remote_storage (#6310)
  • Add safety guard for exhaustive search (#6321)

Documentation

  • Add AutoSampler to the sampler comparison table in the API reference (#6260, thanks @Kaichi-Irie!)
  • Update the GPSampler document to reflect support for constrained multi-objective optimization (#6262)
  • Add a link to the metric TPE paper in the TPESampler document (#6263)
  • Update announcement (#6285)
  • Update the table of Samplers in docs (#6287, thanks @fusawa-yugo!)
  • Fix the table of samplers in the docs (#6290)

Examples

Tests

Code Fixes

  • Update target version of black from Python 3.8 to 3.9 (optuna/optuna-integration#254)
  • Move fit_kernel_params to GPRegressor (#6243)
  • Modify TYPE_CHECKING in _brute_force.py (#6259, thanks @Kaichi-Irie!)
  • Move SciPy to the lazy import section in _gp/scipy_blas_thread_patch.py (#6269, thanks @Kaichi-Irie!)
  • Make the interface of batched_lbfgsb module compatible with scipy.optimize (#6273, thanks @Kaichi-Irie!)
  • Fix type checking in optuna.study._frozen.py (#6275, thanks @GabrielRomaoG!)
  • Move typing-only imports under TYPE_CHECKING in optuna.importance.__init__ (#6278, thanks @euangoodbrand!)
  • Move typing-only imports under TYPE_CHECKING in FanovaImportanceEvaluator (#6279, thanks @euangoodbrand!)
  • Move typing-only imports under TYPE_CHECKING in /study/_optimize.py (#6280, thanks @euangoodbrand!)
  • Use TYPE_CHECKING in optuna/pruners/_nop.py (#6297, thanks @AddyM!)
  • Use TYPE_CHECKING in optuna/samplers/_random.py (#6298, thanks @AddyM!)
  • Speed up squared distance computation (#6300)
  • Refactor emmr (#6304)
  • Fix string format of optuna/distributions.py (#6306)
  • Fix string format of tests/samplers_tests/tpe_tests/test_truncnorm.py (#6307)
  • Update black target to Python 3.9 (#6308)
  • Fix string format for optuna/study/study.py (#6309, thanks @unKnownNG!)
  • Changed the old .format code to the new f string format in the test_journal.py (#6312, thanks @Zrahay!)
  • Update string formatting in visualization/_pareto_front.py (#6314, thanks @dross20!)
  • Use f-string in 001_first.py (#6315, thanks @satyarth7srivastava!)
  • Use f-strings in _intermediate_values.py (#6316, thanks @nihalsiddiqui7!)
  • Refactor .format to f-string in _percentile.py (#6323, thanks @Jongwan93!)

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.

@AddyM, @GabrielRomaoG, @Jongwan93, @Kaichi-Irie, @ParagEkbote, @Zrahay, @c-bata, @contramundum53, @dross20, @euangoodbrand, @fusawa-yugo, @gen740, @jaikumarm, @kAIto47802, @ktns, @nabenabe0928, @nihalsiddiqui7, @not522, @satyarth7srivastava, @sawa3030, @toshihikoyanase, @unKnownNG, @y0z

Don't miss a new optuna release

NewReleases is sending notifications on new releases.