Hydra は、研究用途やそのほかの複雑なアプリケーションの開発を簡素化するオープンソースの Python フレームワークです。主な機能は、設定を組み合わせて階層的な設定を動的に作成し、設定ファイルやコマンドラインからそれをオーバーライドできることです。設定管理には引き続き Hydra を使用しながら、W&B の強力な機能も活用できます。
メトリクスをトラッキングする
wandb.init() と wandb.Run.log() を使ってメトリクスをログします。ここでは、wandb.entity と wandb.project は Hydra の設定ファイル内で定義されています。
ハイパーパラメーターをトラッキングする
omegaconf.DictConfig) は、通常の Python の dict インスタンスではありません。
wandb.Run.config は読み取り専用のプロパティであるため、OmegaConf の設定オブジェクトを渡そうとして wandb.Run.config = ... を実行すると、AttributeError が発生します。
OmegaConf.to_container() を使って cfg を通常の dict に変換し、それを wandb.init(config=...) に渡してください (または wandb.Run.config.update(...) を呼び出してください) 。
マルチプロセシングのトラブルシューティング
wandb.init() に settings パラメーターを追加して、wandb のマルチプロセシングプロトコルを変更してみてください。
ハイパーパラメーターを最適化する
sweep.yaml ファイルの例を次に示します。
wandb agent コマンドを返します。
Hydra のデフォルト設定にないパラメーターを渡す
+ を付けることでコマンドライン経由で渡せます。たとえば、追加のパラメーターに値を指定するには、次のように呼び出します。
+ 設定に対して sweep を実行することはできません。これを回避するには、experiment パラメーターをデフォルトの空ファイルで初期化し、各 call でそれらの空の設定を上書きするように W&B Sweep を使用します。詳細については、こちらの W&B Reportを参照してください。