テーブル
データセットを繰り返し、モデルの予測を理解する
W&B Tables を使用して、表形式のデータを視覚化し、クエリを実行します。 例:
- 同じテストセットで異なるモデルがどのように機能するかを比較する
- データのパターンを特定する
- サンプルモデルの予測を視覚的に確認する
- よく誤分類される例を見つけるためにクエリを実行する
上の画像は、セマンティックセグメンテーションとカスタムメトリクスを含むテーブルを示しています。このテーブルはこちらの W&B ML Course のサンプルプロジェクト で見ることができます。
仕組み
Table は、各列が単一のデータ型を持つデータの 2 次元グリッドです。Tables はプリミティブ型と数値型、さらに入れ子リスト、辞書、およびリッチメディア型をサポートします。
Table をログする
数行のコードでテーブルをログします:
import wandb
run = wandb.init(project="table-test")
my_table = wandb.Table(columns=["a", "b"], data=[["a1", "b1"], ["a2", "b2"]])
run.log({"Table Name": my_table})
開始方法
1 - チュートリアル: テーブルをログして、データを視覚化し、クエリする方法
W&B Tables を 5 分で始めるクイックスタートで使い方を確認しましょう。
The following クイックスタート では、データ テーブルをログし、データを視覚化し、データをクエリする方法を示します。
以下のボタンを選択して、PyTorch クイックスタートの MNIST データの例のプロジェクト を試してください。
1. テーブルをログする
W&B を使用してテーブルをログします。新しいテーブルを作成するか、Pandas の Dataframe を渡すことができます。
-
-
新しい Table を作成してログするには、次を使用します:
例はこちらです:
import wandb
run = wandb.init(project="table-test")
# 新しいテーブルを作成してログします。
my_table = wandb.Table(columns=["a", "b"], data=[["a1", "b1"], ["a2", "b2"]])
run.log({"Table Name": my_table})
Pandas Dataframe を wandb.Table()
に渡して、新しいテーブルを作成します。
import wandb
import pandas as pd
df = pd.read_csv("my_data.csv")
run = wandb.init(project="df-table")
my_table = wandb.Table(dataframe=df)
wandb.log({"Table Name": my_table})
サポートされているデータ型の詳細については、W&B API リファレンス ガイドの wandb.Table
を参照してください。
2. プロジェクトワークスペースでテーブルを視覚化する
ワークスペースで結果のテーブルを表示します。
- W&B アプリでプロジェクトに移動します。
- プロジェクト ワークスペースで run の名前を選択します。それぞれのユニークなテーブル キーに対して新しいパネルが追加されます。
この例では、my_table
がキー "Table Name"
の下にログされています。
3. モデル バージョン を比較する
複数の W&B Runs のサンプル テーブルをログし、プロジェクト ワークスペースで結果を比較します。この 例のワークスペース では、複数の異なるバージョンから同じテーブルに行を結合する方法を示しています。
モデルの結果を探索し評価するためにテーブルのフィルタ、ソート、グループ化の機能を使用してください。
2 - テーブルを視覚化して分析する
W&B テーブルを視覚化して分析する。
W&B Tables をカスタマイズして、機械学習モデルの性能に関する質問に答え、データを分析するなどの操作を行いましょう。
データを対話的に探索して、以下のことができます。
- モデル、エポック、または個々の例を精密に比較
- データ内の高次のパターンを理解
- ビジュアルサンプルで洞察をキャプチャして伝える
W&B Tables には以下の振る舞いがあります:
- アーティファクトコンテキストでのステートレス性: アーティファクトバージョンと共にログされたテーブルは、ブラウザウィンドウを閉じるとデフォルト状態にリセットされます。
- ワークスペースまたはレポートコンテキストでのステートフル性: シングルrunのワークスペース、マルチrunプロジェクトワークスペース、またはレポート内でテーブルに加えた変更は永続化されます。
現在の W&B Table ビューを保存する方法については、ビューを保存するを参照してください。
2つのテーブルを表示する方法
マージされたビューまたは並列ビューで2つのテーブルを比較します。以下の画像は、MNISTデータのテーブル比較を示しています。
2つのテーブルを比較する手順:
- W&B Appでプロジェクトに移動します。
- 左のパネルでアーティファクトのアイコンを選択します。
- アーティファクトバージョンを選択します。
以下の画像では、5 エポック後の各MNIST検証データにおけるモデルの予測を示しています(対話型の例はこちらを参照)。
- サイドバー内で比較したい2つ目のアーティファクトバージョンにカーソルを合わせ、表示されたらCompareをクリックします。例えば、以下の画像では、同じモデルによる5 エポック後のMNIST予測と比較するために「v4」とラベル付けされたバージョンを選択しています。
マージされたビュー
最初は、両方のテーブルが一緒にマージされた状態が表示されます。選択した最初のテーブルはインデックス0で青色のハイライトがあり、2つ目のテーブルはインデックス1で黄色のハイライトがあります。ここでマージされたテーブルのライブ例を表示することができます。
マージされたビューから、以下の操作を行うことができます。
- 結合キーを選択: 左上のドロップダウンを使って、2つのテーブルに対する結合キーとして使用する列を設定します。通常、これは各行の一意の識別子であり、データセット内の特定の例のファイル名や生成されたサンプルのインクリメントインデックスなどです。任意の 列を選択することもできますが、これにより判読不可能なテーブルや遅いクエリが発生する可能性があります。
- 結合の代わりに連結: このドロップダウンで「すべてのテーブルを連結する」を選択して、両方のテーブルのすべての行を1つの大きなテーブルに_結合して_ 列を横断するようにします。
- 各テーブルを明示的に参照: フィルター式で0、1、*を使用して、1つまたは両方のテーブルインスタンスの列を明示的に指定します。
- ヒストグラムとして詳細な数値差分を可視化: 任意のセルの値を一目で比較します。
並列ビュー
2つのテーブルを並べて表示するには、最初のドロップダウンを「Merge Tables: Table」から「List of: Table」に変更し、「Page size」をそれに応じて更新します。ここで選択された最初のテーブルは左側にあり、2つ目のテーブルは右側にあります。さらに、「Vertical」チェックボックスをクリックして、これらのテーブルを縦に比較することもできます。
- テーブルを一目で比較: 両方のテーブルに一緒に操作(並べ替え、フィルター、グループ化)を適用し、すばやく変更や違いを特定できます。たとえば、誤った予測を予測値ごとにグループ化したり、最も難しいネガティブを、真のラベルごとの信頼度スコア分布などを表示できます。
- 2つのテーブルを独立して探索: 関心のあるサイド/行をスクロールしてフォーカスします。
アーティファクトを比較
テーブルを時間で比較したり、モデルバリアントを比較することもできます。
テーブルを時間で比較
各トレーニングの意味のあるステップに対してアーティファクトにテーブルを記録し、トレーニング時間を通じてモデルの性能を分析します。たとえば、各検証ステップの終了時、毎50エポックのトレーニング後、またはパイプラインに意味を持つ任意の頻度でテーブルを記録できます。モデル予測の変更を可視化するために、並列ビューを使用します。
トレーニング時間を通じて予測を可視化するより詳細なウォークスルーについては、このレポートおよびこの対話型ノートブックの例を参照してください。
モデルバリアントを超えてテーブルを比較
2つの異なるモデルで同じステップでログされた2つのアーティファクトバージョンを比較して、異なる設定(ハイパーパラメーター、基本アーキテクチャーなど)全体でのモデル性能を分析します。
たとえば、baseline
と新しいモデルバリアント2x_layers_2x_lr
の予測を比較します。この場合、最初の畳み込み層が32から64に、2番目が128から256に、学習率が0.001から0.002に倍増します。このライブ例から、並列ビューを使用して、1エポック後(左タブ)と5エポック後(右タブ)の誤った予測にフィルターをかけます。
-
-
ビューを保存
runワークスペース、プロジェクトワークスペース、またはレポート内で操作したテーブルは、ビュー状態を自動的に保存します。テーブル操作を適用し、その後ブラウザを閉じても、次にテーブルに戻ったときに最後に表示された設定が保持されます。
アーティファクトコンテキストで操作したテーブルはステートレスのままです。
特定の状態でワークスペースからテーブルを保存するには、W&B Report にエクスポートします。レポートにテーブルをエクスポートするには:
- ワークスペースの可視化パネルの右上隅にあるケバブアイコン(縦に並んだ3つの点)を選択します。
- Share panel または Add to report を選択します。
例
これらのレポートは、W&B Tables のさまざまなユースケースを強調しています:
3 - テーブル データをエクスポート
テーブルからデータをエクスポートする方法。
すべての W&B Artifacts 同様に、Tables は pandas データフレームに変換して、データのエクスポートを簡単に行うことができます。
table
を artifact
に変換する
まず、テーブルをアーティファクトに変換する必要があります。これを行う最も簡単な方法は artifact.get(table, "table_name")
を使用することです:
# 新しいテーブルを作成してログします。
with wandb.init() as r:
artifact = wandb.Artifact("my_dataset", type="dataset")
table = wandb.Table(
columns=["a", "b", "c"], data=[(i, i * 2, 2**i) for i in range(10)]
)
artifact.add(table, "my_table")
wandb.log_artifact(artifact)
# 作成したアーティファクトを使用してテーブルを取得します。
with wandb.init() as r:
artifact = r.use_artifact("my_dataset:latest")
table = artifact.get("my_table")
artifact
をデータフレームに変換する
次に、テーブルをデータフレームに変換します:
# 前のコード例から続けて:
df = table.get_dataframe()
データをエクスポート
現在、データフレームがサポートする任意のメソッドを使用してエクスポートできます:
# テーブルデータを .csv に変換
df.to_csv("example.csv", encoding="utf-8")
次のステップ
4 - 例 テーブル
W&B テーブル の例
以下のセクションでは、テーブルの使用方法の一部を紹介します。
データを表示する
モデルのトレーニングまたは評価中にメトリクスやリッチメディアをログに記録し、それをクラウドに同期された永続的なデータベース、またはホスティングインスタンスで結果を視覚化します。
たとえば、このテーブルをご覧ください。写真データセットのバランスの取れた分割を示しています。
データを対話的に探索する
テーブルを表示、ソート、フィルタ、グループ化、結合、クエリして、データとモデルのパフォーマンスを理解します。静的ファイルを閲覧したり、分析スクリプトを再実行する必要はありません。
たとえば、このレポートをご覧ください。スタイルが転送されたオーディオについて。
モデルバージョンを比較する
異なるトレーニングエポック、データセット、ハイパーパラメーターの選択、モデルアーキテクチャーなど、さまざまな結果を迅速に比較します。
たとえば、このテーブルを確認してください。同じテスト画像で2つのモデルを比較しています。
すべての詳細を追跡し、大局を把握する
特定のステップでの特定の予測を視覚化するためにズームインします。ズームアウトして集計統計を確認し、エラーのパターンを識別し、改善の機会を理解します。このツールは、単一のモデルトレーニングからのステップを比較したり、異なるモデルバージョンの結果を比較するために使用されます。
たとえば、1回とその後5回のエポック後のMNISTデータセットでの結果を分析する例のテーブルをご覧ください。
W&B Tablesを使用したプロジェクトの例
以下では、W&B Tablesを使用した実際のW&Bプロジェクトの例を紹介します。
画像分類
このレポートを読み、このcolabに従うか、このアーティファクトコンテキストを探り、CNNがiNaturalistの写真から10種類の生物(植物、鳥、昆虫など)を識別する方法を見てみてください。
オーディオ
ティンバー転送に関するこのレポートでオーディオテーブルと対話します。録音されたクジラの歌と同じメロディをバイオリンやトランペットのような楽器で合成したバージョンを比較できます。このcolabで自分の曲を録音し、その合成バージョンをW&Bで探索することもできます。
テキスト
トレーニングデータや生成された出力からテキストサンプルを閲覧し、関連するフィールドで動的にグループ化し、モデルバリエーションや実験設定に合わせて評価を整えます。Markdownとしてテキストをレンダリングするか、ビジュアル差分モードを使用してテキストを比較します。このレポートでシェイクスピアを生成するためのシンプルな文字ベースのRNNを探ります。
ビデオ
モデルを理解するためにトレーニング中にログに記録されたビデオを閲覧および集約します。ここに、RLエージェントが副作用を最小化しようとするためのSafeLife ベンチマークを使用した初期の例があります。
表形式データ
バージョン管理とデータの重複排除を使用して表形式データを分割および前処理する方法に関するレポートを参照してください。
モデルバリエーションの比較(セマンティックセグメンテーション)
セマンティックセグメンテーションのためのTablesをログに記録し、さまざまなモデルを比較する対話型ノートブックとライブ例です。このTableで自分のクエリを試してみてください。
トレーニング時間の改善を分析する
予測を時間にわたって視覚化する方法についての詳細なレポートと、付随する対話型ノートブックです。