Hydra は、研究用途やその他の複雑なアプリケーションの開発を簡素化するオープンソースの Python フレームワークです。主な特徴は、コンポジションにより階層的な設定を動的に構築し、それを設定ファイルやコマンドラインから上書きできることです。W&B の強力な機能を活用しながら、設定管理には引き続き Hydra を使用できます。
メトリクスを記録する
wandb.init() と wandb.Run.log() を使って、通常どおりメトリクスを記録します。ここでは、wandb.entity と wandb.project は Hydra の設定ファイル内で定義されています。
ハイパーパラメータを追跡する
OmegaConf の辞書は組み込みの辞書型のサブクラスではないため、Hydra の Config をそのまま wandb.Run.config に渡すと、ダッシュボード上で予期しない挙動になります。wandb.Run.config に渡す前に、omegaconf.DictConfig を組み込みの dict 型に変換する必要があります。
マルチプロセッシングのトラブルシューティング
wandb.init() に追加の設定パラメータを指定して、次のように wandb のマルチプロセッシングプロトコルを変更してみてください。
ハイパーパラメータを最適化する
sweep.yaml ファイルの例を以下に示します。
wandb agent コマンドを返します。
Hydra のデフォルトに存在しないパラメータを渡す
+ を付けることで、デフォルトの設定ファイルに存在しない追加パラメータをコマンドラインから渡せます。たとえば、次のように呼び出すだけで、任意の値を持つ追加パラメータを渡すことができます。
+ 設定に対しては、スイープを実行できません。これを回避するには、実験パラメータをデフォルトの空ファイルで初期化し、各呼び出しごとに W&B Sweep を使ってその空の設定を上書きします。詳細については、この W&B レポート を参照してください。