Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Hydra は、研究用途やそのほかの複雑なアプリケーションの開発を簡素化するオープンソースの Python フレームワークです。主な機能は、設定を組み合わせて階層的な設定を動的に作成し、設定ファイルやコマンドラインからそれをオーバーライドできることです。
設定管理には引き続き Hydra を使用しながら、W&B の強力な機能も活用できます。
通常どおり、wandb.init() と wandb.Run.log() を使ってメトリクスをログします。ここでは、wandb.entity と wandb.project は Hydra の設定ファイル内で定義されています。
import wandb
@hydra.main(config_path="configs/", config_name="defaults")
def run_experiment(cfg):
with wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project) as run:
run.log({"loss": loss})
Hydra では、設定用の辞書を扱うデフォルトの方法として omegaconf を使用します。OmegaConf の辞書はプリミティブな辞書のサブクラスではないため、Hydra の Config を wandb.Run.config に直接渡すと、ダッシュボードで予期しない結果になることがあります。wandb.Run.config に渡す前に、omegaconf.DictConfig をプリミティブな dict タイプに変換する必要があります。
@hydra.main(config_path="configs/", config_name="defaults")
def run_experiment(cfg):
with wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project) as run:
run.config = omegaconf.OmegaConf.to_container(
cfg, resolve=True, throw_on_missing=True
)
run = wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project)
run.log({"loss": loss})
model = Model(**run.config.model.configs)
プロセスの起動時にハングする場合は、この既知の問題が原因の可能性があります。これを解決するには、次のように wandb.init() に settings パラメーターを追加して、wandb のマルチプロセシングプロトコルを変更してみてください。
wandb.init(settings=wandb.Settings(start_method="thread"))
または、シェルからグローバル環境変数を設定することでも可能です。
$ export WANDB_START_METHOD=thread
W&B Sweeps は、高い拡張性を備えたハイパーパラメーター探索プラットフォームです。最小限のコード変更で、W&B Experiments に関する有益なインサイトや可視化を提供します。Sweeps は、コーディング不要で Hydra プロジェクトにシームレスに統合できます。必要なのは、通常どおり sweep 対象となる各種パラメーターを記述した設定ファイルだけです。
シンプルな sweep.yaml ファイルの例を次に示します。
program: main.py
method: bayes
metric:
goal: maximize
name: test/accuracy
parameters:
dataset:
values: [mnist, cifar10]
command:
- ${env}
- python
- ${program}
- ${args_no_hyphens}
sweep を起動します:
W&B はプロジェクト内に自動的に sweep を作成し、sweep を実行する各マシンで実行する wandb agent コマンドを返します。
Hydra のデフォルト設定にないパラメーターを渡す
Hydra では、デフォルトの設定ファイルにない追加のパラメーターを、コマンドの前に + を付けることでコマンドライン経由で渡せます。たとえば、追加のパラメーターに値を指定するには、次のように呼び出します。
$ python program.py +experiment=some_experiment
Hydra Experiments の設定時のように、この種の + 設定に対して sweep を実行することはできません。これを回避するには、experiment パラメーターをデフォルトの空ファイルで初期化し、各 call でそれらの空の設定を上書きするように W&B Sweep を使用します。詳細については、こちらの W&B Reportを参照してください。