Hydra は、研究用途やそのほかの複雑なアプリケーションの開発を簡素化するオープンソースの Python フレームワークです。主な機能は、設定を組み合わせて階層的な設定を動的に作成し、設定ファイルやコマンドラインからそれをオーバーライドできることです。このページでは、Hydra ベースの設定管理と W&B の実験管理を組み合わせる方法を説明します。これにより、Hydra の構成可能な設定を維持しながら、W&B の可視化、ハイパーパラメーター最適化、run の比較機能を活用できます。以下のセクションでは、メトリクスのトラッキング、Hydra の設定からハイパーパラメーターをログする方法、マルチプロセッシングのトラブルシューティング、W&B Sweeps を使用したハイパーパラメーターの最適化について説明します。
メトリクスをトラッキングする
wandb.init() と wandb.Run.log() を使います。次の例では、同じ設定で Hydra と W&B の両方を制御できるように、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 パラメーターを追加して、W&B のマルチプロセッシングプロトコルを変更してください。
ハイパーパラメーターを最適化する
sweep.yaml ファイルは一例です:
wandb agent コマンドを返します。sweep を実行する各マシンでそのコマンドを実行します。
Hydra のデフォルト設定にないパラメーターを渡す
+ を付けることでコマンドライン経由で渡せます。たとえば、追加のパラメーターに値を指定するには、次のように呼び出します。
+ 設定に対して sweep を実行することはできません。これを回避するには、experiment パラメーターをデフォルトの空ファイルで初期化し、各 call でそれらの空の設定を上書きするように W&B Sweep を使用します。詳細については、W&B report Configuring W&B Projects with Hydraを参照してください。