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

> W&B の基本的な building block である Runs について学びます。

# 概要

*run* は、W\&B によってログされる 1 回の計算単位です。W\&B Run は、プロジェクト全体を構成する最小単位と考えることができます。つまり、各 run は特定の計算の記録であり、たとえばモデルをトレーニングして結果をログしたものや、ハイパーパラメーター sweeps などが該当します。

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

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

W\&B run を初期化するには、W\&B Python SDK の [`wandb.init()`](/ja/models/ref/python/functions/init) method を呼び出します。これにより新しい run が開始され、run にメトリクス、Artifacts、そのほかの情報をログするために使用できる `wandb.Run` object が返されます。run の初期化の詳細は、[Initialize runs](/ja/models/runs/initialize-run) を参照してください。

各 run object には、[*run ID* と呼ばれる一意の識別子](/ja/models/runs/run-identifiers#unique-run-identifiers)があります。[一意の ID を指定する](/ja/models/runs/run-identifiers#unique-run-identifiers)ことも、[W\&B にランダムに生成させる](/ja/models/runs/run-identifiers#autogenerated-run-ids)こともできます。また、各 run object には、人が読める重複可能な [run 名](/ja/models/runs/run-identifiers#run-name) もあります。run に名前を指定することも、W\&B にランダムに生成させることもできます。run 名は初期化後に変更できます。

W\&B は run を[*プロジェクト*](/ja/models/track/project-page/)にログします。run を `wandb.init(project="")` で初期化するときにプロジェクトを指定します。プロジェクトが存在しない場合、W\&B は新しいプロジェクトを作成します。プロジェクトがすでに存在する場合、W\&B は指定したプロジェクトに run をログします。

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

`wandb.init()` は、ID、名、設定、state などの run のプロパティを含む `wandb.Run` object を返します。`wandb.Run.log()`、`wandb.Run.log_code()`、`wandb.Run.use_artifact()` などの methods を使って、run object から run にメトリクス、Artifacts、そのほかの情報をログできます。

各 run には、その run の現在のステータスを表す state があります。利用可能な run state の一覧については、[Run states](/ja/models/runs/run-states) を参照してください。

W\&B App の run のプロジェクトワークスペース内で、[runs とそのプロパティを表示](/ja/models/runs/view-logged-runs)できます。[`wandb.Api.Run`](/ja/models/ref/python/experiments/run) object を使って、プログラムから run のプロパティにアクセスすることもできます。

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

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

```python theme={null}
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` 配下のプロジェクト `awesome-project` で run を初期化します。3 行目では、その run にモデルの精度と損失をログします。

ターミナルでは、W\&B は次を返します:

```bash theme={null}
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/models/runs/view-logged-runs) に移動し、2 つ目の URL は [プロジェクト](/ja/models/track/project-page) ページに移動します。

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/R2JcDHqq5H9e7IgE/images/runs/single-run-call.png?fit=max&auto=format&n=R2JcDHqq5H9e7IgE&q=85&s=48560d381b80e0a6ed8485bbff99d8be" alt="単一の run の Workspace" width="2376" height="1294" data-path="images/runs/single-run-call.png" />
</Frame>

ある 1 時点だけでメトリクスをログしても、あまり有用ではないことがあります。識別モデルのトレーニングでは、一定間隔でメトリクスをログするほうが、より現実的な例です。たとえば、次のコードスニペットを考えてみましょう。

```python theme={null}
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={null}
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` という 1 つの run 内に、シミュレートされたトレーニングループを記録します。これは、スクリプトが `wandb.init()` method を 1 回しか呼び出さないためです。

前の出力で W\&B が表示した URL をブラウザにコピー＆ペーストしてください。その URL を開くと、W\&B App UI の 해당 run の Workspace が表示されます。たとえば、次の画像は run `jolly-haze-4` の Workspace を示しています。

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/R2JcDHqq5H9e7IgE/images/runs/run_log_example_2.png?fit=max&auto=format&n=R2JcDHqq5H9e7IgE&q=85&s=ed9113c8f9d2f87092834d10350637d3" alt="メトリクスがログされたトレーニング run" width="2592" height="1578" data-path="images/runs/run_log_example_2.png" />
</Frame>
