メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://wb-21fd5541-claude-mcp-priority.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

W&B プロジェクトでカスタムチャートを作成できます。任意のデータを表としてログし、思いどおりに可視化できます。Vega を使えば、フォント、色、ツールチップの細部まで制御できます。
vega.github.io/vega でサポートされるチャート

仕組み

  1. データをログする: スクリプトから、設定 と summary データをログします。
  2. チャートをカスタマイズする: GraphQL クエリでログしたデータを取得します。Vega という強力な可視化記法を使って、クエリ結果を可視化します。
  3. チャートをログする: スクリプトから wandb.plot_table() を呼び出して、独自のプリセットを使用します。
PR 曲線と ROC 曲線
期待したデータが表示されない場合、探している列が選択した Runs にログされていない可能性があります。チャートを Save し、Runs table に戻って、eye アイコンで選択した Runs を確認してください。

スクリプトでチャートをログする

組み込みプリセット

W&B には、スクリプトから直接ログできる組み込みのチャートプリセットがいくつか用意されています。これには、折れ線グラフ、散布図、棒グラフ、ヒストグラム、PR 曲線、ROC 曲線が含まれます。
wandb.plot.line()カスタムの折れ線グラフをログします。これは、任意の x 軸と y 軸上の点 (x, y) を順番に結んだプロットです。
with wandb.init() as run:
  data = [[x, y] for (x, y) in zip(x_values, y_values)]
  table = wandb.Table(data=data, columns=["x", "y"])
  run.log(
      {
          "my_custom_plot_id": wandb.plot.line(
              table, "x", "y", title="Custom Y vs X Line Plot"
          )
      }
  )
折れ線グラフでは、任意の 2 つの次元に対する曲線をログできます。2 つの値のリストを対応させてプロットする場合は、各リストの値の数が完全に一致している必要があります (たとえば、各点には x と y の両方が必要です) 。
カスタム折れ線グラフ
レポートの例を見る または Google Colab ノートブックの例を試す

カスタムプリセット

組み込みのプリセットを調整するか、新しいプリセットを作成して、チャートを保存します。チャートIDを使用して、スクリプトから直接そのカスタムプリセットにデータをログできます。サンプルの Google Colab ノートブックを試す
# プロットする列を含む表を作成する
table = wandb.Table(data=data, columns=["step", "height"])

# 表の列をチャートのフィールドにマッピングする
fields = {"x": "step", "value": "height"}

# 表を使用して新しいカスタム チャートプリセットにデータを入力する
# 保存済みのカスタム チャートプリセットを使用するには、vega_spec_name を変更する
my_custom_chart = wandb.plot_table(
    vega_spec_name="carey/new_chart",
    data_table=table,
    fields=fields,
)
カスタムチャートプリセット

データをログする

スクリプトから次のデータ型をログして、カスタムチャートで使用できます。
  • Config: 実験の初期設定 (独立変数) です。これには、トレーニング開始時に wandb.Run.config にキーとしてログした名前付きフィールドが含まれます。例: wandb.Run.config.learning_rate = 0.0001
  • Summary: トレーニング中にログされた単一の値 (結果または従属変数) です。たとえば、wandb.Run.log({"val_acc" : 0.8}) です。トレーニング中に wandb.Run.log() でこのキーに複数回書き込んだ場合、summary にはそのキーの最後の値が設定されます。
  • History: ログされたスカラーの完全な時系列は、history フィールドを通じてクエリできます
  • summaryTable: 複数の値のリストをログする必要がある場合は、wandb.Table() を使用してそのデータを保存し、その後カスタムパネルでクエリします。
  • historyTable: 履歴データを確認する必要がある場合は、カスタムチャートパネルで historyTable をクエリします。wandb.Table() を呼び出すかカスタムチャートをログするたびに、その step の history に新しい表が作成されます。

カスタム表をログする方法

wandb.Table() を使用して、データを二次元配列としてログします。通常、この表の各行は 1 つのデータポイントを表し、各列はプロットしたい各データポイントに関連するフィールドや次元を表します。カスタムパネルを設定すると、表全体には wandb.Run.log() に渡した名前付きキー (以下の custom_data_table) でアクセスでき、個々のフィールドには列名 (xyz) でアクセスできます。実験全体を通して、複数のタイムステップで表をログできます。各表の最大サイズは 10,000 行です。Google Colab で例を試す
with wandb.init() as run:
  # カスタムデータ表をログする
  my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
  run.log(
      {"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
  )

チャートをカスタマイズする

まず新しいカスタムチャートを追加して開始し、その後クエリを編集して表示中のRunsからデータを選択します。クエリでは、GraphQLを使用して、Runs内のconfigsummaryhistoryフィールドからデータを取得します。

GraphQL クエリを作成する

カスタム チャート エディターは、ワークスペースまたは report で選択した run に対して GraphQL クエリを実行します。クエリ エディターで必要なフィールドを追加してください。configsummaryhistorysummaryTablehistoryTable から選択できるため、多くの場合、クエリを最初から記述する必要はありません。 クエリ内の各ソースは、それぞれ異なるログ済みデータに対応しています。
  • Config は、run 設定 の値 (ハイパーパラメーターやその他の設定) を取得します。
  • Summary は、summary の値を取得します。デフォルトでは、wandb.Run.log() でログしたキーの summary には、そのキーに最後に書き込まれた値が保持されます。別の集計方法を使用するには、wandb.Run.define_metric(..., summary=...)"min""max""mean""best""none" のいずれかとともに呼び出します。値を直接設定するには、wandb.Run.summary["key"] = value を代入します。
  • History は、run 履歴からスカラー時系列を取得します (たとえば、各 step における lossaccuracy) 。最後の数値だけでなく曲線全体が必要な場合は、history を使用してください。
  • summaryTable は、run summary から wandb.Table を読み込みます。対象の表が run に単一のスナップショットとして保存されている場合 (たとえば、最後に一度だけログする混同行列) に使用してください。
  • historyTable は、run 履歴から wandb.Table を読み込みます。wandb.Run.log() で表をログするたびに、その表を含む新しい step が run 履歴に追加されます。表が時間とともに変化する場合や、カスタム チャート エディターで step セレクターを有効にしたい場合は、historyTable を使用してください (カスタム チャートで step スライダーを表示するにはどうすればよいですか? を参照してください) 。
summaryTablehistoryTable では、tableKey には wandb.Table 内の列名ではなく、wandb.Run.log() 内で使用した辞書キーを設定してください。 以下の例は、よくあるケースを示しています。
  • 各 step でログした表の列をプロットする場合 (たとえば PR 曲線) : historyTable を追加し、tableKey をログしたキー (たとえば pr_curve) に設定してから、Chart fields で表の列をマッピングします。カスタム チャート チュートリアル を参照してください。
  • summary にある表の列をプロットする場合 (たとえば、複合ヒストグラムのクラス スコア) : summaryTable を追加し、tableKey をそのキーに設定します (チュートリアルでは class_scores を使用しています) 。おまけ: 複合ヒストグラム を参照してください。
  • トレーニング step に対するスカラー メトリクスをプロットする場合: history からそのメトリクスを追加します。summary からのみ追加すると、チャートには run ごとに 1 つの値だけが表示されます。
チャート フィールド名 クエリの実行後、Chart fields には Vega spec にバインドできる列が一覧表示されます。名前は runSets_ で始まることが多く、選択したクエリ フィールドを反映しています。手入力するのではなく、各 ${field:...} プレースホルダーの横にあるドロップダウンから選択してください。 列がまったく表示されない場合は、選択した run にそのキーが存在することを確認し、run ページを開いてデータがどのようにログされたかを確認したうえで、summaryTablehistoryTable のどちらがそのログ パターンに合っているかを確認してください。 カスタム チャートでは、この GraphQL ベースのパネル クエリを使用します。Query panels では別の式言語を使用しており、ドキュメントも分かれています。
カスタム チャートの作成

カスタム可視化

右上の Chart を選択して、デフォルトのプリセットから始めます。次に、Chart fields を選択し、クエリで取得したデータをチャート内の対応するフィールドにマッピングします。 次の画像は、メトリクスを選択し、それを下の棒グラフのフィールドにマッピングする例を示しています。
カスタム棒グラフの作成

Vega の編集方法

パネル上部の Edit をクリックすると、Vega の編集モードに入ります。ここでは、UI 上でインタラクティブなチャートを作成するための Vega specification を定義できます。チャートのあらゆる要素を変更できます。たとえば、タイトルを変更したり、別の配色を選んだり、曲線を連続した線ではなく点の列として表示したりできます。また、Vega の transform を使って値の配列をビニングし、ヒストグラムにするなど、データ自体を変更することもできます。パネルのプレビューはインタラクティブに更新されるため、Vega spec やクエリを編集しながら、変更の効果を確認できます。Vega documentation and tutorials を参照してください。 フィールド参照 W&B からチャートにデータを取り込むには、"${field:<field-name>}" 形式のテンプレート文字列を Vega spec 内の任意の場所に追加します。これにより、右側の Chart Fields 領域にドロップダウンが作成され、Users はそれを使って Vega にマッピングするクエリ結果の列を選択できます。 フィールドのデフォルト値を設定するには、次の構文を使用します: "${field:<field-name>:<placeholder text>}"

チャートプリセットの保存

モーダルの下部にあるボタンを使って、特定の可視化パネルに変更を適用できます。あるいは、Vega spec を保存して、プロジェクト内の別の場所で使用することもできます。再利用可能なチャート定義を保存するには、Vega エディタ上部の 名前を付けて保存 をクリックし、プリセットに名前を付けます。

記事とガイド

  1. W&Bの機械学習可視化IDE
  2. カスタムチャートを使ってNLPのAttentionベースモデルを可視化する
  3. カスタムチャートを使ってAttentionが勾配フローに与える影響を可視化する
  4. 任意の曲線をログする

一般的なユースケース

  • 誤差バー付きの棒グラフをカスタマイズする
  • 独自の x-y 座標が必要なモデルの検証メトリクス (適合率-再現率曲線など) を表示する
  • 2 つの異なるモデル/実験のデータ分布をヒストグラムとして重ねて表示する
  • トレーニング中の複数の時点で取得したスナップショットを使って、メトリクスの変化を表示する
  • W&B ではまだ利用できない独自の可視化を作成する (できればそれを広く共有する)