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

# 実験を作成する

> W&B 実験を作成します。

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

このガイドでは、W\&Bのビルディングブロックを使用してW\&B Experimentを作成する方法を説明します。

## W\&B Experimentの作成方法

W\&B Experimentを次の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にログ](#log-an-artifact-to-wb)

### W\&B Runを初期化

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

以下のスニペットは、`“cat-classification”`という名前のW\&Bプロジェクトで、`“My first experiment”`という説明を持つrunを作成し、これを識別するのに役立てます。タグ`“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/run)オブジェクトを返します。

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

### ハイパーパラメータの辞書をキャプチャ

学習率やモデルタイプといったハイパーパラメータの辞書を保存します。設定でキャプチャしたモデル設定は、後で結果の整理やクエリに役立ちます。

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

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

### トレーニングループ内でメトリクスをログ

[`run.log()`](/ja/models/ref/python/log)を呼び出して、精度や損失といった各トレーニングステップに関するメトリクスをログします。

```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でログできるさまざまなデータタイプの詳細については、[Log Data During Experiments](/ja/models/track/log/)を参照してください。

### アーティファクトをW\&Bにログ

オプションでW\&Bアーティファクトをログします。アーティファクトは、データセットやモデルのバージョン管理を容易にします。

```python theme={null}
# 任意のファイルまたはディレクトリを保存できます。この例では、モデルがONNXファイルを出力するsave()メソッドを持つと仮定しています。
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/core/registry/)でのモデルのバージョン管理について詳しく学んでください。

### すべてをまとめる

前述のコードスニペットを使った完全なスクリプトは以下の通りです：

```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})

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

## 次のステップ：実験を可視化

W\&Bダッシュボードを使用して、機械学習モデルの結果を整理し可視化する中央の場所として利用します。[parallel coordinates plots](/ja/models/app/features/panels/parallel-coordinates/)、[parameter importance analyzes](/ja/models/app/features/panels/parameter-importance/)、および[その他の](/ja/models/app/features/panels/)ようなリッチでインタラクティブなグラフを数クリックで構築します。

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

実験や特定runの表示方法についての詳細は、[Visualize results from experiments](/ja/models/track/workspaces/)を参照してください。

## ベストプラクティス

以下は、実験を作成する際に考慮すべきいくつかのガイドラインです：

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

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

     # 別のセルで：
     run.finish()
     ```
2. **Config**: ハイパーパラメータ、アーキテクチャー、データセット、およびモデルの再現に使用したい他のすべてのものをトラックします。これらは列に表示され、アプリ内で動的にrunをグループ化、並べ替え、およびフィルタリングするためにconfig列を使用します。
3. **プロジェクト**: プロジェクトは比較可能な一連の実験です。各プロジェクトは専用のダッシュボードページを持ち、異なるモデルバージョンを比較するrunの異なるグループを簡単にオンオフできます。
4. **ノート**: スクリプトから直接クイックコミットメッセージを設定します。ノートを編集し、W\&Bアプリのrunのオーバービューセクションでアクセスします。
5. **タグ**: ベースラインrunとお気に入りのrunを識別します。タグを使用してrunをフィルタリングできます。タグは後で、プロジェクトのダッシュボードのオーバービューセクションで編集できます。
6. **実験を比較するために複数のrunセットを作成**: 実験を比較するときは、メトリクスを比較しやすくするために複数のrunセットを作成します。runセットを同じグラフまたは一連のグラフでオンオフできます。

以下のコードスニペットは、上記のベストプラクティスを使用して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を定義する際に利用可能なパラメータの詳細については、[`wandb.init`](/ja/models/ref/python/init) APIドキュメントを[APIリファレンスガイド](/ja/models/ref/python/)で参照してください。
