Hydra は、研究やその他の複雑なアプリケーションの開発を簡素化するオープンソースの Python フレームワークです。重要な機能は、構成を合成して階層的に動的に作成し、それを構成ファイルやコマンドラインを介してオーバーライドする能力です。W&B の機能を活用しながら、Hydra を使った設定管理を引き続き利用できます。
メトリクスの追跡
通常通り、wandb.init
と wandb.log
を用いてメトリクスを追跡します。ここでは、wandb.entity
と wandb.project
は hydra 設定ファイル内で定義されています。
ハイパーパラメーターの追跡
Hydra は設定辞書を操作するためのデフォルト手段として omegaconf を利用しています。OmegaConf
の辞書は基本的な辞書のサブクラスではないため、Hydra の Config
を直接 wandb.config
に渡すとダッシュボードで予期せぬ結果を引き起こします。omegaconf.DictConfig
を基本的な dict
型に変換してから wandb.config
に渡す必要があります。
マルチプロセッシングのトラブルシューティング
プロセスの開始時にハングアップする場合、この既知の問題による可能性があります。これを解決するには、次のようにwandb.init
に追加の設定パラメータを追加することで、wandb のマルチプロセッシングプロトコルを変更してみてください。
ハイパーパラメーターの最適化
W&B Sweeps は高度にスケーラブルなハイパーパラメーター探索プラットフォームで、最低限のコードスペースで W&B 実験に関する興味深い洞察と可視化を提供します。 Sweeps は Hydra プロジェクトにノーコーディングでシームレスに統合されます。必要なのは、通常のようにスイープの対象となる様々なパラメータを説明する設定ファイルです。 単純な例としてのsweep.yaml
ファイルは以下の通りです:
wandb agent
コマンドを返します。
Hydra デフォルトに存在しないパラメーターを渡す
Hydra はデフォルトの設定ファイルに存在しない追加のパラメーターをコマンドラインを通して渡すことをサポートしており、コマンド前に+
を付けることで可能です。例えば、一部の値とともに追加のパラメーターを渡すには、以下のように単に呼び出します:
+
設定に対して、Hydra Experiments の設定時と同様にスイープすることはできません。この問題を回避するために、実験パラメーターをデフォルトの空ファイルで初期化し、W&B Sweep を用いて各呼び出し時にこれらの空の設定をオーバーライドすることができます。詳細については、この W&B Report をご覧ください。