wandb.init() を使用して W&B run を初期化します。
デフォルトでは、W&B がサポートする実行中の run は Python プロセスごとに 1 つです。run の実行中に wandb.init() を呼び出すと、W&B は実行中の run を返すか、その run を終了してから新しい run を作成します。どちらの動作になるかは、環境と reinit の設定によって異なります。
1 つのプロセス内で複数の実行中の run を管理するには、1 つのプロセス内の複数の run を参照してください。
wandb.init() を呼び出す際は、コンテキストマネージャー (with ブロック) を使用することをお勧めします。これにより、ブロックの終了時に W&B が確実に run を終了し、そのデータをアップロードします。プロセスごとに単一の run
次の例では、run を初期化します:basic.py
exalted-darkness-6 を nico entity の awesome-project project にログします。W&B はこの run に一意の ID pgbn9y21 を割り当てます。
1 つのプロセスで複数の run を管理する
wandb.init() または wandb.Settings の reinit パラメーターを使用して、1 つの Python プロセスで複数の run を管理します。たとえば、プライマリ run を実行中のまま維持しながら、他のタスク用に短期間のセカンダリ run を作成できます。
一般的なユースケースは次のとおりです。
- プライマリ run を実行中のまま維持しながら、評価やサブタスク用のセカンダリ run を作成します。
- 1 つのスクリプトから複数のサブ実験を実行します。
- 1 つのプロセスから、異なるタスクや期間のデータを別々の run にログします。
要件1 つの Python プロセスで複数の run を管理するには、W&B Python SDK バージョン
v0.19.10 以降が必要です。reinit options
別の run が実行中のときに wandb.init() を呼び出した場合の動作を制御するには、reinit パラメーターを使用します。次の表では、使用可能なオプションと一般的なユースケースを比較しています。パラメーターの完全な定義については、wandb.init() リファレンスドキュメントを参照してください。
単一のグローバル run を前提とする W&B インテグレーション (Hugging Face Trainer、Keras コールバック、PyTorch Lightning など) では、W&B は
create_new モードをサポートしていません。これらのインテグレーションを使用する場合は、各サブ実験を個別のプロセスで実行してください。reinit を設定する
-
wandb.init()にreinit引数を直接指定して使用します: -
wandb.init()を使用し、settingsパラメーターにwandb.Settingsオブジェクトを渡します。Settingsオブジェクトでreinitを指定します: -
wandb.setup()を使用して、現在のプロセス内のすべての run に対してreinitオプションをグローバルに設定します。動作を一度設定し、そのプロセス内で以降のすべてのwandb.init()呼び出しに適用したい場合に便利です。 -
環境変数
WANDB_REINITにreinitの希望する値を指定します。環境変数を定義すると、wandb.init()呼び出しにreinitオプションが適用されます。
wandb.init() を呼び出すたびに新しい run を作成するように W&B を設定する方法の概要を示しています:
例: 並行プロセス
プライマリプロセスを終了せずに、短時間で終了するセカンダリプロセスを定期的に起動しながら、スクリプトの実行期間全体にわたってプライマリプロセスを維持したいとします。たとえば、このパターンは、プライマリ run でモデルをトレーニングしながら、別の run で評価を計算したり、その他の処理を行ったりする場合に役立ちます。 これを実現するには、reinit="create_new" を使用して複数の run を初期化します。この例では、“Run A” はスクリプト全体を通じて維持されるプライマリプロセスであり、“Run B1”、“Run B2” は評価などのタスク用の短時間で終了するセカンダリ run であるとします。
ワークフローの概要は次のようになります。
wandb.init()でプライマリプロセス Run A を初期化し、トレーニングメトリクスをログします。- Run B1 を (
wandb.init()で) 初期化し、データをログしてから終了します。 - Run A にさらにデータをログします。
- Run B2 を初期化し、データをログしてから終了します。
- Run A へのログを続けます。
- 最後に Run A を終了します。
reinit="create_new"は、wandb.init()を呼び出すたびに新しい run を作成します。- 各 run の参照を保持します。
wandb.runは、reinit="create_new"で作成された新しい run を自動的には指しません。新しい run をrun_a、run_b1などの変数に保存し、必要に応じてそれらのオブジェクトで.log()または.finish()を呼び出します。 - プライマリ run を開いたまま、サブ run をいつでも終了できます。
- run にログし終えたら、
run.finish()で run を終了します。これにより、すべてのデータがアップロードされ、run が適切に閉じられます。