> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

> run を巻き戻して、元のデータを失わずにその履歴を修正または変更します。

# run を巻き戻す

run を巻き戻すと、run の履歴を変更できます。run を巻き戻すと、W\&B は同じ run ID を維持したまま、run の状態を指定したステップまでリセットします。

<Note>
  run を巻き戻す機能は現在開発中です。Multi-tenant Cloud と専用クラウドではプレビュー版として提供されていますが、セルフマネージドではまだ利用できません。

  巻き戻しにはパフォーマンス上の既知の制限があるため、W\&B では通常、代わりに [フォーク](/ja/products/wandb/runs/forking) を使用することを推奨しています。
</Note>

<h3 id="prerequisites">
  前提条件
</h3>

run を巻き戻す前に、次の前提条件を満たしていることを確認してください。

* run を巻き戻すには、[W\&B Python SDK](https://pypi.org/project/wandb/) のバージョン `0.17.1` 以上が必要です。
* 単調増加する ステップ を使用する必要があります。[`define_metric()`](/ja/products/wandb/ref/python/experiments/run#define_metric) で定義した単調増加でない ステップ では機能しません。run の履歴に必要な時系列順が崩れるためです。

<h3 id="limitations">
  制限事項
</h3>

巻き戻しでは、次の機能はサポートされていません。

* **ログの巻き戻し**: 新しい run セグメントではログがリセットされます。
* **システムメトリクスの巻き戻し**: W\&B は、巻き戻しポイント以降の新しいシステムメトリクスのみをログします。
* **アーティファクトの関連付け**: W\&B は、アーティファクトを、それを生成したソース run に関連付けます。

W\&B は、巻き戻した run のサマリー メトリクスを、新たにログされた履歴に基づいて再計算します。その結果、次のようになります。

* **履歴の切り詰め**: W\&B は履歴を巻き戻しポイントまで切り詰め、新しいデータをログできるようにします。
* **サマリー メトリクス**: 新たにログされた履歴に基づいて再計算されます。
* **設定の保持**: W\&B は元の設定を保持します。新しい設定をマージすることもできます。

<h3 id="rewind-and-forking-compatibility">
  巻き戻しとフォークの互換性
</h3>

フォークは巻き戻しを補完する機能です。

run からフォークすると、W\&B は run の特定のポイントから新しいブランチを作成するため、異なるパラメーターやモデルを試すことができます。

run を巻き戻すと、run の履歴そのものを修正または変更できます。

<h2 id="rewind-a-run">
  run を巻き戻す
</h2>

run を特定の ステップ まで巻き戻し、その時点から新しいデータをログします。巻き戻したい run の ID と、巻き戻しの起点となる ステップ を、[`wandb.init()`](/ja/products/wandb/ref/python/functions/init) の `resume_from` パラメーターに引数として渡します。`resume_from` パラメーターには `<run ID>?_step=<step>` という形式の string を指定します。`<run ID>` は巻き戻したい run の run ID、`<step>` は巻き戻しの起点となる ステップ です。

たとえば、300 ステップ にわたって直線をログするとします。

```python theme={"system"}
import wandb

# 最初の run を初期化し、メトリクスをログする
with wandb.init(project="<project>", entity="wandb") as run:
    for i in range(300):
        # 直線をプロットする
        run.log({"metric": i, "step": i})
```

project の Workspace には、ステップ 0 から ステップ 300 までの折れ線グラフが表示されています。

<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/rewind_run_original.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=f08b7f13e5c42bdea0c2e491f4e102f7" alt="元の run の折れ線グラフ" width="2014" height="1024" data-path="products/wandb/_media/rewind_run_original.png" />

その後、run を ステップ 200 まで巻き戻し、ステップ 200 から ステップ 300 までの間 `i*1.1` の値をとる `additional_metric` という新しいメトリクスをログしたいとします。さらに、ステップ 250 以降は直線ではなく、新たに緩やかな波形パターン (`i**2 + 2*sin(i/3)`) をログしたいとします。

```python theme={"system"}
import math

run_ID = "<run_ID>" # 巻き戻したい run の run ID に置き換えてください

# 最初の run を特定のステップまで巻き戻し、ステップ 200 からメトリクスをログします
with wandb.init(project="<project>", entity="wandb", resume_from=f"{run_ID}?_step=200") as run:

    # 最初の数ステップでは、元の run と同じメトリクスをそのままログします
    # ステップ 250 以降は、波形パターンのログを開始します
    for i in range(200, 300):
        if i < 250:
            run.log({"metric": i, "step": i})  # 波形を加えず、元の run と同様にログを継続します
        else:
            # ステップ 250 から波形の動作を加えます
            subtle_wave = i + (2 * math.sin(i / 3.0))  # 緩やかな波形パターンを適用します
            run.log({"metric": subtle_wave, "step": i})
        # さらに、すべてのステップで新しいメトリクスをログします
        run.log({"additional_metric": i * 1.1, "step": i})
```

次の画像は、更新後の project の Workspace を示しています。巻き戻し後のプロットでは、次の変化を確認できます。

* 折れ線グラフには、ステップ 0 から ステップ 200 までの元の直線と、ステップ 250 から始まる新しい緩やかな波形が表示されています (左の画像) 。
* W\&B によって、ステップ 200 から始まる `additional_metric` というラベルの新しいプロット (右のプロット) が作成されています。

<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/rewind_run_step200_wmetric.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1739ebdb6401da0ae79ff8732606e2b4" alt="左から順に：元の直線と追加のメトリクス" width="3266" height="1057" data-path="products/wandb/_media/rewind_run_step200_wmetric.png" />

<h2 id="view-an-archived-run">
  アーカイブされた run を表示する
</h2>

run を巻き戻した後も、元のアーカイブされた run を W\&B アプリで確認できます。アーカイブされた run を表示するには、次の手順に従います。

1. **Overview タブにアクセスする:** run のページで [**Overview** タブ](/ja/products/wandb/runs#overview-tab) にアクセスします。このタブでは、run の詳細と履歴をまとめて確認できます。
2. **Forked From フィールドを探す:** **Overview** タブで `Forked From` フィールドを検索します。このフィールドには、再開の履歴が記録されています。**Forked From** フィールドにはソース run へのリンクが含まれているため、元の run までさかのぼり、巻き戻しの履歴全体を把握できます。

`Forked From` フィールドを使うと、アーカイブされた再開のツリーを簡単にたどり、各巻き戻しの順序と起点を把握できます。

<h2 id="fork-from-a-run-that-you-rewind">
  巻き戻した run からフォークする
</h2>

巻き戻した run からフォークするには、`wandb.init()` で [`fork_from`](/ja/products/wandb/runs/forking) 引数を使用し、ソース run の ID と、フォークの起点とするソース run の ステップ を指定します。

```python theme={"system"}
import wandb

# 特定のステップから run をフォークする
forked_run = wandb.init(
    project="<project>",
    entity="<entity>",
    fork_from=f"{rewind_run.id}?_step=500",
)

# 新しい run で引き続きログする
for i in range(500, 1000):
    forked_run.log({"metric": i*3})
forked_run.finish()
```
