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

> Python SDK を使用して W&B Experiment を作成し、run の初期化、ハイパーパラメーター、メトリクスをログすることをトラッキングします。

# Experiment を作成する

W\&B Python SDK を使用して、機械学習の実験をトラッキングできます。結果はインタラクティブなダッシュボードで確認できるほか、[W\&B Public API](/ja/models/ref/python/public-api/) を使用してプログラムからアクセスできるよう、データを Python にエクスポートすることもできます。

このガイドでは、W\&B の構成要素を使用して W\&B Experiment を作成する方法を説明します。

<div id="how-to-create-a-wb-experiment">
  ## W\&B Experiment の作成方法
</div>

4 つの step で W\&B Experiment を作成します。

1. [W\&B run を初期化する](#initialize-a-wb-run)
2. [ハイパーパラメーターの 辞書 を記録する](#capture-a-dictionary-of-hyperparameters)
3. [トレーニングループ内でメトリクスをログする](#log-metrics-inside-your-training-loop)
4. [Artifact を W\&B にログする](#log-an-artifact-to-wb)

<div id="initialize-a-wb-run">
  ### W\&B run を初期化する
</div>

W\&B Run を作成するには、[`wandb.init()`](/ja/models/ref/python/functions/init) を使用します。

次のスニペットは、`“cat-classification”` という名前の W\&B プロジェクトに run を作成し、この run を識別しやすくするために説明として `“My first experiment”` を設定しています。さらに、`“baseline”` と `“paper1”` のタグを追加して、この run が将来の論文公開を想定したベースライン実験であることがわかるようにしています。

```python theme={null}
import wandb

with wandb.init(
    project="cat-classification",
    notes="My first experiment",
    tags=["baseline", "paper1"],
) as run:
    ...
```

`wandb.init()` は [Run](/ja/models/ref/python/experiments/run) オブジェクトを返します。

<Note>
  注: `wandb.init()` を呼び出した時点ですでにそのプロジェクトが存在する場合、Runs は既存のプロジェクトに追加されます。たとえば、`“cat-classification”` という名前のプロジェクトがすでにある場合、そのプロジェクトは削除されず、引き続き存在します。代わりに、そのプロジェクトに新しい run が追加されます。
</Note>

<div id="capture-a-dictionary-of-hyperparameters">
  ### ハイパーパラメーターの辞書を記録する
</div>

学習率やモデルタイプなどのハイパーパラメーターを辞書として保存します。`config` に記録したモデルの設定は、後で結果を整理したりクエリしたりするのに役立ちます。

```python theme={null}
with wandb.init(
    ...,
    config={"epochs": 100, "learning_rate": 0.001, "batch_size": 128},
) as run:
    ...
```

Experiment の設定方法について詳しくは、[Experiments の設定](./config)を参照してください。

<div id="log-metrics-inside-your-training-loop">
  ### トレーニングループ内でメトリクスをログする
</div>

各トレーニングstepにおける精度や損失などのメトリクスをログするには、[`run.log()`](/ja/models/ref/python/experiments/run/#method-runlog) を呼び出します。

```python theme={null}
model, dataloader = get_model(), get_data()

for epoch in range(run.config.epochs):
    for batch in dataloader:
        loss, accuracy = model.training_step()
        run.log({"accuracy": accuracy, "loss": loss})
```

W\&B でログできるさまざまなデータタイプについて詳しくは、[Experiments 中にデータをログする](/ja/models/track/log/)を参照してください。

<div id="log-an-artifact-to-wb">
  ### Artifact を W\&B にログする
</div>

必要に応じて、W\&B Artifact をログできます。Artifacts を使うと、データセットやモデルのバージョン管理が容易になります。

```python theme={null}
# ファイルやディレクトリを保存できます。この例では、モデルにONNXファイルを出力するsave() methodがあると仮定します。
model.save("path_to_model.onnx")
run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
```

[Artifacts](/ja/models/artifacts/) の詳細、または [Registry](/ja/models/registry/) でのモデルのバージョン管理については、こちらをご覧ください。

<div id="putting-it-all-together">
  ### 以上をまとめると
</div>

前述のコードスニペットをすべて含む完全なスクリプトを以下に示します。

```python theme={null}
import wandb

with wandb.init(
    project="cat-classification",
    notes="",
    tags=["baseline", "paper1"],
    # runのハイパーパラメーターを記録する。
    config={"epochs": 100, "learning_rate": 0.001, "batch_size": 128},
) as run:
    # モデルとデータを設定する。
    model, dataloader = get_model(), get_data()

    # メトリクスをログしながらトレーニングを実行し、モデル性能を可視化する。
    for epoch in range(run.config["epochs"]):
        for batch in dataloader:
            loss, accuracy = model.training_step()
            run.log({"accuracy": accuracy, "loss": loss})

    # トレーニング済みモデルをArtifactとしてアップロードする。
    model.save("path_to_model.onnx")
    run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
```

<div id="next-steps-visualize-your-experiment">
  ## 次のステップ: 実験を可視化する
</div>

W\&B ダッシュボードを、機械学習モデルの結果を整理し、可視化するための中心的な場所として使用します。数回クリックするだけで、[平行座標プロット](/ja/models/app/features/panels/parallel-coordinates/)、[パラメーター重要度分析](/ja/models/app/features/panels/parameter-importance/)、[その他のチャートタイプ](/ja/models/app/features/panels/) などの、豊富でインタラクティブなチャートを作成できます。

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-sandboxes-integrations-placement/gsiJ_BEkjRzibnDO/images/sweeps/quickstart_dashboard_example.png?fit=max&auto=format&n=gsiJ_BEkjRzibnDO&q=85&s=c5d82b62911d172f97da3a2d22ef56f3" alt="クイックスタート Sweeps ダッシュボードの例" width="4302" height="3048" data-path="images/sweeps/quickstart_dashboard_example.png" />
</Frame>

実験や特定の run を表示する方法の詳細については、[実験結果を可視化する](/ja/models/track/workspaces/) を参照してください。

<div id="best-practices">
  ## ベストプラクティス
</div>

以下は、Experiments を作成する際に考慮すべき推奨ガイドラインです。

1. **run を終了する**: `with` 文で `wandb.init()` を使用すると、コードの実行が完了したとき、または例外が発生したときに、run が自動的に終了済みとしてマークされます。
   * Jupyter ノートブックでは、Run オブジェクトを自分で管理したほうが便利な場合があります。この場合は、Run オブジェクトで `finish()` を明示的に呼び出して、完了としてマークできます。

     ```python theme={null}
     # ノートブックのセル内:
     run = wandb.init()

     # 別のセル内:
     run.finish()
     ```
2. **Config**: モデルを再現するために使用したいハイパーパラメーター、アーキテクチャ、データセット、そのほかの情報をトラッキングします。これらは column として表示され、アプリでは設定 column を使って run を動的にグループ化、並べ替え、フィルターできます。
3. **Project**: プロジェクトは、まとめて比較できる Experiments の集合です。各プロジェクトには専用のダッシュボードページがあり、異なるモデル バージョンを比較できるように、run のさまざまなグループを簡単にオン/オフできます。
4. **Notes**: スクリプトから直接、簡単なコミットメッセージを設定します。メモは W\&B App の run の Overview セクションで編集および確認できます。
5. **Tags**: ベースラインの run や重要な run を識別します。tags を使って run をフィルターできます。tags は、後から W\&B App のプロジェクトのダッシュボードにある Overview セクションで編集できます。
6. **Experiments を比較するために複数の run set を作成する**: Experiments を比較するときは、メトリクスを比較しやすくするために複数の run set を作成します。同じ チャート または チャート のグループ上で、run set のオン/オフを切り替えられます。

次の コードスニペット は、上記のベストプラクティスに従って W\&B Experiment を定義する方法を示しています。

```python theme={null}
import wandb

config = {
    "learning_rate": 0.01,
    "momentum": 0.2,
    "architecture": "CNN",
    "dataset_id": "cats-0192",
}

with wandb.init(
    project="detect-cats",
    notes="tweak baseline",
    tags=["baseline", "paper1"],
    config=config,
) as run:
    ...
```

W\&B Experiment を定義する際に使用できるパラメーターの詳細については、[API リファレンスガイド](/ja/models/ref/python/)の [`wandb.init()`](/ja/models/ref/python/functions/init) API ドキュメントを参照してください。
