Blog

2024.08.30

Engineering

Research

Optuna向け機能共有プラットフォーム「OptunaHub」を正式リリース!

Yoshihiko Ozaki

本記事の要約

  • Optuna向け機能共有プラットフォームOptunaHub (https://hub.optuna.org/) の正式版をリリースしました.
  • 今年トップカンファレンスで提案されたばかりの手法 (CatCMA) やコンペティションで1位を獲得した手法 (HEBO) など様々な新規アルゴリズムが続々と追加されており,Optunaから利用できるようになっています.
  • 最適化アルゴリズムだけでなく,分析に用いる可視化アルゴリズムも公開されています.
  • OptunaHubの使い方は,所望の機能をWebページで検索し,あなたのコードで読み込みoptunahub.load_module関数を呼び出すだけでOKです.

OptunaHubの紹介

OptunaHubは,強力かつ柔軟なハイパーパラメーター最適化フレームワークであるOptunaにおいて,様々なアルゴリズムや手法を共有するためのプラットフォームです.開発チームは,7月のベータ版リリースから10件以上のコントリビューションをいただきながら開発者の皆様と改善をつづけ,本日OptunaHubの正式版をリリースしました.

Optuna向け機能共有プラットフォームOptunaHub

Optuna向け機能共有プラットフォームOptunaHub

以下ではOptunaHubがユーザの皆様に提供するバリューを,4つの観点から説明します.

最新手法から有名手法まで幅広い最適化アルゴリズムが利用可能

OptunaHubには,多種多様な最適化アルゴリズムが公開されています.特に,近年提案されたばかりの「HEBO」や「CatCMA」などの最先端(SOTA)の手法を,Optunaのインターフェースを通じて簡単に利用できるようになっています.従来,このような手法を利用するためには,ユーザは各アルゴリズムを自ら実装する必要がありましたが,現在ではOptunaHubを利用することで誰でも簡単にこれらの手法を試すことができるようになりました.もちろん,OptunaHubに公開されている手法は最先端のものに限定されておらず,実績ある実験計画法といったアルゴリズムのOptuna実装 (UniformDesignSampler) も同様に公開されています.

特定の分野やアプリケーションに特化したパッケージの提供

また,OptunaHubには,特定の分野やアプリケーションに特化したパッケージが存在します.例えば,材料・化学ドメインに特化したアルゴリズム (BBO-Rietveld) ,大規模言語モデルに特化したアルゴリズム (EvoMergeSampler) などがあてはまります.これらのパッケージは最適化アルゴリズムのOptuna実装だけでなく,ターゲットとする問題を解くための各種ユーティリティも合わせて提供しているため,ユーザが一から全ての仕組みを実装するのに比べ,格段に少ない手間で問題解決を行えるものとなっています.

スピーディーな機能追加

OptunaHubでは,プルリクエストがマージされるとすぐにプラットフォームに反映され,スピーディな機能追加が可能です.実際,ベータ版が公開されてから僅か1ヶ月ほどで10以上の最適化アルゴリズムや可視化機能が追加されています.もし,あなたが所望する機能がまだ提供されていなければ,コントリビュータに機能をリクエストすることもできます.また,機能の改良やバグの修正も迅速に行うことができます

実用的な可視化手法

最後に,OptunaHubでは,ユーザーがアルゴリズムの実行時間やその他のメトリクスを可視化できる機能も提供しています.これにより,ユーザーは最適化のプロセスをより深く理解することができ,最適化結果の分析やアルゴリズムの選択を見直すことができます.

以上のように,OptunaHubはブラックボックス最適化による効率的な問題解決を行うためのプラットフォームとして,多くのメリットを提供しています.誰でも簡単に利用できるため,ぜひOptunaHubを試してみることをお勧めします.

OptunaHubの使い方

インストール

まず,optunahub Pythonライブラリをインストールします.

pip install optunahub

これで,OptunaHubが利用可能になります.

最適化アルゴリズムや可視化機能の探し方と使い方

OptunaHubは,主に2種類のページで構成されたシンプルなWebサイトです.ここではパッケージの探し方と使い方を説明します.

トップページでパッケージを検索する

OptunaHubのトップページにアクセスすると,OptunaHubで利用可能なすべてのアルゴリズムや可視化機能が一覧表示されます.テキストボックスにアルゴリズムの名前やキーワードを入力すると関連するパッケージだけに絞り込むことができます.各パッケージには,サムネイルと簡単な説明が記載されており,クリックすることで詳細ページを見ることができます.下図は “Bayesian” というキーワードでパッケージを絞り込んだ例です.ベイズ最適化に関するパッケージだけが表示されていることが確認できます.

OptunaHubでのパッケージ検索

OptunaHubでのパッケージ検索

詳細ページでパッケージの使い方を知る

詳細ページには依存ライブラリのインストール方法やサンプルコードを含む,各アルゴリズムや可視化機能の詳しい説明と使い方が書かれています.

サンプルコードを参照することで,実際にアルゴリズムを使用する方法を学ぶことができます.例えば,以下のCatCMA Samplerの詳細ページでは,Exampleのセクションにサンプルコードがあります.Open in Colabボタンを押すと,Google Colabでサンプルコードをブラウザから試すこともできます.

パッケージ詳細ページ

パッケージ詳細ページ

CatCmaSamplerのGoogle Colab Notebookでは,環境設定から目的関数の定義,最適化の実行,結果の可視化までを一気通貫で試すことができます.

CatCmaSamplerのGoogle Colab Notebook

CatCmaSamplerのGoogle Colab Notebook

CatCmaSamplerの使い方

ここではCatCmaSamplerを題材に,OptunaHubライブラリのシンプルな使用例を紹介します.以下のサンプルコードでは,CatCmaSamplerの読み込みを行い,CatCmaSamplerの特徴であるカテゴリカル変数を含む,簡単な二次関数を最適化しています.

import optuna
import optunahub

def objective(trial: optuna.Trial) -> float:
x1 = trial.suggest_float("x1", -10, 10)
x2 = trial.suggest_float("x2", -10, 10)
c = trial.suggest_categorical("c", [-5, 0, 5])
return x1**2 + x2**2 + c

mod = optunahub.load_module("samplers/catcma")
study = optuna.create_study(sampler=mod.CatCmaSampler())
study.optimize(objective, n_trials=20)

注目すべきは,optunahub.load_module("samplers/catcma")です.load_moduleはOptunaHubから所望のパッケージ(ここでは”samplers/catcma”)のダウンロードと読み込みを実現する関数です.これにより,CatCmaSamplerを利用することができるようになります.最適化の実行については,通常のOptunaの組み込みサンプラを用いる場合と同様となります.

こうしたサンプルコードをもとに,あなたの問題にOptunaHubのアルゴリズムや可視化を適用してみましょう!

Tips: パッケージの再読み込みオプション

OptunaHubでロードしたパッケージはローカルにキャッシュされます.そのため,パッケージのダウンロードは初回のみで,2回目以降はキャッシュから読み込まれます.パッケージのキャッシュには,2回目以降のロードの高速化やオフライン利用が可能になるといったメリットがあります.もしパッケージにアップデートがあった場合には,optunahub.load_moduleforce_reloadオプションにTrueを設定することで最新版を取得することができます.

mod = optunahub.load_module("samplers/catcma", force_reload=True)

おわりに

最後に,OptunaHubの正式リリースは,ブラックボックス最適化に情熱を注ぐすべての人にとって大きなインパクトがあるものと考えています.私たちは,このプラットフォームがコミュニティにとって有益なものとなり,今後も進化し続けることを確信しています.ぜひ,OptunaHubを活用して,最適化の世界を探求してください!

OptunaHubパッケージの登録に興味をお持ち皆様へ

この記事ではOptunaHubに登録されたパッケージを利用する方法を説明しました.OptunaHubでは開発者の皆様が作ったパッケージを登録し,ユーザに使っていただけるようにすることもできます.先月のOptunaHub 0.1.0-βリリースブログでは,OptunaHubへのパッケージの登録方法について解説していますのでぜひご覧ください!

  • Twitter
  • Facebook