見出し画像

Optuna x Weights & Biases

2023年4月のWeights & Biasesミートアップに参加しました(W&B 東京ミートアップ #3 - Optuna と W&B)。Weights & Biases(以降WB)についての紹介はこちらで行っておりますのであわせてご覧ください。今回のミートアップではOptunaとWBの連携を紹介し、hands onまで行っていたのですが、hands onの例をもとにしながら、具体的なフローをまとめていきます。

hands onで使用したcodeはこちらです。このhands onでは、1) Optunaを使いhyperparmetersをチューニングし、2) WBを使ってhyperparameter最適化の結果を可視化します。WBとOptunaを一緒に使うことで、下記のことが可能になります。

  • カスタマイズ可能な柔軟な設定のもと簡単にモデルを最適化

  • インタラクティブなダッシュボードで結果を可視化

  • プロジェクトをチームに簡単に・透明性高く共有

それでは見ていきましょう!

1) Set up Optuna and W&B

OptunaとWBをinstallします。WBのinstallとサインインは数行で完了です。

2) Run Hyperparameter Optimization

今回は、有名なiris datasetを用いてランダムフォレストを学習します。ランダムフォレストのhyperparametersのうち、n_estimatorsとmax_depthをOptunaを使って最適化します。
optunaのcallbackにWBのcallbackを入れるだけで、Optunaの結果をWBに返すことができます。すごく簡単ですね。wandb.logでは、WBでの視覚化方法なども指定することができます。codeに解説を入れたので、参考にしてください。

3) Visualize Results

これで準備完了です。結果をWB上で確認することができます。WB上の今回のProjectのURLが上記のcodeを実行すると用意され、その上で確認をすることができます。

scriptのoutput

実際に、URLをクリックし、WB上で結果を見ていきましょう。下図が結果です。左のリストが各実験を示しています。私は4回同じcodeを回してみたのですが、4つのexperimentが並んでいます。👁️のマークを押すと、どのexperimentを表示するかをcontrolすることができます。codeにWBに連携する数行を足すだけで、実験を管理してくれ、結果のinteractiveな視覚化も簡単に行ってくれます。超便利です!

WB上での結果1

今回はOptunaを使ったので、objective valueとhyperparametersの関係は気になるところですが、下図がそれを可視化した図です。

WB上での結果2

また、各実験がどのようなcodeで、どのような条件のもと実行したのか、そしてどのような結果が得られたかも、自動でlogされます。大量に実験を回して、過去の実験を見た際の「あれ?どんな設定で回したかな?」という状況を避けることができますね。共有もできるのでチームでのcollaborationも非常にスムーズにいけそうです。

各Experimentの詳細

4) Report!

そして、これらの結果をWB内でレポート作成することができます。結果をボタン一つでReportに追加することができます。

下図がレポートの画面です。視覚化された結果も静的なものではなく、スケールを変えたり、表示のon/offを調整したりと、動的にinteractiveに閲覧者が確認することができるようになっています。これらの結果をチームに共有することもできるようになっているのですが、気になる結果については元のExperimentの結果ページであったり、設定のページにアクセスして確認をすることができるので、開発の生産効率が爆上がりですね。

Reportのページ


まとめ

最先端のML開発者が選ぶツールであるWeights & BiasesとOptunaの連携を紹介しました。今回はOptunaを実行するcodeに数行追加するだけで最適化の実験をWBで管理し、可視化する方法を紹介しましたが、WBはOptunaだけではなく既存のワークフローとの連携が非常にスムーズに行えます。ワークフローによらず実験の結果を一元的に管理することができるので、環境やフレームワークが群雄割拠の時代において非常にcoolなtoolだと思います。
Homepageから製品Documentやblog、トレーニングコースにアクセスできるので、詳しくはそちらをご確認ください!

この記事が気に入ったらサポートをしてみませんか?