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