> ## 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.

# W&B のトレーニング run で Weave を使用する

> Weave トレースを W&B のトレーニング run と統合し、Workspace のダッシュボードで関数の実行詳細を ML メトリクスとともに表示します。

<h1 id="log-traces-during-model-training-runs">
  モデル トレーニング run 中にトレースをログする
</h1>

モデル トレーニング run 中に Weave トレースをログし、個人用 Workspace で表示できます。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/traces-in-workspace.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1882d33c4a90bd8a481d7bbae626061f" alt="トレーニング run のメトリクスと並んで Weave トレース パネルが表示されている W&B Workspace。" width="2406" height="1200" data-path="products/wandb/weave/_media/traces-in-workspace.png" />
</Frame>

個人用 Workspace は、UI 内のカスタマイズ可能なダッシュボードです。モデル トレーニング run の詳細な分析やデータの可視化を確認できます。Workspace に Weave パネルを追加すると、モデル run 中にログされたトレース データを表示してアクセスでき、トレーニング中のモデルのパフォーマンスを詳しく把握できます。

たとえば、LLM モデルのファインチューニング中に、W\&B Workspace でステップ 500 の精度低下が確認された場合、統合された Weave トレースを使って、何が起きたのかを正確に確認できます。モデルが過度に冗長な応答を生成し始め、評価基準を満たさなくなった、といった原因を特定できます。

<h2 id="use-weave-panels">
  Weave パネルを使用する
</h2>

ML パイプライン内の[関数を `@weave.op` でデコレートする](/ja/products/wandb/weave/quickstart)と、それらの実行情報が自動的に取得され、個人用 Workspace で確認できるようになります。

たとえば、次のスクリプトは、Weave トレースを W\&B のトレーニング run と統合する方法を示しています。このスクリプトは機械学習のトレーニングループをシミュレートしており、各トレーニングステップで W\&B にメトリクスをログすると同時に、詳細な Weave トレースを作成します。関数に付けた `@weave.op` デコレーターにより、入力、出力、実行の詳細が自動的に取得されます。トレーニングループが `wandb.log()` でメトリクスをログすると、Weave のトレース情報も project にログされます。

```python lines theme={"system"}
import wandb
import weave
import random

# 同じ project で W&B と Weave の両方を初期化します
project = "my-workspace-project"
weave.init(project)

@weave.op
def evaluate_model(model_state, epoch):
    # 評価メトリクスをシミュレートします
    accuracy = 0.7 + epoch * 0.02 + random.uniform(-0.05, 0.05)
    
    # モデルの特定の動作をトラッキングします
    test_responses = {
        "conciseness_check": "Model generated 500 words for simple question",
        "accuracy_check": "Model answered 8/10 questions correctly",
        "hallucination_check": "No factual errors detected"
    }
    
    return {
        "accuracy": accuracy,
        "diagnostic_results": test_responses
    }

@weave.op
def training_step(epoch, lr):
    # トレーニングのロジックをシミュレートします
    loss = 1.0 / (epoch + 1) + random.uniform(-0.1, 0.1)
    
    # トレースを伴う評価を行います
    eval_results = evaluate_model(f"checkpoint_{epoch}", epoch)
    
    return {
        "loss": loss,
        "accuracy": eval_results["accuracy"],
        "diagnostics": eval_results["diagnostic_results"]
    }

# トレーニングループ
with wandb.init(project=project, config={"lr": 0.01}) as run:
    for epoch in range(5):
        # Weave のトレースを使用してトレーニングを実行します
        results = training_step(epoch, run.config.lr)
        
        # W&B にログします - インテグレーションの接点を作成します
        run.log({
            "epoch": epoch,
            "loss": results["loss"],
            "accuracy": results["accuracy"]
        })
```

このサンプルスクリプトを実行すると、トレースが run のその他の情報とともにどのようにログされるかを確認できます。

run の開始後は、実行中でも終了後でも、Workspace でトレース情報を表示できます。run の開始時にターミナルに表示されるリンク (`wandb: 🚀 View run at https://forge.coreweave.com/wandb/wandb/my-project/runs/[RUN-ID]` のような形式) を開くか、UI で Workspace にアクセスします。

UI から Workspace にアクセスするには、次の手順を実行します。

1. Weights & Biases の UI を開き、**Projects** タブをクリックします。project の一覧が表示されます。
2. project の一覧から、run をログした project をクリックします。**Workspaces** ページが開きます。
3. Workspace を自動 Workspace として設定している場合は、run に関するデータ可視化と情報が Workspace に自動的に表示されます。run のトレースデータは、Workspace の **Weave** セクションにあります。手動 Workspace の場合は、**Add panels** をクリックし、Add Panels メニューの **Weave** セクションからパネルを選択すると、Weave パネルを追加できます。

Workspace の詳細については、[実験結果を表示する](/ja/products/wandb/track/workspaces)を参照してください。

<h2 id="associate-traces-with-a-specific-wb-run">
  トレースを特定の W\&B run に関連付ける
</h2>

場合によっては、Weave が自動的に検出する run 以外の run にトレースを関連付けたいことがあります。デフォルトでは、Weave は実行中の `wandb.run` を自動的に検出し、トレースを関連付けます。グローバルな `wandb.run` ではない特定の run にトレースを関連付ける必要がある場合は、`set_wandb_run_context` を使用します。トレースを特定の run と run のステップに関連付けるには、このメソッドの `run_id` 引数と `step` 引数に値を定義します。

```python lines highlight={6} theme={"system"}
import weave

client = weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

# 以降のすべてのトレースを特定の run に関連付けます。
client.set_wandb_run_context(run_id="[YOUR-RUN-ID]", step=[INTEGER])

@weave.op
def my_function(x):
    return x * 2

my_function(10)  # このトレースはステップ 5 で "my-run-id" に関連付けられます。
```

`run_id` は run の短い ID (例: `38m4t5ja`) であり、完全な `entity/project/run_id` パスではありません。run の短い ID は、run の URL (`https://forge.coreweave.com/wandb/team/project/runs/[RUN-ID]`) で検索するか、[コード内で `wandb.run.id` にアクセスする](/ja/products/wandb/runs/run-identifiers#find-and-customize-a-runs-id-or-name)ことで確認できます。

上書きを停止してグローバルな `wandb.run` に戻すには、`clear_wandb_run_context` を呼び出します。

```python lines theme={"system"}
client.clear_wandb_run_context()

my_function(20)  # このトレースは、グローバルな wandb.run があれば使用します。
```

<h2 id="reference-wb-artifacts-in-a-weave-trace">
  Weave トレースで W\&B アーティファクトを参照する
</h2>

Weave トレースで [W\&B アーティファクト](/ja/products/wandb/artifacts) (モデル、データセット、チェックポイントなど) を参照できます。これにより、Weights & Biases UI にアーティファクトの詳細ページに直接移動するクリック可能なリンクが作成され、特定の操作で使用したアーティファクトのバージョンをトラッキングできます。

たとえば、モデルの 2 つのバージョン (`v1` と `v2`) をトレーニングした場合、そのモデルをクエリするときに、`v1` アーティファクトへの参照をトレースの属性として追加できます。これにより、特定の出力を生成したアーティファクトのバージョンを正確に追跡できます。

アーティファクトをトレースに関連付けるには、次の構文を使用して、`wandb-artifact:///` 接頭辞とアーティファクトの完全名を連結し、アーティファクトの URL を作成します：`wandb-artifact:///[FULL-NAME-OF-ARTIFACT]`。その後、次のいずれかの方法で Weave に渡します：

* 任意の属性として
* `Model` の属性として

アーティファクトの完全名は、Weights & Biases UI の詳細ページで確認できます。形式は `[ENTITY]/[PROJECT]/[ARTIFACT-NAME]:[VERSION]` です。Weights & Biases UI のアーティファクトの詳細ページから完全名をコピーできます。

以下のセクションで、それぞれの方法を説明します。

<h3 id="add-an-artifact-as-an-attribute-of-a-trace">
  アーティファクトをトレースの属性として追加する
</h3>

アーティファクトをトレースの属性として追加するには、`weave.attributes()` コンテキストマネージャーにキーと値のペアで渡します。

<Tabs>
  <Tab title="Python">
    ```python lines {10} theme={"system"}
    import weave

    weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

    @weave.op
    def my_function(name: str):
        return f"Hello, {name}!"

    # 任意のキー名をキー、アーティファクトの URL を値として追加する
    with weave.attributes({'artifact_id': 'wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0'}):
        result = my_function("World")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript twoslash lines {12} theme={"system"}
    // @noErrors
    import {init, op, withAttributes} from 'weave';

    async function main() {
      await init('wandb/docs');

      const myFunction = op(async function myFunction(name: string) {
        return `Hello, ${name}!`;
      });

      // 任意のキー名をキー、アーティファクトの URL を値として追加する
      const result = await withAttributes(
        {artifact_id: "wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"},
        async () => myFunction('World')
      );

      console.log('Result:', result);
    }

    main().catch(console.error);
    ```
  </Tab>
</Tabs>

<h3 id="add-an-artifact-as-an-attribute-of-a-model">
  アーティファクトを `Model` の属性として追加する
</h3>

アーティファクトを `Model` の属性として追加するには、モデルのインスタンスを作成するときにアーティファクトの URL を渡します:

<Note>
  `Model` クラスは Weave Python SDK でのみサポートされます。
</Note>

```python lines {7,17} theme={"system"}
import weave

weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

class MyModel(weave.Model):
    # アーティファクトの参照をモデルの属性として保存します
    artifact_id: str
    temperature: float = 0.7
    
    @weave.op
    def predict(self, query: str) -> str:
        # ここにモデルの推論ロジックを実装します
        return f"Response to: {query}"

# アーティファクトの URL をモデルの属性として渡します
model = MyModel(
    artifact_id="wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"
)

result = model.predict("Hello, World!")
```


## Related topics

- [Serverless RL を使用する](/ja/products/post-training/serverless-training/rl.md)
