メインコンテンツまでスキップ

Custom Charts

Custom Charts を使用して、現在のデフォルトUIでは実現できないチャートを作成しましょう。任意のテーブルデータをログし、あなたの望むとおりに可視化できます。フォント、色、ツールチップの詳細を Vega のパワーを使って制御できます。

Supported charts from vega.github.io/vega

仕組み

  1. データをログする: あなたのスクリプトから、通常W&Bを使用して実行する際と同じように config データとサマリーデータをログします。特定の時点でログされた複数の値のリストを可視化するには、カスタム wandb.Table を使用します。
  2. チャートをカスタマイズする: このログデータを GraphQL クエリで取り込みます。クエリの結果を Vega で可視化します。Vegaは強力な可視化文法です。
  3. チャートをログする: スクリプトから wandb.plot_table() を呼び出して、プリセットを使用します。

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

組み込みプリセット

これらのプリセットには組み込みの wandb.plot メソッドがあり、スクリプトから直接チャートをログし、探している正確なビジュアライゼーションをUIで素早く確認できます。

wandb.plot.line()

カスタムラインプロットをログします—任意の軸xとy上の接続された順序付きポイント(x,y)のリスト。

data = [[x, y] for (x, y) in zip(x_values, y_values)]
table = wandb.Table(data=data, columns=["x", "y"])
wandb.log(
{
"my_custom_plot_id": wandb.plot.line(
table, "x", "y", title="Custom Y vs X Line Plot"
)
}
)

任意の2次元のカーブをログするために使用できます。リストの値をプロットする場合、リストの値の数が正確に一致する必要があります(つまり、各ポイントにはxとyが必要です)。

アプリ内で確認 →

コードを実行 →

カスタムプリセット

組み込みプリセットを調整したり、新しいプリセットを作成したりしてから、チャートを保存します。チャートIDを使用して、スクリプトからそのカスタムプリセットに直接データをログします。

# プロットするための列を含むテーブルを作成
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.config にキーとしてログされた名前付きフィールドが含まれます(例: wandb.config.learning_rate = 0.0001
  • Summary: トレーニング中にログされた単一の値(結果または従属変数)、例: wandb.log({"val_acc" : 0.8})。トレーニング中に wandb.log() を使用してこのキーに複数回書き込むと、サマリーはそのキーの最終値に設定されます。
  • History: ログされたスカラーの完全な時系列は history フィールドを通じてクエリ可能
  • summaryTable: 複数の値をログする必要がある場合は、 wandb.Table() を使用してデータを保存し、カスタムパネルでクエリ
  • historyTable: 履歴データを表示する必要がある場合はカスタムチャートパネルで historyTable をクエリ。 wandb.Table() を呼び出すかカスタムチャートをログするたびに、そのステップ用の新しいテーブルが履歴に作成されます。

カスタムテーブルをログする方法

wandb.Table() を使用してデータを二次元配列としてログします。通常、このテーブルの各行は1つのデータポイントを表し、各列はプロットしたい各データポイントの関連フィールド/次元を示します。カスタムパネルを構成するとき、そのテーブル全体は wandb.log() に渡される名前付きキー(以下の "custom_data_table")を介してアクセスでき、個別のフィールドは列名("x"、"y"、"z")を介してアクセス可能です。実験中の複数のタイムステップでテーブルをログできます。各テーブルの最大サイズは10,000行です。

Google Colabで試してみる →

# カスタムデータのテーブルをログ
my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
wandb.log(
{"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
)

チャートのカスタマイズ

まず新しいカスタムチャートを追加し、次にクエリを編集して可視化するRunsからデータを選択します。クエリは GraphQL を使用して、Runsのconfig、summary、およびhistoryフィールドからデータを取得します。

新しいカスタムチャートを追加し、次にクエリを編集

カスタムビジュアライゼーション

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

プロジェクト内のRunsの精度を示すカスタム棒グラフの作成

Vegaの編集方法

パネル上部の Edit をクリックして Vega 編集モードに入ります。ここで、Vega仕様を定義してインタラクティブなチャートを作成できます。Vega specification は、チャートの視覚スタイル(例: タイトル変更、別のカラースキームの選択、ポイントとして曲線を表示するなど)、およびデータ自体を変更するために使用できます(Vega変換を使用して値の配列をヒストグラムにビン分けするなど)。パネルプレビューはインタラクティブに更新されるため、Vega仕様やクエリを編集する際の変更の影響をリアルタイムで確認できます。Vega documentation and tutorials はインスピレーションの素晴らしい源です。

フィールドリファレンス

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

よくある質問

近日登場

  • ポーリング: チャート内のデータを自動更新
  • サンプリング: 効率を高めるために、パネルに読み込むポイントの総数を動的に調整

気を付ける点

  • チャートを編集しているときに、期待しているデータがクエリに表示されない場合は、選択したRunsに列がログされていない可能性があります。チャートを保存してRunsテーブルに戻り、 アイコンで可視化したいRunsを選択します。

カスタムチャートで「ステップスライダー」を表示する方法は?

これはカスタムチャートエディタの「その他の設定」ページで有効にできます。クエリを summaryTable の代わりに historyTable を使用するように変更すると、カスタムチャートエディタで「ステップセレクタを表示」のオプションが表示されます。これにより、ステップを選択できるスライダーが提供されます。

カスタムチャートプリセットを削除する方法は?

カスタムチャートエディタに入ります。次に現在選択されているチャートタイプをクリックすると、すべてのプリセットが表示されるメニューが開きます。削除したいプリセットにマウスをホバーし、ゴミ箱アイコンをクリックします。

共通のユースケース

Was this page helpful?👍👎