> ## 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 の基本的な構成要素である Runs について説明します。

# 概要

*run* は、W\&B がログする計算の単一の単位です。W\&B Run は、project 全体を構成する最小単位の要素と考えることができます。つまり、各 run は、モデルをトレーニングして結果をログする処理やハイパーパラメーター sweep など、特定の計算の記録です。

run を初期化してログする一般的なユースケースには、次のようなものがあります。

* モデルをトレーニングし、精度や損失などの[メトリクスを記録する](/ja/products/wandb/ref/python/experiments/run#method-run-log)
* [ハイパーパラメーター調整](/ja/products/wandb/sweeps)を行い、新しい実験を実行する
* 別のモデルを使用して新しい機械学習の実験を行う
* データセットやモデルを [W\&B Artifacts](/ja/products/wandb/artifacts) としてトラッキングし、保存する
* チームの他のメンバーが W\&B Artifacts として使用したデータセットやモデルを[ダウンロードして使用する](/ja/products/wandb/artifacts/download-and-use-an-artifact)

W\&B run を初期化するには、W\&B Python SDK の [`wandb.init()`](/ja/products/wandb/ref/python/functions/init) メソッドを呼び出します。これにより新しい run が開始され、`wandb.Run` オブジェクトが返されます。このオブジェクトを使用して、メトリクス、アーティファクト、その他の情報を run にログできます。run の初期化の詳細については、[run を初期化する](/ja/products/wandb/runs/initialize-run)を参照してください。

各 run オブジェクトには、[*run ID* と呼ばれる一意の ID](/ja/products/wandb/runs/run-identifiers#unique-run-identifiers) があります。[一意の ID を自分で指定する](/ja/products/wandb/runs/run-identifiers#unique-run-identifiers)ことも、[W\&B にランダムに生成させる](/ja/products/wandb/runs/run-identifiers#autogenerated-run-ids)こともできます。また、各 run オブジェクトには、人が読みやすい (一意ではない) [run 名](/ja/products/wandb/runs/run-identifiers#run-name)もあります。run 名は自分で指定することも、W\&B にランダムに生成させることもできます。run は初期化後にリネームできます。

W\&B は run を [*project*](/ja/products/wandb/track/project-page) にログします。project は、run の初期化時に `wandb.init(project="")` で指定します。指定した project が存在しない場合、W\&B は新しい project を作成します。存在する場合は、指定された project に run をログします。

<Note>
  プロジェクト名を指定しない場合、W\&B は run を `Uncategorized` という project に保存します。
</Note>

`wandb.init()` は、ID、名前、設定、状態など、run のプロパティを含む `wandb.Run` オブジェクトを返します。この run オブジェクトの `wandb.Run.log()`、`wandb.Run.log_code()`、`wandb.Run.use_artifact()` などのメソッドを使用して、メトリクス、アーティファクト、その他の情報を run にログできます。

各 run には、run の現在のステータスを表す状態があります。取り得る run の状態の一覧については、[Run states](/ja/products/wandb/runs/run-states) を参照してください。

W\&B アプリ 上の run のプロジェクトの Workspace で、[run とそのプロパティを表示](/ja/products/wandb/runs/view-logged-runs)できます。また、[`wandb.Api.Run`](/ja/products/wandb/ref/python/experiments/run) オブジェクトを使用して、プログラムから run のプロパティにアクセスすることもできます。

例として、W\&B run を初期化していくつかのメトリクスをログする、次のコードスニペットを見てみましょう。

<Note>
  実際に試す場合は、以下のコードスニペットの `entity` 変数に W\&B の entity を渡してください。entity は、W\&B のユーザー名またはチーム名です。entity は W\&B アプリ の Workspace の URL で確認できます。たとえば、Workspace の URL が `https://wandb.ai/nico/awesome-project` の場合、entity は `nico` です。
</Note>

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

entity = "nico"  # ご自身の W&B entity に置き換えてください
project = "awesome-project"

with wandb.init(entity=entity, project=project) as run:
    run.log({"accuracy": 0.9, "loss": 0.1})
```

1 行目で W\&B Python SDK をインポートします。2 行目で、entity `nico` 配下の project `awesome-project` で run を初期化します。3 行目で、モデルの精度と損失をその run にログします。

ターミナルには、W\&B から次の出力が返されます。

```bash theme={"system"}
wandb: Syncing run earnest-sunset-1
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb:                                                                                
wandb: 
wandb: Run history:
wandb: accuracy ▁
wandb:     loss ▁
wandb: 
wandb: Run summary:
wandb: accuracy 0.9
wandb:     loss 0.5
wandb: 
wandb: 🚀 View run earnest-sunset-1 at: https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb: ⭐️ View project at: https://wandb.ai/nico/awesome-project
wandb: Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb: Find logs at: ./wandb/run-20241105_111006-1jx1ud12/logs
```

W\&B はターミナルの出力に 2 つの URL を返します。1 つ目の URL は[該当する run の Workspace](/ja/products/wandb/runs/view-logged-runs) へ、2 つ目の URL は [project](/ja/products/wandb/track/project-page) ページへのリンクです。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/single-run-call.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=d94af51d31bb488f294d4ed90647f4b8" alt="単一の run の Workspace" width="2268" height="1178" data-path="products/wandb/_media/single-run-call.png" />
</Frame>

ある 1 時点だけでメトリクスをログしても、あまり役に立たないかもしれません。識別モデルをトレーニングする場合は、一定の間隔でメトリクスをログするのがより現実的です。たとえば、次のコードスニペットを見てみましょう。

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

config = {
    "epochs": 10,
    "learning_rate": 0.01,
}

with wandb.init(project="awesome-project", config=config) as run:
    print(f"lr: {config['learning_rate']}")
      
    # トレーニング run をシミュレート
    for epoch in range(config['epochs']):
      offset = random.random() / 5
      acc = 1 - 2**-epoch - random.random() / (epoch + 1) - offset
      loss = 2**-epoch + random.random() / (epoch + 1) + offset
      print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
      run.log({"accuracy": acc, "loss": loss})
```

トレーニングスクリプトは `wandb.Run.log()` を 10 回呼び出します。スクリプトが `wandb.Run.log()` を呼び出すたびに、W\&B はそのエポックの精度と損失をログします。

ターミナルには、次のような出力が表示されます。

```bash theme={"system"}
wandb: Syncing run jolly-haze-4
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/pdo5110r
lr: 0.01
epoch=0, accuracy=-0.10070974957523078, loss=1.985328507123956
epoch=1, accuracy=0.2884687745057535, loss=0.7374362314407752
epoch=2, accuracy=0.7347387967382066, loss=0.4402409835486663
epoch=3, accuracy=0.7667969248039795, loss=0.26176963846423457
epoch=4, accuracy=0.7446848791003173, loss=0.24808611724405083
epoch=5, accuracy=0.8035095836268268, loss=0.16169791827329466
epoch=6, accuracy=0.861349032371624, loss=0.03432578493587426
epoch=7, accuracy=0.8794926436276016, loss=0.10331872172219471
epoch=8, accuracy=0.9424839917077272, loss=0.07767793473500445
epoch=9, accuracy=0.9584880427028566, loss=0.10531971149250456
wandb: 🚀 View run jolly-haze-4 at: https://wandb.ai/nico/awesome-project/runs/pdo5110r
wandb: Find logs at: wandb/run-20241105_111816-pdo5110r/logs
```

W\&B は、シミュレートされたトレーニングループを `jolly-haze-4` という名前の単一の run として取得します。これは、スクリプトが `wandb.init()` メソッドを 1 回しか呼び出していないためです。

前の出力で W\&B が表示した URL をコピーし、ブラウザーに貼り付けます。この URL を開くと、W\&B アプリ UI の run の Workspace に移動します。たとえば、次の画像は run `jolly-haze-4` の Workspace です。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/run_log_example_2.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=a09a32b95940ac8be3745091a9b42b5a" alt="メトリクスがログされたトレーニング run" width="2467" height="1446" data-path="products/wandb/_media/run_log_example_2.png" />
</Frame>

<h2 id="run-summary">
  run のサマリー
</h2>

run の [`summary`](/ja/products/wandb/ref/python/experiments/run#attributes) 属性を使用すると、モデル、トレーニングプロセス、前処理ステップなどを要約する値を保存できます。時間とともに変化するメトリクスとは異なり、サマリー値は通常、最終的な結果や集計結果を表します。

サマリー値は、run の実行中にログすることも、run の終了後に更新することもできます。W\&B Python SDK を使用してプログラムからアクセスすることも、W\&B アプリで確認することもできます。

詳細については、[サマリー メトリクスをログする](/ja/products/wandb/track/log/log-summary)を参照してください。

<h2 id="run-configuration">
  run 設定
</h2>

run 設定には、ハイパーパラメーター、モデルのアーキテクチャ、データセット名など、実験の入力値や設定を保存します。設定値を使用すると、run の結果を得たときの条件をトラッキングできます。

設定値は、run の実行中にログすることも、run の終了後に更新することもできます。W\&B Python SDK を使用してプログラムからアクセスすることも、W\&B アプリ で確認することもできます。

詳細については、[実験を設定する](/ja/products/wandb/track/config)を参照してください。
