ホームへ戻る

MLOps/模型最佳化

Optuna 5.0、デフォルトの探索戦略を変更――大規模試行のフレームワークオーバーヘッドにはRustunaで対応

Optuna 5.0は、バージョン1.5以来初めてデフォルトサンプラーを大幅に変更した。単一目的探索では多変量TPEとConstant Liarを採用し、多目的探索ではNSGA-IIからTPEへ移行する。同時に公開されたRustunaは、互換性のあるコアをRustで再実装し、数十万回の高速評価でサンプリングとストレージが引き起こすボトルネックの解消を狙う。

Thomas H-Taylor (talk)Thomas H-Taylor · CC BY-SA 3.0 · Image source
zh-Hant

Preferred Networksは9月7日、Optuna 5.0をリリースした。今回のアップグレードで最も直接的な影響を受けるのは、新しいサンプラーの追加ではなく、samplerを明示的に指定していない既存のstudyだ。単一目的の`TPESampler`では、パラメータ間の相互作用を捉えるために分布を共同推定するmultivariate TPEがデフォルトで有効になり、Constant Liarも有効化された。これにより、並列workerが同じ完了済みtrialしか参照できず、類似した候補点を繰り返し提案する事態を防ぐ。多目的最適化では、NSGA-IIに代わってTPEが採用される。チームによると、従来その採用を妨げていた実行速度の問題は改善されたが、完全な追試の詳細は今後別の記事で公開される予定だ。

制約付き最適化も、sampler固有のインターフェースから中核の`Trial` APIへ昇格した。目的関数は`trial.set_constraint()`で制約を設定し、`trial.constraints`から読み取れる。従来の`constraints_func`経由の方法は非推奨化が始まった。パラメータ重要度のデフォルトもf-ANOVAからPED-ANOVAへ変更され、条件付き探索空間と多目的studyに対応する。安定版となった`GPSampler`には、さらにqLogEI、qLogCEI、qLogEHVI、qLogCEHVIが追加された。実行中のtrialの結果をガウス過程の事後分布からサンプリングすることで、未完了の点に単一の仮値を割り当てるのではなく、不確実性を考慮したバッチ提案を可能にする。

同日に公開されたRustunaは、Python APIとの互換性を志向したRust実装で、TPE、NSGA-II、CMA-ES、ランダム探索をサポートし、探索で不要になった履歴データを破棄できる。公式は、目的関数が非常に高速な場合に数倍から数百倍の高速化が可能だとしている。ただし、これはsamplerや試行規模によって変動する開発元による測定結果であり、モデル訓練がコストの大半を占めるワークロードへ一般化することはできない。エンジニアリングチームはアップグレード前に旧版と新版でシードを固定し、代表的なstudyを再実行すべきだ。デフォルトアルゴリズム、実行可能性の判定、タイムスタンプのUTC正規化、削除された複数のAPIにより、結果やデータパイプラインが変化する可能性がある。

出典

  1. オープンソースのブラックボックス最適化ライブラリOptuna v5.0をリリース
  2. Release v5.0.0 · optuna/optuna
  3. optuna 5.0.0