> ## 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 をフォークする

<Note>
  run のフォークは、Multi-tenant Cloud および専用クラウドでプレビュー版として提供されています。専用クラウドでの利用については、サポートにお問い合わせください。現在、セルフマネージドのデプロイでは利用できません。

  プレビュー版の機能は本番環境での評価に使用できますが、機能、API、動作は現在も開発中であり、一般提供 (GA) までに変更される可能性があります。
</Note>

元の run に影響を与えることなく、実験の特定のポイントから異なるハイパーパラメーターやモデルを試すことができます。これを行うには、既存の W\&B run からフォークします。

run からフォークすると、W\&B はソース run の[一意の ID](/ja/products/wandb/runs/run-identifiers#unique-run-identifiers) と指定したステップを使用して、新しい run を作成します。ソース run のサマリー メトリクスは、フォークされた run にコピーされます。フォークされた run は、指定したステップまでのソース run の履歴とファイルをすべて共有します。

フォークしたステップ以降は、元の run とは独立して、フォークされた run に新しいデータをログできます。

以下のコードで作成した、フォークされた run の[ライブデモ](https://forge.coreweave.com/wandb/wandb/test-fork-run/workspace?nw=nwuserjuliarose)をご覧ください。

<Note>
  * run をフォークするには、[`wandb`](https://pypi.org/project/wandb/) SDK バージョン 0.16.5 以上が必要です。
  * run をフォークするには、ステップが単調増加している必要があります。[`define_metric()`](/ja/products/wandb/ref/python/experiments/run#define_metric) で定義した非単調なステップを使用する run からはフォークできません。非単調なステップを使用すると、run の履歴とシステムメトリクスの時系列の順序が崩れます。
</Note>

[`wandb.init()`](/ja/products/wandb/ref/python/functions/init) の `fork_from` の引数として、ソース run の一意の `run ID` と、フォークした run を開始する `step` を指定します。

<h2 id="fork-from-a-previously-logged-run">
  以前にログした run からフォークする
</h2>

次のコードスニペットは、以前に W\&B にログした run からフォークする方法を示しています。

まず、フォーク元の run の run ID を取得します。次に、[`wandb.init()`](/ja/products/wandb/ref/python/functions/init) の `fork_from` 引数に、run ID とフォーク元のステップを指定します。

次のコードを Python スクリプトまたはノートブックのセルにコピー＆ペーストし、`<source-run-id>`、`<project>`、`<entity>` を実際の値に置き換えてください。

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

# フォーク元のソース run の一意の ID
source_run_id = "<source-run-id>"

# フォークの起点となる step を指定します
fork_step = 200

# run をフォークします
with wandb.init(
    project="<project>",
    entity="<entity>",
    fork_from=f"{source_run_id}?_step={fork_step}",
) as forked_run:
    pass
```

<h2 id="fork-from-a-run-in-the-same-script">
  同じスクリプト内で run からフォークする
</h2>

次のコードスニペットは、同じスクリプト内で run を作成し、その run からフォークする方法を示しています。作成したばかりの run からフォークしたいときに、W\&B App で run ID を調べる手間を省けます。

まず、run を初期化し、いくつかのデータをログします。次に、元の run オブジェクトの `id` プロパティを使用して、その run の run ID を取得します。最後に、新しい run を初期化し、元の run の ID とフォーク元のステップを、[`wandb.init()`](/ja/products/wandb/ref/python/functions/init) の `fork_from` に引数として渡します。

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

# run を初期化します
with wandb.init(
    project="<project>",
    entity="<entity>"
) as original_run:
    # ...ここにトレーニングロジックを記述します...
    pass

# フォーク元のステップを指定します
fork_step = int("<num>")

# 元の run の ID を使用して、フォーク元のステップを指定します
with wandb.init(
    project="<project>",
    entity="<entity>",
    fork_from=f"{original_run.id}?_step={fork_step}",
) as forked_run:
    # ...ここにトレーニングロジックを記述します...
    pass
```

<Tip>
  元の run の一意の run ID を取得するには、`original_run.id` プロパティを使用します。
</Tip>

<h3 id="example-script">
  スクリプトの例
</h3>

次のコード例では、まず run をフォークし、次にトレーニングステップ 200 以降のメトリクスをフォークした run にログする方法を示します。

次のコードを Python スクリプトまたはノートブックのセルにコピー＆ペーストします。`<project>` と `<entity>` はご自身の値に置き換えてください。

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

# 最初の run を初期化し、いくつかのメトリクスをログする
with wandb.init(
    project="<project>",
    entity="<entity>"
) as run1:
    for i in range(300):
        run1.log({"metric": i})

# 最初の run から特定の step でフォークし、
# step 200 以降のメトリクスをログする
with wandb.init(
    project="<project>", 
    entity="<entity>", 
    fork_from=f"{run1.id}?_step=200"
) as run2:
    # 新しい run でログを継続する
    # 最初の数 step は、run1 と同じメトリクスをそのままログする
    # step 250 以降は、スパイク状のパターンをログする
    for i in range(200, 300):
        if i < 250:
            # スパイクを加えず、run1 と同様にログを継続する
            metric_value = i
        else:
            # step 250 からスパイク状の動作を加える
            metric_value = i + (2 * math.sin(i / 3.0))  # 小さなスパイク状のパターンを適用する

        # 両方のメトリクスが同じ step でログされるよう、
        # 1 回の呼び出しでまとめてログする
        run2.log({
            "metric": metric_value,
            "additional_metric": i * 1.1
        })
```

<Note>
  **巻き戻しとフォークの互換性**

  フォークは [`rewind`](/ja/products/wandb/runs/rewind) を補完する機能で、run の管理や実験をより柔軟に行えるようになります。

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

  run を巻き戻すと、W\&B で run の履歴そのものを修正または変更できます。
</Note>


## Related topics

- [run を巻き戻す](/ja/products/wandb/runs/rewind.md)
