> ## 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 Python SDK を使用して W&B の実験を作成し、run の初期化、ハイパーパラメーター、メトリクスのログをトラッキングします。

# 実験を作成する

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

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

<h2 id="how-to-create-a-wb-experiment">
  W\&B の実験を作成する方法
</h2>

W\&B の実験は、次の 4 つのステップで作成します。

1. [W\&B run を初期化する](#initialize-a-wb-run)
2. [ハイパーパラメーターの辞書を取得する](#capture-a-dictionary-of-hyperparameters)
3. [トレーニングループ内でメトリクスをログする](#log-metrics-inside-your-training-loop)
4. [アーティファクトを W\&B にログする](/ja/products/wandb/track/create-an-experiment#log-an-artifact-to-w%26b)

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

[`wandb.init()`](/ja/products/wandb/ref/python/functions/init) を使用して W\&B run を作成します。

次のスニペットは、`“cat-classification”` という名前の W\&B project に run を作成し、この run を識別しやすいように `“My first experiment”` という説明を付けます。また、この run が将来の論文発表を見据えたベースライン実験であることがわかるように、`“baseline”` と `“paper1”` というタグも付けています。

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

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

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

<Note>
  注: `wandb.init()` を呼び出した時点で対象の project がすでに存在する場合、run はその既存の project に追加されます。たとえば、`“cat-classification”` という project がすでにある場合、その project は削除されずにそのまま残り、新しい run がその project に追加されます。
</Note>

<h3 id="capture-a-dictionary-of-hyperparameters">
  ハイパーパラメーターの辞書を取得する
</h3>

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

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

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

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

[`run.log()`](/ja/products/wandb/ref/python/experiments/run#method-runlog) を呼び出して、各トレーニングステップの精度や損失などのメトリクスをログします。

```python theme={"system"}
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 でログできるさまざまなデータタイプの詳細については、[オブジェクトとメディアをログする](/ja/products/wandb/track/log)を参照してください。

<h3 id="log-an-artifact-to-wb">
  W\&B にアーティファクトをログする
</h3>

必要に応じて、W\&B のアーティファクトをログします。アーティファクトを使用すると、データセットやモデルのバージョン管理を簡単に行えます。

```python theme={"system"}
# 任意のファイルだけでなく、ディレクトリも保存できます。この例では、
# モデルに ONNX ファイルを出力する save() メソッドがあるものとします。
model.save("path_to_model.onnx")
run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
```

詳しくは、[Artifacts](/ja/products/wandb/artifacts) のドキュメント、または [Registry](/ja/products/registry) でのモデルのバージョン管理に関するドキュメントを参照してください。

<h3 id="putting-it-all-together">
  まとめ
</h3>

これまでのコードスニペットをすべて組み合わせた完全なスクリプトを以下に示します。

```python theme={"system"}
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})

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

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

project の Workspace を使用すると、機械学習モデルの結果を整理して可視化できます。[パラレル座標プロット](/ja/products/wandb/app/features/panels/parallel-coordinates)や[パラメーター重要度分析](/ja/products/wandb/app/features/panels/parameter-importance)のほか、[さまざまなチャート タイプ](/ja/products/wandb/app/features/panels)のインタラクティブなチャートを作成できます。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/quickstart_dashboard_example.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=cdd010a365825115c5a34de76e5ffa6b" alt="クイックスタートの Sweeps Workspace の例" width="4172" height="3046" data-path="products/wandb/_media/quickstart_dashboard_example.png" />
</Frame>

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

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

実験を作成する際は、以下の推奨ガイドラインを参考にしてください。

* **コンテキストマネージャーで run を管理する**: `with` ステートメント内で `wandb.init()` を使用すると、コードの完了時または例外の送出時に run が自動的に終了します。
  * Jupyter ノートブックでは、run オブジェクトを自分で管理したほうが便利な場合があります。その場合は、`finish()` を呼び出して run を完了としてマークします。

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

    # 別のセル内:
    run.finish()
    ```
* **設定**: ハイパーパラメーター、モデルのアーキテクチャ、データセットの情報など、モデルの再現に必要な値をトラッキングします。詳細については、[W\&B App で run の Overview セクションにある設定を表示する](/ja/products/wandb/track/config#view-config-values-in-the-w\&b-app)を参照してください。
* **Project**: [project](/ja/products/wandb/track/project-page) を使用すると、実験を一か所にまとめて整理できます。project では、結果の可視化、run の比較、アーティファクトの表示とダウンロード、オートメーションの作成などを行えます。
* **メモ**: `baseline model` や `tuned hyperparameters` など、run の目的を説明するメモを追加します。メモは後から W\&B App の run 概要で編集できます。
* **ジョブタイプ**: [run にジョブタイプを追加](/ja/products/wandb/runs/grouping#organize-runs-by-job-type)すると、`train`、`test`、`inference` などのタスク別に run を整理したりフィルターしたりできます。
* **タグ**: [run にタグを追加](/ja/products/wandb/runs/tags)すると、ログされたメトリクスやアーティファクトからはわかりにくい特徴や属性を run にラベルとして付けられます。

以下の例は、これらのベストプラクティスに従って W\&B の run を初期化する方法を示しています。

```python theme={"system"}
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:
    ...
```

使用可能なパラメーターの詳細については、[Python SDK リファレンスガイド](/ja/products/wandb/ref/python)の [`wandb.init()`](/ja/products/wandb/ref/python/functions/init) を参照してください。
