Download Latest Version v4.4.0 source code.tar.gz (643.6 kB)
Email in envelope

Get an email when there's a new version of Optuna

Home / v4.4.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-06-12 10.1 kB
v4.4.0 source code.tar.gz 2025-06-12 643.6 kB
v4.4.0 source code.zip 2025-06-12 888.8 kB
Totals: 3 Items   1.5 MB 1

This is the release note of v4.4.0.

Highlights

In addition to new features, bug fixes, and improvements in documentation and testing, version 4.4 introduces a new tool called the Optuna MCP Server.

Optuna MCP Server

The Optuna MCP server can be accessed by any MCP client via uv — for instance, with Claude Desktop, simply add the following configuration to your MCP server settings file. Of course, other LLM clients like VSCode or Cline can also be used similarly. You can also access it via Docker. If you want to persist the results, you can use the — storage option. For details, please refer to the repository.

{
  "mcpServers": {
    … (Other MCP Servers' settings)
    "Optuna": {
      "command": "uvx",
      "args": [
        "optuna-mcp"
      ]
    }
  }
}

image3

Gaussian Process-Based Multi-objective Optimization

Optuna’s GPSampler, introduced in version 3.6, offers superior speed and performance compared to existing Bayesian optimization frameworks, particularly when handling objective functions with discrete variables. In Optuna v4.4, we have extended this GPSampler to support multi-objective optimization problems. The applications of multi-objective optimization are broad, and the new multi-objective capabilities introduced in this GPSampler are expected to find applications in fields such as material design, experimental design problems, and high-cost hyperparameter optimization.

GPSampler can be easily integrated into your program and performs well against the existing BoTorchSampler. We encourage you to try it out with your multi-objective optimization problems.

:::python
sampler = optuna.samplers.GPSampler()
study = optuna.create_study(directions=["minimize", "minimize"], sampler=sampler)

image2

New Features in OptunaHub

During the development period of Optuna v4.4, several new features were also introduced to OptunaHub, the feature-sharing platform for Optuna:

Vizier sampler performance
image1
TPE acquisition visualizer
image4

Breaking Changes

  • Update consider_prior Behavior and Remove Support for False (#6007)
  • Remove restart_strategy and inc_popsize to simplify CmaEsSampler (#6025)
  • Make all arguments of TPESampler keyword-only (#6041)

New Features

  • Add a module to preprocess solutions for hypervolume improvement calculation (#6039)
  • Add AcquisitionFuncParams for LogEHVI (#6052)
  • Support Multi-Objective Optimization GPSampler (#6069)
  • Add n_recent_trials to plot_timeline (#6110, thanks @msdsm!)

Enhancements

  • Adapt TYPE_CHECKING of samplers/_gp/sampler.py (#6059)
  • Avoid deepcopy in _tell_with_warning (#6079)
  • Add _compute_3d for hypervolume computation (#6112, thanks @shmurai!)
  • Improve performance of plot_hypervolume_history (#6115, thanks @shmurai!)
  • add deprecated/removed version specification to calls of convert_positional_args (#6117, thanks @shmurai!)
  • Optimize Study.best_trial performance by avoiding unnecessary deep copy (#6119, thanks @msdsm!)
  • Refactor and speed up HV3D (#6124)
  • Add assume_pareto for hv calculation in _calculate_weights_below_for_multi_objective (#6129)

Bug Fixes

  • Update vsbx (#6033, thanks @hrntsm!)
  • Fix request.values in OptunaStorageProxyService (#6044, thanks @hitsgub!)
  • Fix a bug in distributed optimization using NSGA-II/III (#6066, thanks @leevers!)
  • Fix: fetch all trials in BruteForceSampler for HyperbandPruner (#6107)

Documentation

  • Add Pycma Example (https://github.com/optuna/optuna-integration/pull/226, thanks @ParagEkbote!)
  • Add SHAP Example (https://github.com/optuna/optuna-integration/pull/227, thanks @ParagEkbote!)
  • Document Behavior of optuna.pruners.MedianPruner and optuna.pruners.PatientPruner (#6055, thanks @ParagEkbote!)
  • Change the link of tutorial docs of optunahub (#6063, thanks @fusawa-yugo!)
  • Update the documentation string of GPSampler (#6081)
  • Add a warning about the combination of gRPC Proxy and Journal Storage (#6097)
  • Cosmetic fix to the terminator documents (#6100)
  • Note in docstring that heartbeat mechanism is experimental (#6111, thanks @lan496!)
  • Update docstrings of _get_best_trial to follow coding conventions (#6122)

Examples

Tests

  • Add float precision tests for storages (#6040)
  • Refactor test_base_gasampler.py (#6104)
  • chore: run tests for importance only with in-memory (#6109)
  • Improve test cases for n_recent_trials of plot_timeline (follow-up [#6110]) (#6116)
  • Performance optimization for test_study.py by removing redundancy (#6120)

Code Fixes

  • Optional mypy check (#6028)
  • Update Type-Checking for optuna/_experimental.py (#6045, thanks @ParagEkbote!)
  • Update Type-Checking for optuna/importance/_base.py (#6046, thanks @ParagEkbote!)
  • Update Type-Checking for optuna/_convert_positional_args.py (#6050, thanks @ParagEkbote!)
  • Update Type-Checking for optuna/_deprecated.py (#6051, thanks @ParagEkbote!)
  • Update Type-Checking for optuna/_gp/gp.py (#6053, thanks @ParagEkbote!)
  • Add validate eta in sbx (#6056, thanks @hrntsm!)
  • Remove CmaEsAttrKeys and _attr_keys for Simplification (#6068)
  • Replace np.isnan with math.isnan (#6080)
  • Refactor warning handling of _tell_with_warning (#6082)
  • Implement Type-Checking for optuna/distributions.py (#6086, thanks @AdrianStrymer!)
  • Update TYPE_CHECKING for optuna/_gp/gp.py (#6090, thanks @Samarthi!)
  • Support mypy 1.16.0 (#6102)
  • Emit ExperimentalWarning if heartbeat is enabled (#6106, thanks @lan496!)
  • Simplify tuple return in optuna/visualization/_terminator_improvement.py (#6139, thanks @Prashantdhaka23!)
  • Refactor return standardization in optim_mixed.py (#6140, thanks @Ajay-Satish-01!)
  • Simplify tuple return in test_trial.py (#6141, thanks @saishreyakumar!)
  • Refactor return statement style in optuna/storages/_rdb/models.py for consistency among the codebase (#6143, thanks @Shubham05122002!)

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.

@AdrianStrymer, @Ajay-Satish-01, @Alnusjaponica, @Copilot, @HideakiImamura, @ParagEkbote, @Prashantdhaka23, @Samarthi, @Shubham05122002, @SubhadityaMukherjee, @c-bata, @contramundum53, @copilot-pull-request-reviewer[bot], @fusawa-yugo, @gen740, @himkt, @hitsgub, @hrntsm, @kAIto47802, @lan496, @leevers, @milkcoffeen, @msdsm, @nabenabe0928, @not522, @nzw0301, @saishreyakumar, @sawa3030, @shmurai, @toshihikoyanase, @y0z

Source: README.md, updated 2025-06-12