メインコンテンツへスキップ
W&B プロジェクトでカスタムチャートを作成しましょう。任意のデータテーブルをログに記録し、思い通りの方法で可視化できます。 Vega のパワーを活用して、フォント、色、ツールチップなどの詳細を制御できます。
Supported charts from vega.github.io/vega

仕組み

  1. データのログ記録: スクリプトから config とサマリーデータをログに記録します。
  2. チャートのカスタマイズ: GraphQL クエリを使用して、ログに記録されたデータを抽出します。強力な可視化文法である Vega を使用して、クエリの結果を可視化します。
  3. チャートのログ記録: スクリプトから wandb.plot_table() を使用して、独自のプリセットを呼び出します。
PR and ROC curves
期待されるデータが表示されない場合は、探している列が選択した Runs でログに記録されていない可能性があります。チャートを保存して Runs テーブルに戻り、 のアイコンを使用して選択された Runs を確認してください。

スクリプトからチャートをログに記録する

組込みプリセット

W&B には、スクリプトから直接ログに記録できる多数の組込みチャートプリセットがあります。これらには、折れ線グラフ、散布図、棒グラフ、ヒストグラム、PR曲線、ROC曲線が含まれます。
wandb.plot.line()カスタムの折れ線グラフ(任意の軸 x と y 上の、連結され順序付けられた点 (x,y) のリスト)をログに記録します。
with wandb.init() as run:
  # x_values と y_values からデータのリストを作成
  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 が必要です)。
Custom line plot
Reports の例を見る または 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,
)
Custom chart presets

データのログ記録

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

カスタムテーブルのログ記録方法

wandb.Table() を使用して、データを2次元配列としてログに記録します。通常、このテーブルの各行は1つのデータポイントを表し、各列はプロットしたい各データポイントの関連フィールド/次元を表します。カスタムパネルを設定すると、wandb.Run.log() に渡された名前付きキー(下の例では custom_data_table)を介してテーブル全体にアクセスでき、列名(x, y, z)を介して個々のフィールドにアクセスできます。実験中の複数のタイムステップでテーブルをログに記録できます。各テーブルの最大サイズは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 の config、summary、history フィールドからデータを取得します。
Custom chart creation

カスタム可視化

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

Vega の編集方法

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

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

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

記事とガイド

  1. The W&B Machine Learning Visualization IDE
  2. Visualizing NLP Attention Based Models
  3. Visualizing The Effect of Attention on Gradient Flow
  4. Logging arbitrary curves

一般的なユースケース

  • 誤差範囲付きの棒グラフのカスタマイズ
  • カスタムの x-y 座標を必要とするモデル検証メトリクスの表示(PR曲線など)
  • 2つの異なるモデル/実験からのデータ分布をヒストグラムとして重ね合わせる
  • トレーニング中の複数のポイントでのスナップショットを介したメトリクスの変化の表示
  • W&B でまだ利用可能でない独自の可視化の作成(そして、それを世界と共有することを願っています)