Blog

はじめに

ブラックボックス最適化フレームワークOptunaの v4.4をリリースしました。リリースノートをぜひご覧ください!

Optuna v4.4ではOptuna本体への機能追加やバグ修正、ドキュメント・テスト等の改善が実施されただけでなく、Optuna MCPサーバという新たなツールを公開しました。このブログではOptuna v4.4に含まれる各種機能を簡単に紹介します。

ぜひ以下のコマンドでOptunaとOptunaHubをアップデートしてください!

pip install -U optuna optunahub

Optuna MCPサーバの導入

Model Context Protocol (MCP)は大規模言語モデル(LLM)とアプリケーションの間の標準化されたプロトコルです。PythonやC#、Javaといった言語向けにSDKが提供されています。最近ではGitHubやMySQLといった有名なサービス・ソフトウェアがMCPに対応したサーバを提供しており、ますますLLMの実世界に向けたインテグレーションが進んでいます。そこで我々は、OptunaをLLMとともに利用可能にするためにOptuna向けのMCPサーバを開発しました。

Optuna MCPサーバはuvを用いて任意のMCPクライアントから利用することができ、例えばClaude DesktopならばMCPサーバの設定ファイルに以下の内容を追加するだけです。もちろんVSCode, Clineなど別のLLMクライアントも同様に利用できます。またDocker経由で利用することもできます。なお、結果を永続化したい場合は--storage引数が用意されているのでそちらをご利用ください。詳細はリポジトリをご覧ください。

{
  "mcpServers": {
    ... (他のMCPサーバの設定)
    "Optuna": {
      "command": "uvx",
      "args": ["optuna-mcp"]
    } 
  } 
} 

Optuna MCPサーバを利用することで、LLMクライアントからOptunaを利用した最適化や分析を実行できます。例えば、図1は実際にClaude Desktop上でOptuna MCPサーバをインストールした上で、LLMに2次元の球面関数を最適化するよう指示した例です。入力したプロンプトは順に以下のようになっています。

  • Please create an Optuna study named “Optimize-2D-Sphere” for minimization.
  • Please suggest two float parameters x, y in [-1, 1].
  • Please report the objective value x**2 + y**2. To calculate the value, please use the JavaScript interpreter and do not round the values.
  • Please suggest another parameter set and evaluate it.
  • Please plot the optimization history so far.

図1:  Optuna MCPサーバを用いた2次元球面関数の最適化例

今回公開したOptuna MCPサーバには様々なユースケースがあると我々コミッタは考えています。我々もこれから紹介していく予定ですが、コミュニティの皆さんも面白いユースケースを思いついたらぜひご共有ください。Optuna MCPサーバのGitHubリポジトリではフィードバックを集めています。お気軽にIssueを作ってみてください。

リリースしたOptuna MCPサーバはまだまだ発展途上です!v0.1.0の機能は全体としてExperimentalであり、今後の開発を通してBreaking Changeが入っていく可能性があることにご注意ください。また、GitHubリポジトリ上では機能要望やコントリビューションを積極的に募集しています。お気軽に開発にご参加ください。

ガウス過程ベースの多目的最適化アルゴリズム

Optuna の GPSampler は v3.6 で導入され、既存のベイズ最適化フレームワークに比べて高速かつ離散変数を含む目的関数に対して高い性能を誇ります。Optuna v4.4 では、このGPSamplerを多目的最適化問題に向けて拡張しました。多目的最適化問題の応用領域は広く、今回導入した GPSampler の多目的最適化向け機能は、材料設計や実験計画問題、高コストなハイパーパラメータ最適化などへの応用が期待されます。

GPSamplerは以下のように簡単に利用することができます。皆さんの多目的最適化問題でもぜひご利用ください。

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

図2 は、WFG という多目的最適化問題の入力が 9 次元、出力が 4 次元の問題に対して行った速度および最適化性能の比較結果です。比較には、Optuna Integrationに存在するガウス過程ベースの最適化アルゴリズムである BoTorchSampler と Optuna の多目的最適化における標準アルゴリズムである NSGAIISampler を利用しました。図2 (左) から、GPSampler はBoTorchSampler と同じくトライアル数 N に対して各トライアルで O(N^3) の時間がかかる手法でありながら、BoTorchSampler に比べて大幅に高速であることがわかります。また図2 (右) から、GPSampler はBoTorchSampler よりも最適化性能の観点でもこの問題においては良い性能を発揮していることがわかります。なお今回の実験はトライアル数が 200 と比較的小さく、NSGAIISampler にとっては不十分なトライアル数であることに注意してください。また全ての手法について、サンプリングの総時間が8時間経過した段階でStudyを打ち切っているため、BoTorchSampler の結果が途中までしかないことに注意してください。

図2: WFG5 (n_objectives=4, dimension=9, k=3) を利用した多目的 GPSampler のベンチマーク結果。両グラフ共に 横軸トライアル数を表し、帯は 5 つの異なる seed を用いた study における標準誤差を表します。左図: トライアル数毎の超体積推移。縦軸は超体積を表し、超体積は大きいほどよいです。右図: トライアル数毎の実行時間。縦軸が各アルゴリズムの実行経過時間を表します。

OptunaHubに導入された新機能

Optuna v4.4の開発期間には、Optuna向け機能共有プラットフォームOptunaHubにも多くの新機能が導入されました。

ここでは特にGoogle Vizierを利用したサンプラーとTPESamplerの獲得関数可視化機能についてご紹介します。

Google VizierはGoogleが開発するブラックボックス最適化フレームワークです。以下の図3はBBOBベンチマーク問題の21番目の問題 (Gallagher’s Gaussian 101-me Peaks)に対するGoogle Vizierベースのサンプラー(VizierSampler)およびOptunaの各種アルゴリズムを比較した結果です。この問題に対しては、VizierSamplerの性能が最も高く、次点でOptunaのGPSamplerの性能が良いことがわかります。ただし一概にVizierSamplerがGPSamplerよりも強いというわけではなく、問題によって性能差は大きく変わることにご注意ください。詳細はVizierSamplerのページをご確認ください。

図3: Gallagher’s Gaussian 101-me Peaksにおけるサンプラーの性能比較

次にTPESamplerの獲得関数の可視化機能についてご紹介します。図4は簡単な np.abs(x) - 10 * np.cos(x) + 10 という目的関数の最適化の中でどのようにTPEの獲得関数が変化したかを可視化したgifです。皆さんの目的関数でも各変数に対する依存性が簡単に可視化できるようになったので、ぜひこちらから利用してみてください。

図4: TPEの獲得関数の値の変化

その他の改善

Optuna v4.4ではここまでに説明した新機能開発以外にも様々な改善が実施されました。例えば、GrpcStorageProxyやStudyにあったバグの修正が取り込まれました。また、OptunaのデフォルトサンプラーであるTPESamplerの引数がシンプルになりました(consider_prior引数が非推奨になり、consider_prior=Trueの時の挙動で固定されました)。さらにOptunaHubのAPI呼び出し制限の改善、ドキュメント改善などが多数実施されました。そして最後に言及しておくべきこととして、OptunaHubのAnacondaからの利用を妨げていた技術的障壁が解消されました!次回のリリースではAnacondaからの利用が可能になっていることでしょう。ご期待ください。詳細はリリースノートをご確認ください。

おわりに

Optuna v4.4ではOptuna MCPサーバ、ガウス過程ベースの多目的最適化アルゴリズム、そしてOptunaHubに様々な新機能を導入しました。これらは、先日公開したOptuna v5.0ロードマップに基づいて実施されています。たとえば、

  • Optuna MCPサーバは、v5.0 Roadmapの”生成AIを用いてブラックボックス最適化の可能性を広げる”という核に紐づいています。生成AIのためのブラックボックス最適化ツールチェインの一つとして公開しました。
  • ガウス過程ベースの多目的最適化アルゴリズムは、v5.0 Roadmapの”Optunaを継続的に発展させる”という核に紐づいています。GPSamplerの機能拡充を通して多目的最適化問題というユースケースにおいて大きな探索性能改善が期待できます。
  • OptunaHubに導入された各種新機能は、v5.0 Roadmapの”Optunaを継続的に発展させる”という核に紐づいています。コミュニティの需要に応じて多様なアルゴリズム・分析手法・ベンチマークを導入していくことで、Optunaがより便利になりました。

Optuna v5.0に向けて、これからも様々な新機能をリリースしていくのでお楽しみに!例えばOptuna DashboardにLLMとインテグレーションされた分析機能が追加されたり、Optunaのデフォルトのサンプラーが大幅に強化されていく予定です。これからもOptunaの進化にご期待ください。

Contributors

v4.4のリリースには以下のコントリビュータの方々の貢献が含まれます。ありがとうございました!

@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

  • Twitter
  • Facebook