run を再開

一時停止または終了した W&B Run を再開する

実行が停止またはクラッシュした場合にどのように動作するべきかを指定します。実行を再開または自動的に再開するためには、その実行に関連付けられた一意の実行IDをidパラメータとして指定する必要があります。

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="<resume>")

W&Bがどのように対応するかを決定するために、次の引数の1つをresumeパラメータに渡します。各場合において、W&Bは最初に実行IDが既に存在するかを確認します。

引数 説明 実行IDが存在する場合 実行IDが存在しない場合 ユースケース
"must" W&Bは実行IDで指定された実行を再開する必要があります。 同じ実行IDで実行を再開します。 W&Bがエラーを発生させます。 同じ実行IDを使用する必要がある実行を再開します。
"allow" 実行IDが存在する場合、W&Bが実行を再開することを許可します。 同じ実行IDで実行を再開します。 指定された実行IDで新しい実行を初期化します。 既存の実行を上書きせずに実行を再開します。
"never" 実行IDで指定された実行をW&Bが再開することを許可しない。 W&Bがエラーを発生させます。 指定された実行IDで新しい実行を初期化します。

resume="auto"を指定することで、W&Bが自動的にあなたの代わりに実行を再開しようとします。ただし、同じディレクトリーから実行を再開することを保証する必要があります。詳細は、実行を自動的に再開する設定を有効にするセクションを参照してください。

以下の例では、<>で囲まれた値をあなた自身のものに置き換えてください。

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

実行が停止、クラッシュ、または失敗した場合、同じ実行IDを使用して再開できます。これを行うには、実行を初期化し、以下を指定します。

  • resumeパラメータを"must"に設定します(resume="must")。
  • 停止またはクラッシュした実行の実行IDを指定します。

以下のコードスニペットは、W&B Python SDKでこれを達成する方法を示しています。

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="must")

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

停止またはクラッシュした実行を、既存の実行を上書きせずに再開します。これは、プロセスが正常に終了しない場合に特に役立ちます。次回W&Bを開始すると、W&Bは最後のステップからログを開始します。

W&Bで実行を初期化する場合、resumeパラメータを"allow"(resume="allow")で設定します。停止またはクラッシュした実行の実行IDを指定します。以下のコードスニペットは、W&B Python SDKでこれを達成する方法を示しています。

import wandb

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="allow")

実行を自動的に再開するように設定を有効にする

以下のコードスニペットは、Python SDKまたは環境変数を使用して実行を自動的に再開する方法を示します。

以下のコードスニペットは、Python SDKでW&B実行IDを指定する方法を示しています。

<>で囲まれた値をあなた自身のものに置き換えてください。

run = wandb.init(entity="<entity>", \ 
        project="<project>", id="<run ID>", resume="<resume>")

次の例は、bashスクリプトでW&B WANDB_RUN_ID変数を指定する方法を示しています。

RUN_ID="$1"

WANDB_RESUME=allow WANDB_RUN_ID="$RUN_ID" python eval.py

ターミナル内で、W&B実行IDと共にシェルスクリプトを実行できます。次のコードスニペットは実行ID akj172を渡します。

sh run_experiment.sh akj172 

例えば、train.pyというPythonスクリプトをUsers/AwesomeEmployee/Desktop/ImageClassify/training/というディレクトリーで実行するとします。train.py内で、自動再開を有効にする実行が作成されます。次にトレーニングスクリプトが停止されたとします。この実行を再開するには、Users/AwesomeEmployee/Desktop/ImageClassify/training/内でtrain.pyスクリプトを再起動する必要があります。

中断可能なSweepsの実行を再開する

中断されたスイープ実行を自動的に再キューします。これは、スイープエージェントを停止の対象となる計算環境(SLURMジョブの中断可能なキュー、EC2スポットインスタンス、Google Cloud中断可能VMなど)で実行する場合に特に役立ちます。

mark_preempting関数を使用して、W&Bが中断されたスイープ実行を自動的に再キューできるようにします。以下のコードスニペットの例

run = wandb.init()  # 実行を初期化
run.mark_preempting()

以下の表は、スイープ実行の終了ステータスに基づいてW&Bが実行をどのように扱うかを概説しています。

ステータス 振る舞い
ステータスコード0 実行は成功裏に終了したと見なされ、再キューされません。
非ゼロステータス W&Bは自動的に実行をスイープに関連付けられたランキューに追加します。
ステータスなし 実行はスイープランキューに追加されます。スイープエージェントは、キューが空になるまでランキューから実行を消費します。キューが空になると、スイープキューはスイープ検索アルゴリズムに基づいて新しい実行の生成を再開します。