> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-locadex-parallel-t9n-main-cs60c8p4o6ik99tylxgp3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> `wandb.init()` の `resume` パラメーターオプションを使用して、一時停止、停止、またはクラッシュした W&B run を再開します。

# run を再開する

`wandb.init()` で `resume` パラメーターを設定すると、run が停止またはクラッシュした場合に W\&B がどのように処理するかを指定できます。run を初期化すると、W\&B は run ID がすでに存在するかどうかを確認し、`resume` の値で定義された動作を適用します。

次の表は、`resume` パラメーターに渡す引数と、run ID の有無に応じた W\&B の動作をまとめたものです。

| Argument  | Description                                                                        | Run ID exists                                  | Run ID does not exist                | Use case                       |
| --------- | ---------------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------ | ------------------------------ |
| `"must"`  | W\&B は、run ID で指定された run を必ず再開します。                                                 | W\&B は同じ run ID で run を再開します。最後の step から再開します。 | W\&B はエラーを返します。                      | 同じ run ID を必ず使用する run を再開する場合。 |
| `"allow"` | run ID が存在する場合、W\&B に run の再開を許可します。                                               | W\&B は同じ run ID で run を再開します。最後の step から再開します。 | W\&B は指定された run ID で新しい run を初期化します。 | 既存の run を上書きせずに run を再開する場合。   |
| `"never"` | W\&B が run ID で指定された run を再開しないようにします。                                             | 指定された ID の run がすでに存在する場合はエラーを返します。            | W\&B は指定された run ID で新しい run を初期化します。 |                                |
| `"auto"`  | run ID が存在する場合、W\&B が自動的に run の再開を試みることを許可します。失敗したプロセスと同じディレクトリーから run を再起動してください。 | W\&B は同じ run ID で run を再開します。                  | W\&B は指定された run ID で新しい run を初期化します。 | Runs を自動的に再開できるようにする場合。        |

<Note>
  **`auto` と `allow` の使い分け**

  W\&B では、`resume="allow"` を使用し、再開したい run の run ID を明示的に指定することを推奨しています。

  `resume="auto"` オプションでは run ID を指定する必要はありませんが、同じディレクトリーで複数の runs が失敗した場合や、ファイルのディレクトリー構造が変わった場合に、予期しない動作につながることがあります。また、`resume="auto"` を使用する場合は、失敗したプロセスと同じディレクトリーから run を再起動する必要があります。
</Note>

以下のすべての例では、`<>` で囲まれた値を実際の値に置き換えてください。
<Tip>[再開した run のライブデモを見る](https://wandb.ai/wandb/resume-run/workspace?nw=nwuserjuliarose).</Tip>

<div id="resume-a-run-that-must-use-the-same-run-id">
  ## 同じ run ID を使用して再開する必要がある run
</div>

run が停止、クラッシュ、または失敗した場合は、同じ run ID を使用して再開できます。そのためには、run を初期化して、次を指定します。

* `resume` パラメーターを `"must"` に設定する (`resume="must"`)
* 停止またはクラッシュした run の run ID を指定する

次のコードスニペットは、W\&B Python SDK でこれを実現する方法を示しています。

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

<Warning>
  複数のプロセスで同じ `id` を同時に使用すると、予期しない結果が生じます。

  複数のプロセスを管理する方法について詳しくは、[分散トレーニング実験をログする](/ja/models/track/log/distributed-training/)を参照してください。
</Warning>

<div id="resume-a-run-without-overriding-the-existing-run">
  ## 既存のrunを上書きせずにrunを再開する
</div>

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

W\&Bでrunを初期化する際に、`resume` パラメーターを `"allow"` (`resume="allow"`) に設定します。停止またはクラッシュしたrunのrun IDを指定してください。次のコードスニペットは、W\&B Python SDKでこれを実現する方法を示しています。

```python theme={null}
import wandb

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

<div id="enable-runs-to-automatically-resume">
  ## run が自動的に自動再開されるようにする
</div>

次のコードスニペットは、Python SDK または環境変数を使用して、run の自動再開を有効にする方法を示しています。

<Tabs>
  <Tab title="W&B Python SDK">
    run を初期化するときに、`resume` パラメーターの引数として `auto` を渡します。失敗したプロセスと同じディレクトリから run を再起動してください。

    次のコードスニペットをコピー＆ペーストし、`<>` で囲まれた値をご自身の値に置き換えてください。

    ```python theme={null}
    with wandb.init(entity="<entity>", project="<project>", id="<run ID>", resume="auto") as run:
            # ここにトレーニングコードを記述します
    ```
  </Tab>

  <Tab title="Shell script">
    次の例は、bash スクリプトで W\&B の `WANDB_RUN_ID` 変数を指定する方法を示しています。

    ```bash title="run_experiment.sh" theme={null}
    RUN_ID="$1"

    WANDB_RESUME=auto WANDB_RUN_ID="$RUN_ID" python eval.py
    ```

    ターミナルで、W\&B run ID を指定してシェルスクリプトを実行できます。次のコードスニペットでは、run ID `akj172` を渡しています。

    ```bash theme={null}
    sh run_experiment.sh akj172 
    ```
  </Tab>
</Tabs>

<Warning>
  自動再開は、失敗したプロセスと同じファイルシステム上でプロセスを再起動した場合にのみ機能します。
</Warning>

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

<Note>
  ファイルシステムを共有できない場合は、`WANDB_RUN_ID` 環境変数を指定するか、W\&B Python SDK で run ID を渡してください。run ID の詳細については、「What are runs?」ページの [Custom run IDs](./#custom-run-ids) セクションを参照してください。
</Note>

<div id="resume-preemptible-sweeps-runs">
  ## プリエンプト可能な Sweeps run を再開する
</div>

プリエンプションシグナルを処理することで、W\&B は中断された [sweep](/ja/models/sweeps/) run を別のエージェントが実行できるよう自動的にキューに入れ直します。このパターンは、SLURM のプリエンプト可能なキュー、Amazon EC2 Spot Instance、Google Cloud のプリエンプト可能な VM など、sweep エージェントをプリエンプト可能なコンピューティング環境で実行する場合に役立ちます。

以下の手順は、[`wandb agent`](/ja/models/ref/cli/wandb-agent) CLI を使用して sweep エージェントを起動する場合に適用されます。CLI はトレーニングプログラムを**サブプロセス**として起動します。Python API の [`wandb.agent()`](/ja/models/ref/python/functions/agent) のみを使用する場合、これらの手順は完全には適用されません。Python API はトレーニング関数をスレッド内で実行するため、OS シグナルの配信と転送は CLI エージェントの動作とは異なります。

<div id="handle-a-preemption-signal">
  ### プリエンプションシグナルを処理する
</div>

スケジューラまたはプラットフォームで使われるプリエンプションシグナル (たとえば `SIGUSR1` や `SIGTERM`) のシグナルハンドラーを登録してください。ハンドラーでは、次の操作を行います。

1. run がアクティブなときに、[`mark_preempting()`](/ja/models/ref/python/experiments/run#mark_preempting) を呼び出します。
2. checkpoint の保存など、必要なクリーンアップを行います。
3. 非ゼロのコードで終了します。シグナルによる終了時には、一般的に `128 + signum` を使います。

`wandb.init()` の直後に、無条件で `mark_preempting()` を呼び出してはいけません。そうすると、コードの bug を含むあらゆる失敗がプリエンプションとしてマークされ、run が繰り返しキューに入れ直される可能性があります。

実行可能な例、CLI エージェント での `--forward-signals`、および `mark_preempting()` のさまざまな使い方をまとめた詳細な表については、[Signal handling and sweep runs](/ja/models/sweeps/signal-handling-sweep-runs) を参照してください。

このパターンに従うと、W\&B はおおむね次のように run の状態を記録します。

| シナリオ                                                                                                      | run の状態                                         |
| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| 終了コード 0 で run が正常に完了する                                                                                    | FINISHED                                        |
| 非ゼロの終了コードで run が失敗する                                                                                      | FAILED                                          |
| run が未処理のシグナル (たとえば `SIGKILL`) を受信する                                                                      | 約 5 分後に CRASHED                                 |
| run が処理済みのプリエンプションシグナル (たとえば `SIGTERM` または `SIGUSR1`) を受信し、ハンドラーが `mark_preempting()` を呼び出し、プロセスが非ゼロで終了する | PREEMPTED。run は次の エージェント request に備えてキューに入れられます |

<Info>
  sweep エージェント がプリエンプトされた run を取得した場合、トレーニングプロセスは 60 分以内に `wandb.init()` を呼び出す必要があります。run の取得後、`wandb.init()` を呼び出す前にプロセスが失敗するなどして初期化が行われなかった場合、60 分間のリース期限が切れるまで、W\&B はその run を別の エージェント が利用できるようにしません。
</Info>

Sweep エージェント は、sweep search アルゴリズムに新しいハイパーパラメーターの組み合わせをリクエストする前に、キューに入れ直された run を処理します。キューが空になると、sweep は通常のスケジューリングを再開します。
