メインコンテンツへスキップ
run が停止またはクラッシュした場合の振る舞いを指定します。 run を再開したり、自動再開を有効にしたりするには、その run に関連付けられた一意の run ID を id パラメータで指定する必要があります。
import wandb
# runを再開または新規作成するための初期化
with wandb.init(entity="<entity>", project="<project>", id="<run ID>", resume="<resume>") as run:
        # ここにトレーニングコードを記述
W&B では、 run を保存する W&B Projects の名前を指定することを推奨しています。
resume パラメータに以下のいずれかの 引数 を渡して、W&B の動作を決定します。いずれの場合も、W&B はまずその run ID が既に存在するかどうかを確認します。
引数説明Run ID が存在する場合Run ID が存在しない場合ユースケース
"must"指定された run ID の run を必ず再開します。同じ run ID で run を再開します。エラーを発生させます。必ず同じ run ID を使用して run を再開したい場合。
"allow"run ID が存在すれば run を再開することを許可します。同じ run ID で run を再開します。指定された run ID で新しい run を初期化します。既存の run を上書きせずに再開したい場合。
"never"指定された run ID の run を再開することを許可しません。エラーを発生させます。指定された run ID で新しい run を初期化します。
また、resume="auto" を指定すると、W&B が自動的に run の再試行を試みるように設定できます。ただし、その場合は同じ ディレクトリー から run を再起動する必要があります。詳細については、run の自動再開を有効にする セクションを参照してください。 以下のすべての例において、 <> で囲まれた 値 は自身の環境に合わせて置き換えてください。

同じ run ID を使用して run を再開する

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

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

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

with wandb.init(entity="<entity>", project="<project>", id="<run ID>", resume="allow") as run:
        # ここにトレーニングコードを記述

run の自動再開を有効にする

以下の コードスニペット は、Python SDK または 環境 変数を使用して run の自動再開を有効にする方法を示しています。
以下の コードスニペット は、Python SDK で W&B run ID を指定する方法を示しています。<> で囲まれた 値 を自身のものに置き換えてください。
with wandb.init(entity="<entity>", project="<project>", id="<run ID>", resume="<resume>") as run:
        # ここにトレーニングコードを記述
自動再開は、失敗した プロセス と同じファイルシステム上で プロセス が再起動された場合にのみ機能します。
例えば、Users/AwesomeEmployee/Desktop/ImageClassify/training/ という ディレクトリー で train.py という python スクリプト を実行するとします。train.py 内で、自動再開を有効にした run が作成されます。次に、トレーニングスクリプト が停止したとします。この run を再開するには、Users/AwesomeEmployee/Desktop/ImageClassify/training/ 内で train.py スクリプト を再起動する必要があります。
ファイルシステムを共有できない場合は、WANDB_RUN_ID 環境 変数を指定するか、W&B Python SDK で run ID を渡してください。run ID の詳細については、「run とは何か」ページの カスタム run ID セクションを参照してください。

プリエンプティブルな Sweeps run の再開

中断された sweep run を自動的にキューに戻します。これは、SLURM ジョブのプリエンプティブルキュー、EC2 スポットインスタンス、Google Cloud プリエンプティブル VM など、プリエンプション(中断)が発生する可能性のある計算 環境 で sweep agent を実行する場合に特に便利です。 mark_preempting 関数を使用して、中断された sweep run を自動的に再キューイングします。例:
with wandb.init() as run:
    run.mark_preempting()
以下の表は、 sweep run の終了ステータスに基づいて W&B が run をどのように処理するかを示しています。
ステータス振る舞い
ステータスコード 0run は正常に終了したとみなされ、再キューイングされません。
0 以外のステータスW&B は自動的に sweep に関連付けられた run キューに run を追加します。
ステータスなしrun が sweep run キューに追加されます。 sweep agent はキューが空になるまで run を消費します。キューが空になると、 sweep キューは sweep 探索アルゴリズムに基づいて新しい run の生成を再開します。