Skip to main content
wandb.init() で resume パラメーターを設定すると、run が停止またはクラッシュした場合に W&B がどのように動作するかを指定できます。run を初期化すると、W&B は run ID がすでに存在するかどうかを確認し、resume の値で定義された動作を適用します。 次の表は、resume パラメーターに渡す引数と run ID の有無に応じた W&B の動作をまとめたものです。
auto と allow の使い分けW&B では、resume="allow" を使用し、再開したい run の run ID を明示的に指定することを推奨しています。resume="auto" オプションでは run ID を指定する必要はありませんが、同じディレクトリで失敗した run が複数ある場合や、ファイルのディレクトリ構造が変更された場合に、予期しない動作が発生する可能性があります。また、resume="auto" を使用する場合は、失敗したプロセスと同じディレクトリから run を再起動する必要があります。
以下のすべてのサンプルでは、<> で囲まれた値をご自身の値に置き換えてください。

同じ run ID を使用する必要がある run を再開する

run が停止、クラッシュ、または失敗した場合は、同じ run ID を使用して再開できます。そのためには、run を初期化し、以下を指定します。
  • resume パラメーターを "must" に設定します (resume="must")
  • 停止またはクラッシュした run の run ID を指定します
次のコードスニペットは、W&B Python SDK でこれを行う方法を示しています。
複数のプロセスが同じ id を同時に使用すると、予期しない結果が発生します。複数のプロセスの管理方法について詳しくは、分散トレーニングの実験をログするを参照してください。

既存の run を上書きせずに run を再開する

停止またはクラッシュした run を、既存の run を上書きせずに再開します。これは、プロセスが正常に終了しなかった場合に特に役立ちます。次回 W&B を起動すると、W&B は最後のステップからログする処理を再開します。 W&B で run を初期化する際に、resume パラメーターを "allow" (resume="allow") に設定します。停止またはクラッシュした run の run ID を指定します。次のコードスニペットは、W&B Python SDK でこれを行う方法を示しています。

run を自動的に再開できるようにする

以下のコードスニペットは、Python SDK または環境変数を使用して、run を自動的に再開できるようにする方法を示しています。
run を初期化する際に、resume パラメーターの引数として auto を渡します。run は、失敗したプロセスと同じディレクトリから再起動してください。以下のコードスニペットをコピー&ペーストし、<> で囲まれた値をご自身の値に置き換えてください。
自動再開は、失敗したプロセスと同じファイルシステム上でプロセスを再起動した場合にのみ機能します。
たとえば、Users/AwesomeEmployee/Desktop/ImageClassify/training/ というディレクトリで train.py という Python スクリプトを実行し、そのスクリプト内で自動再開を有効にした run を作成するとします。その後、トレーニングスクリプトが停止した場合、この run を再開するには Users/AwesomeEmployee/Desktop/ImageClassify/training/ 内で train.py スクリプトを再起動する必要があります。
ファイルシステムを共有できない場合は、WANDB_RUN_ID 環境変数を指定するか、W&B Python SDK で Run ID を渡してください。Run ID の詳細については、「What are runs?」ページの Custom run IDs セクションを参照してください。

プリエンプト可能な Sweeps run を再開する

プリエンプションシグナルを処理して、中断された sweep の run を W&B が自動的にキューに入れ直し、別のエージェントに割り当てられるようにします。このパターンは、SLURM のプリエンプト可能なキュー、Amazon EC2 Spot Instance、Google Cloud のプリエンプト可能な VM など、プリエンプト可能なコンピュートで sweep エージェントを実行する場合に役立ちます。 以下の手順は、wandb agent CLI で sweep エージェントを起動する場合に適用されます。CLI はトレーニングプログラムを サブプロセス として起動します。Python API の wandb.agent() のみを使用する場合、この手順は完全には適用されません。Python API はトレーニング関数をスレッドで実行するため、OS シグナルの配信と転送は CLI エージェントの動作とは異なります。

プリエンプションシグナルを処理する

スケジューラーやプラットフォームがプリエンプションを通知するために使用するシグナル (SIGUSR1 や SIGTERM など) のハンドラを登録します。ハンドラでは次の処理を行います。
  1. run が実行中の場合に mark_preempting() を呼び出します。
  2. チェックポイントの保存など、必要なクリーンアップを行います。
  3. 0 以外のステータスコードで終了します。シグナルによる終了では、一般的に 128 + signum を使用します。
wandb.init() の直後に無条件で mark_preempting() を呼び出さないでください。そうすると、コードのバグを含むすべての失敗がプリエンプションとして記録され、run が繰り返しキューに入れ直される可能性があります。 実行可能なサンプル、CLI エージェントの --forward-signals、および mark_preempting() のさまざまな使用方法を網羅したリファレンス表については、シグナル処理と sweep の run を参照してください。 このパターンに従うと、W&B は run の状態をおおむね次のように記録します。
sweep エージェントがプリエンプションされた run を取得した場合、トレーニングプロセスは 60 分以内に wandb.init() を呼び出す必要があります。run の取得後、wandb.init() を呼び出す前にプロセスが失敗するなどして初期化が行われなかった場合、W&B は 60 分間のリースが期限切れになるまで、その run を別のエージェントに割り当てません。
sweep エージェントは、sweep の探索アルゴリズムに新しいハイパーパラメーターの組み合わせをリクエストする前に、キューに入れ直された run を処理します。キューが空になると、sweep は通常のスケジューリングを再開します。
最終更新日 2026年9月30日