> ## 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.

> ログパターンが Weights & Biases のパフォーマンスに与える影響と、大規模な project で実験管理をスケーリングする方法について説明します。

# 大規模ログとパフォーマンス

パフォーマンスは通常、以下の組み合わせによって影響を受けます：

* project 内の run の数
* 各 run のステップの数
* ログする一意なメトリクスの数
* `wandb.Run.log()` を Call する頻度
* 各ログ Call で送信するデータ量
* Workspace の設定方法

ほとんどの場合、パフォーマンスの問題は、ログするステップが多すぎるよりも、ログする一意なメトリクスが多すぎることが原因です。

<h2 id="key-terms">
  Key terms
</h2>

このページでは、以下の用語を使用します。

<h3 id="steps">
  ステップ
</h3>

**ステップ** は、run 内のメトリクスの単一の論理行です。ステップは、`commit=True` を指定して `wandb.Run.log()` を呼び出すと確定します。また、`commit` も `step` も指定しない場合は暗黙的に確定します。

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

with wandb.init() as run:
    run.log({"loss": 0.42}, commit=True)
```

<h3 id="metric-cardinality">
  メトリクスのカーディナリティ
</h3>

**メトリクスのカーディナリティ**は、project にログされた一意のメトリクスキーの数で、ネストされた辞書内のキーも含みます。

例えば、以下では4つの一意のメトリクスキー `a`、`b.c`、`b.d.e`、`b.d.f` をログします。

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

with wandb.init() as run:
    run.log(
        {
            "a": 1,
            "b": {
                "c": 2,
                "d": {
                    "e": 3,
                    "f": 4,
                },
            },
        }
    )
```

Weights & Biases はネストされた辞書をフラット化し、ドット区切りのメトリクス名に変換します。

<h3 id="logged-points">
  ログされたポイント
</h3>

**ログされたポイント**は、記録されたメトリクス値の総数です。

例えば、以下のコード例はいずれも 3 つのログされたポイントを生成します：

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

with wandb.init() as run:
    run.log({"a": 1, "b": 2, "c": 3})
```

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

with wandb.init() as run:
    run.log({"a": 1})
    run.log({"a": 2})
    run.log({"a": 3})
```

<h3 id="log-frequency">
  ログ頻度
</h3>

**ログ頻度**は、1 分あたりの `wandb.Run.log()` の Call 回数です。

```text theme={"system"}
log frequency = wandb.Run.log() calls per minute
```

<h3 id="throughput">
  スループット
</h3>

**スループット**は、1 分あたりにログされたポイントの総数です。

スループットは、次のように考えることができます。

```text theme={"system"}
スループット = 1 分あたりのログされたポイント数
```

または、同等の表現として:

```text theme={"system"}
スループット = ログされたポイント × ログ頻度
```

<h2 id="recommendations-at-scale">
  大規模での推奨事項
</h2>

<Warning>
  このセクションで説明する推奨事項は、W\&B Multi-tenant Cloud にのみ適用されます。異なる Weights & Biases デプロイメントタイプを使用する場合は、管理者に確認して、デプロイメント固有のガイダンスまたは制限を確認してください。
</Warning>

次の表は、大規模にログする際の推奨動作範囲をまとめたものです。

| Dimension | Guidance at scale |
| - | - |
| project あたりの run | 10,000 |
| run あたりの ステップ | 500,000 |
| project あたりの メトリクスのカーディナリティ | 100,000 |
| ログ頻度 | 1 分あたり 1,000 行 |
| スループット | 1 分あたり 100,000 値 |
| 動画スループット | 1 分あたり 40 MB |

<Note>
  これらの値は、大規模で良好なパフォーマンスを維持するためのガイドラインです。Weights & Biases はこれらの推奨事項を超えてデータを受け入れる場合がありますが、ページの読み込みと使用が遅くなる可能性があります。
</Note>

<h2 id="throughput-examples">
  スループットのサンプル
</h2>

ログするパターンが異なっていても、スループットが同じになる場合があります。

<h3 id="scalar-logging-examples">
  スカラー値をログするサンプル
</h3>

<Warning>
  表に記載されている値は、W\&B Multi-tenant Cloud にのみ適用されます。異なる Weights & Biases デプロイメントタイプを使用する場合は、管理者に問い合わせて、デプロイメント固有のガイダンスまたは制限を確認してください。
</Warning>

| ログ Call あたりのメトリクス | ログ頻度 (分あたり) | スループット (分あたりの値) |
| - | - | - |
| 100 | 1,000 | 100,000 |
| 1,000 | 100 | 100,000 |
| 10,000 | 10 | 100,000 |
| 20,000 | 5 | 100,000 |

<h3 id="video-logging-examples">
  動画をログするサンプル
</h3>

<Warning>
  この表の値は、W\&B Multi-tenant Cloud にのみ適用されます。別の Weights & Biases デプロイメントタイプを使用している場合は、デプロイメント固有のガイダンスや制限について管理者にお問い合わせください。
</Warning>

| 動画サイズ (MB) | ログ頻度 (1 分あたりの回数) | 動画スループット (MB/分) |
| - | - | - |
| 1 | 46 | 46 |
| 5 | 8 | 40 |
| 10 | 4 | 40 |
| 50 | 1 | 50 |
| 100 | 0.3 | 30 |
| 250 | 0.1 | 25 |
| 500 | 0.07 | 35 |

<h2 id="logging-considerations">
  ログする際の考慮事項
</h2>

`wandb.Run.log()` を使用して実験のメトリクスをトラッキングします。

<h3 id="metric-cardinality-2">
  メトリクスのカーディナリティ
</h3>

project 内のメトリクスの総カーディナリティ (一意のメトリクス数) を、ワークロードに推奨される範囲内に収めてください。メトリクスのカーディナリティが高いことは、Workspace が遅くなる最も一般的な原因の一つです。

<Tip>
  パフォーマンスの問題は、多くの場合、ログするステップが多すぎることではなく、ログする一意のメトリクスが多すぎることが原因です。
</Tip>

Weights & Biases はネストされたキーをドット区切りのメトリクス名に展開するため、メトリクスのカーディナリティが想定以上に増えることがあります。

たとえば、以下では `a`、`b.c`、`b.d` という3つの一意のメトリクスキーをログします。

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

with wandb.init() as run:
    run.log(
        {
            "a": 1,
            "b": {
                "c": "hello",
                "d": [1, 2, 3],
            },
        }
    )
```

Workspace が突然遅くなった場合は、最近の run で大量の新しいメトリクスキーが追加されていないか確認してください。この場合、run が 1 つか 2 つしか表示されないプロットが多数現れることがよくあります。意図せずこうなった場合は、該当する run を削除し、メトリクス名の種類を減らして固定したうえで再作成することを検討してください。

<h3 id="value-size">
  値のサイズ
</h3>

ログする単一の値のサイズは 1 MB 未満に、1 回の `wandb.Run.log()` Call の合計サイズは 25 MB 未満に抑えてください。

これらの推奨事項は、処理方法が異なる `wandb.Image` や `wandb.Audio` などの `wandb.Media` タイプには適用されません。

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

with wandb.init(project="wide-values") as run:
    # 推奨しません
    run.log({"wide_key": list(range(10000000))})

    # 推奨しません
    with open("large_file.json", "r") as f:
        large_data = json.load(f)
        run.log(large_data)
```

大きな値は、その値を含むメトリクスだけでなく、run 全体のプロットの読み込みを遅くする可能性があります。

<Note>
  Weights & Biases は、これらの推奨値を超えるログしたデータも保存しますが、ページの読み込みが遅くなる場合があります。
</Note>

<h3 id="log-frequency-and-throughput">
  ログ頻度とスループット
</h3>

収集するデータの価値に見合ったログ頻度を選択してください。ログする頻度が高すぎると、SDK のオーバーヘッドが増え、アプリの動作が遅くなることがあります。特に、メトリクスのカーディナリティが高い場合やペイロードが大きい場合に影響が大きくなります。

まずは、次のガイドラインの範囲内でログしてください。

* ログ頻度: 1 分あたりの `wandb.Run.log()` Call が 1,000 回未満
* スループット: 1 分あたりのログされた値が 100,000 個未満
* 動画スループット: 1 分あたり 40 MB 未満

可能であれば、関連するメトリクスを同じステップにまとめてください。たとえば、次のコードスニペットは、同じステップで 3 つのメトリクスをログします。これは、個別にログするよりも効率的です。

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

with wandb.init(project="metric-frequency") as run:
    # 推奨: 関連するスカラーメトリクスをまとめてバッチ処理します
    run.log(
        {
            "loss": 0.12,
            "accuracy": 0.98,
            "lr": 1e-4,
        },
        commit=True,
    )
```

<h3 id="config-size">
  設定サイズ
</h3>

run 設定の合計サイズを 10 MB 未満に保ってください。

大規模な設定は、プロジェクトの Workspace や run テーブルの操作を遅くする可能性があります。

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

# 推奨
with wandb.init(
    project="config-size",
    config={
        "lr": 0.1,
        "batch_size": 32,
        "epochs": 4,
    },
) as run:
    pass

# 非推奨
with wandb.init(
    project="config-size",
    config={
        "large_list": list(range(10000000)),
        "large_string": "a" * 10000000,
    },
) as run:
    pass

# 非推奨
with open("large_config.json", "r") as f:
    large_config = json.load(f)
    wandb.init(config=large_config)
```

<h2 id="workspace-performance">
  Workspace パフォーマンス
</h2>

Workspace のパフォーマンスは、基盤となる project データと Workspace の設定の両方に依存します。

<h3 id="runs-per-project">
  project あたりの run 数
</h3>

大規模な project で最適なパフォーマンスを得るには、project 内の run 数を 10,000 未満に保ってください。

チームが普段、一部の run のみを使用している場合は、古い run や使用頻度の低い run を別のアーカイブ用 project に移動することを検討してください。[run の管理](/ja/products/wandb/runs/manage-runs)を参照してください。

<h3 id="panel-count">
  パネル数
</h3>

デフォルトでは、自動モードの Workspace はログされた各 key に対して標準的なパネルを作成します。大規模な project では、これによりパネルが多すぎて Workspace が遅くなることがあります。

パフォーマンスを改善するには:

1. Workspace を手動モードにリセットします。
2. 必要なパネルのみを追加するために [Quick add](/ja/products/wandb/app/features/panels#quick-add) を使用します。

<Note>
  使用していないパネルを1つずつ削除しても、通常はほとんど効果がありません。Workspace をリセットして、必要なパネルだけを追加し直してください。
</Note>

詳細については [Panels](/ja/products/wandb/app/features/panels) を参照してください。

<h3 id="section-count">
  セクション数
</h3>

Workspace 内のセクションが数百に及ぶと、パフォーマンスが低下する可能性があります。

メトリクスごとに 1 つずつセクションを作成するのではなく、高レベルのメトリクスグループに基づいてセクションを作成してください。セクションが多すぎる場合は、接尾辞ではなく接頭辞に基づいてセクションを作成することを検討してください。そうすることで、関連するメトリクスをより少ないセクションにまとめられます。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/section_prefix_toggle.gif?s=bf7605cb560506cb65de3e873c187290" alt="セクション作成の切り替え" width="996" height="536" data-path="products/wandb/_media/section_prefix_toggle.gif" />
</Frame>

<h3 id="many-metrics-per-run">
  run あたりの多数のメトリクス
</h3>

run あたり数千のメトリクスをログする場合、手動の Workspace を使用して、視覚化するメトリクスを選択できます。

フォーカスされたパネルのセットは読み込みが高速です。プロットされていないメトリクスも収集および保存されます。

Workspace を手動モードにリセットするには、Workspace の **action (<Icon icon="ellipsis" iconType="solid" />)** メニューをクリックし、**Reset workspace** をクリックします。Workspace のリセットは、run の保存済みメトリクスに影響しません。[Workspace パネル管理](/ja/products/wandb/app/features/panels) を参照してください。

<h3 id="file-count">
  ファイル数
</h3>

単一の run にアップロードするファイル数は 1,000 未満に抑えてください。

大量のファイルをログする必要がある場合は、代わりに W\&B Artifacts を使用してください。単一の run のファイル数が 1,000 を超えると、Run page の表示が遅くなることがあります。

<h3 id="reports-and-workspaces">
  Reports とワークスペース
</h3>

report は情報共有とプレゼンテーションのために設計されています。ワークスペースは、多数の run とメトリクスを対象に、情報密度の高い対話的な分析を行うために設計されています。

多数の run を比較したり、多くのグラフをまとめて表示したりする必要がある場合は、ワークスペースを使用します。厳選した結果を提示する場合は、report を使用します。

<h2 id="python-script-performance">
  Python スクリプトのパフォーマンス
</h2>

ログすると、トレーニングスクリプトにオーバーヘッドが発生する可能性があります。主な要因は次のとおりです：

1. 大きなペイロード
2. ネットワーク速度とバックエンドの設定
3. `wandb.Run.log()` への非常に頻繁な Call

`wandb.Run.log()` を呼び出しすぎると、各 Call がトレーニングループにわずかなレイテンシーを追加する可能性があります。複数のメトリクスをバッチ処理してログする Call を減らすと、通常パフォーマンスが向上します。

<Note>
  頻繁なログがトレーニング run を遅くしていますか？ログのパターンを調整してパフォーマンスを向上させる戦略については、[この Colab](https://wandb.me/log-hf-colab) を参照してください。
</Note>

Weights & Biases は、API レート制限を除き、これらの推奨事項に対して厳格なプロダクトの制限を強制しません。このページのガイダンスを超えた場合、Weights & Biases は引き続きデータを許可する可能性がありますが、アプリまたは SDK が遅くなる場合があります。

<h2 id="rate-limits">
  レート制限
</h2>

W\&B Multi-tenant Cloud の API では、サービスの信頼性と可用性を維持するためにレート制限を使用しています。

<Note>
  レート制限は変更される場合があります。
</Note>

レート制限に達すると、サーバーは HTTP `429 Rate limit exceeded` を返し、応答にレート制限ヘッダーを含めます。

<h3 id="rate-limit-http-headers">
  レート制限の HTTP ヘッダー
</h3>

| ヘッダー名 | 説明 |
| - | - |
| `RateLimit-Limit` | 現在の時間ウィンドウで利用可能なクォータ (0 から 1000 に換算) |
| `RateLimit-Remaining` | 現在のウィンドウの残りのクォータ (0 から 1000 に換算) |
| `RateLimit-Reset` | 現在のクォータがリセットされるまでの秒数 |

<h3 id="metric-logging-api-rate-limits">
  メトリクスをログする API のレート制限
</h3>

`wandb.Run.log()` は、オンラインで直接、または後から[オフライン同期](/ja/products/wandb/ref/cli/wandb-sync)を通じて、トレーニングデータを Weights & Biases に送信します。

メトリクスをログする際のレート制限は project 単位で適用され、ローリング時間ウィンドウ内のリクエスト頻度とリクエストの合計サイズの両方が対象となります。有料プランの制限は無料プランよりも高く設定されています。

レート制限を超えると、W\&B SDK はバックオフを使用してリクエストを自動的に再試行します。場合によっては、レート制限のウィンドウがリセットされるまで `run.finish()` が遅延することがあります。

レート制限に達する可能性を減らすには、次の対策を行ってください。

* 最新バージョンの W\&B SDK を使用します。
* ログする頻度を減らします。
* 関連するメトリクスをバッチにまとめ、ログする Call の回数を減らします。
* 必要に応じてオフラインでログし、後から同期します。

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

with wandb.init(project="basic-intro") as run:
    for epoch in range(10):
        accuracy = 1 - 2 ** -epoch - random.random() / (epoch + 1)
        loss = 2 ** -epoch + random.random() / (epoch + 1)

        if epoch % 5 == 0:
            run.log({"acc": accuracy, "loss": loss})
```

手動で同期するには、`wandb sync <run-file-path>` を使用します。[`wandb sync`](/ja/products/wandb/ref/cli/wandb-sync) を参照してください。

<h3 id="graphql-api-rate-limits">
  GraphQL API のレート制限
</h3>

Weights & Biases アプリと [Public API](/ja/products/wandb/ref/python/public-api/api) は、GraphQL リクエストを使用してデータをクエリしたり変更したりします。

Multi-tenant Cloud では、以下の制限が適用されます。

* 未認証のリクエストは、IP アドレスごとにレート制限されます
* 認証済みのリクエストは、ユーザーごとにレート制限されます
* プロジェクトパスを指定する一部の SDK リクエストは、データベースのクエリ時間に基づいて project ごとに制限される場合もあります

Teams プランと Enterprise プランの制限は、Free プランよりも高く設定されています。

Public API リクエストを大量に送信する場合は、可能な限りリクエスト間に少なくとも 1 秒の間隔を空けてください。HTTP `429 Rate limit exceeded` を受信した場合、または `RateLimit-Remaining=0` が表示された場合は、`RateLimit-Reset` に指定された秒数だけ待ってから再試行してください。

<h2 id="troubleshooting-slow-projects">
  動作が遅い project のトラブルシューティング
</h2>

project や Workspace の動作が遅いと感じる場合は、まず次の点を確認してください。

1. 最近の run で多数の新しいメトリクス名が追加されましたか？
2. ログする頻度が高すぎませんか？
3. 個々の `run.log()` Call のデータ量が非常に大きくありませんか？
4. Workspace が自動モードで、パネルやセクションが多すぎませんか？
5. project に、チームが実際に使用する数を超える run が含まれていませんか？

多くの場合、メトリクスのカーディナリティを減らし、ログする Call をバッチにまとめ、大規模な Workspace を手動モードに切り替えることで、パフォーマンスが向上します。

<h2 id="browser-considerations">
  ブラウザーに関する考慮事項
</h2>

Weights & Biases アプリはメモリを大量に使用する場合があり、Chrome で最も高いパフォーマンスを発揮します。コンピューターのメモリ容量によっては、3 つ以上のタブで Weights & Biases を同時に使用すると、パフォーマンスが低下することがあります。予想以上に動作が遅い場合は、他のタブやアプリケーションを閉じることを検討してください。

<h2 id="reporting-performance-issues-to-weights-biases">
  パフォーマンスの問題を Weights & Biases に報告する
</h2>

Weights & Biases はパフォーマンスを重視し、遅延に関するすべての報告を調査します。調査を迅速に進めるため、読み込みの遅さを報告する際は、主要なメトリクスとパフォーマンスイベントを取得する Weights & Biases の組み込みパフォーマンスロガーの使用をご検討ください。読み込みが遅いページの URL にパラメーター `&PERF_LOGGING` を追加し、コンソールの出力をアカウント担当チームまたはサポートチームに共有してください。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/adding_perf_logging.gif?s=e54d0d08282633f5296ee34d5aabfc8f" alt="PERF_LOGGING の追加" width="1504" height="590" data-path="products/wandb/_media/adding_perf_logging.gif" />
</Frame>
