Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-weave-caching.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
W&B プロジェクトでカスタムチャートを作成しましょう。任意のデータテーブルをログに記録し、思い通りの方法で可視化できます。 Vega のパワーを活用して、フォント、色、ツールチップなどの詳細を制御できます。
仕組み
- データのログ記録: スクリプトから config とサマリーデータをログに記録します。
- チャートのカスタマイズ: GraphQL クエリを使用して、ログに記録されたデータを抽出します。強力な可視化文法である Vega を使用して、クエリの結果を可視化します。
- チャートのログ記録: スクリプトから
wandb.plot_table() を使用して、独自のプリセットを呼び出します。
期待されるデータが表示されない場合は、探している列が選択した Runs でログに記録されていない可能性があります。チャートを保存して Runs テーブルに戻り、目 のアイコンを使用して選択された Runs を確認してください。
スクリプトからチャートをログに記録する
組込みプリセット
W&B には、スクリプトから直接ログに記録できる多数の組込みチャートプリセットがあります。これらには、折れ線グラフ、散布図、棒グラフ、ヒストグラム、PR曲線、ROC曲線が含まれます。
折れ線グラフ
散布図
棒グラフ
ヒストグラム
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 が必要です)。Reports の例を見る または Google Colabノートブックの例を試す。wandb.plot.scatter()カスタムの散布図(任意の軸ペア x と y 上の点 (x, y) のリスト)をログに記録します。with wandb.init() as run:
# 予測スコアからデータのリストを作成
data = [[x, y] for (x, y) in zip(class_x_prediction_scores, class_y_prediction_scores)]
table = wandb.Table(data=data, columns=["class_x", "class_y"])
run.log({"my_custom_id": wandb.plot.scatter(table, "class_x", "class_y")})
これを使用して、任意の2つの次元の散布図をログに記録できます。2つの値のリストを互いにプロットする場合、リスト内の値の数は正確に一致している必要があることに注意してください(例えば、各点に x と y が必要です)。Reports の例を見る または Google Colabノートブックの例を試す。wandb.plot.bar()カスタムの棒グラフ(ラベル付きの値のリストを棒として表示)を数行でネイティブにログに記録します:with wandb.init() as run:
# ラベルと値からデータのリストを作成
data = [[label, val] for (label, val) in zip(labels, values)]
table = wandb.Table(data=data, columns=["label", "value"])
run.log(
{
"my_bar_chart_id": wandb.plot.bar(
table, "label", "value", title="Custom Bar Chart"
)
}
)
これを使用して、任意の棒グラフをログに記録できます。リスト内のラベルと値の数は正確に一致している必要があることに注意してください(例えば、各データポイントに両方が必要です)。Reports の例を見る または Google Colabノートブックの例を試す。wandb.plot.histogram()カスタムのヒストグラム(値のリストを出現回数/頻度によってビンに分類)を数行でネイティブにログに記録します。例えば、予測信頼度スコア (scores) のリストがあり、その分布を可視化したいとします:with wandb.init() as run:
# スコアからデータのリストを作成
data = [[s] for s in scores]
table = wandb.Table(data=data, columns=["scores"])
run.log({"my_histogram": wandb.plot.histogram(table, "scores", title=None)})
これを使用して、任意のヒストグラムをログに記録できます。 data は、行と列の2次元配列をサポートすることを目的としたリストのリストであることに注意してください。Reports の例を見る または Google Colabノートブックの例を試す。wandb.plot.pr_curve()1行で PR曲線 を作成します:with wandb.init() as run:
# 正解ラベルと予測スコアからPR曲線を作成
plot = wandb.plot.pr_curve(ground_truth, predictions, labels=None, classes_to_plot=None)
run.log({"pr": plot})
コードが以下にアクセスできる場合に、これをログに記録できます:
- 一連の例に対するモデルの予測スコア (
predictions)
- それらの例に対応する正解(ground truth)ラベル (
ground_truth)
- (オプション) ラベル/クラス名のリスト (例:
labels=["cat", "dog", "bird"...])
- (オプション) プロットで可視化するラベルのサブセット (リスト形式)
Reports の例を見る または Google Colabノートブックの例を試す。wandb.plot.roc_curve()1行で ROC曲線 を作成します:with wandb.init() as run:
# ground_truth は真のラベルのリスト、predictions は予測スコアのリスト
ground_truth = [0, 1, 0, 1, 0, 1]
predictions = [0.1, 0.4, 0.35, 0.8, 0.7, 0.9]
# ROC曲線プロットを作成
# labels はオプションのクラス名リスト、classes_to_plot は可視化するラベルのオプションのサブセット
plot = wandb.plot.roc_curve(
ground_truth, predictions, labels=None, classes_to_plot=None
)
run.log({"roc": plot})
コードが以下にアクセスできる場合に、これをログに記録できます:
- 一連の例に対するモデルの予測スコア (
predictions)
- それらの例に対応する正解(ground truth)ラベル (
ground_truth)
- (オプション) ラベル/ クラス名のリスト (例:
labels=["cat", "dog", "bird"...])
- (オプション) プロットで可視化するこれらのラベルのサブセット (リスト形式)
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,
)
データのログ記録
スクリプトから以下のデータ型をログに記録し、カスタムチャートで使用できます:
- 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 フィールドからデータを取得します。
カスタム可視化
右上隅の Chart を選択して、デフォルトのプリセットから開始します。次に、Chart fields を選択して、クエリから取得したデータをチャートの対応するフィールドにマッピングします。
次の画像は、メトリクスを選択し、それを下の棒グラフのフィールドにマッピングする例を示しています。
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 をクリックし、プリセットに名前を付けます。
記事とガイド
- The W&B Machine Learning Visualization IDE
- Visualizing NLP Attention Based Models
- Visualizing The Effect of Attention on Gradient Flow
- Logging arbitrary curves
一般的なユースケース
- 誤差範囲付きの棒グラフのカスタマイズ
- カスタムの x-y 座標を必要とするモデル検証メトリクスの表示(PR曲線など)
- 2つの異なるモデル/実験からのデータ分布をヒストグラムとして重ね合わせる
- トレーニング中の複数のポイントでのスナップショットを介したメトリクスの変化の表示
- W&B でまだ利用可能でない独自の可視化の作成(そして、それを世界と共有することを願っています)