wandb.Table を使用してデータをログすると、W&B でデータを可視化およびクエリできます。このガイドでは、次の方法について説明します。
表を作成する
表を定義するには、データの各行に表示したい列を指定します。各行には、トレーニングデータセット内の 1 つの項目、トレーニング中の特定のステップやエポック、テスト項目に対するモデルの予測、モデルが生成したオブジェクトなどが該当します。各列には、数値、テキスト、ブール値、画像、動画、オーディオなどの固定のタイプがあります。タイプを事前に指定する必要はありません。各列に名前を付け、その列インデックスにはそのタイプのデータのみを渡すようにしてください。より詳しい例については、W&B 表ガイドを参照してください。wandb.Table コンストラクターは、次の 2 つのいずれかの方法で使用します。
-
行のリスト:
名前付きの列とデータ行をログします。たとえば、次のコードスニペットは 2 行 3 列の表を生成します。
-
Pandas データフレーム:
wandb.Table(dataframe=my_df)を使用してデータフレームをログします。列名はデータフレームから抽出されます。
既存の配列またはデータフレームから作成する
データを追加する
表はミュータブルです。スクリプトの実行中に、最大 200,000 行まで表にデータを追加できます。表にデータを追加する方法は 2 つあります。- 行を追加する:
table.add_data("3a", "3b", "3c")。新しい行はリストとして渡さない点に注意してください。行がリスト形式の場合は、スター記法*を使用してリストを位置引数に展開します (例:table.add_data(*my_row_list)) 。行のエントリ数は、表の列数と一致している必要があります。 - 列を追加する:
table.add_column(name="col_name", data=col_data)。col_dataの長さは、表の現在の行数と一致している必要があります。col_dataには、リストデータまたは NumPy NDArray を指定できます。
データを段階的に追加する
このコードサンプルでは、W&B の表を作成し、データを段階的に追加していく方法を示します。考えられるすべてのラベルの信頼度スコアを含む列をあらかじめ定義して表を作成し、推論中にデータを 1 行ずつ追加します。また、run を再開する際に表へデータを段階的に追加することもできます。再開した run へのデータの追加
再開した run では、アーティファクトから既存の表を読み込み、データの最終行を取得して、更新したメトリクスを追加することで、W&B の表を段階的に更新できます。その後、互換性を確保するために表を再初期化し、更新したバージョンを W&B にログします。データを取得する
表 に格納したデータには、列単位または行単位でアクセスできます。- 行イテレーター:
for ndx, row in table.iterrows(): ...のように 表 の行イテレーターを使用すると、データの行を効率的に反復処理できます。 - 列を取得する:
table.get_column("col_name")を使用して、データの列を取得します。また、convert_to="numpy"を渡すと、列をプリミティブ値の NumPy NDArray に簡単に変換できます。列にwandb.Imageなどのメディアタイプが含まれている場合は、この方法で基になるデータに直接アクセスできます。
表を保存する
スクリプトでデータの表 (モデルの予測結果の表など) を生成したら、W&B に保存すると結果をリアルタイムで可視化できます。表を run にログする
次のようにwandb.Run.log() を使用して、表を run に保存します。
200,000 行を超えてログするには、次のように制限を上書きできます。
wandb.Table.MAX_ARTIFACT_ROWS = Xただし、UI でクエリが遅くなるなど、パフォーマンスの問題が発生する可能性が高くなります。プログラムから表にアクセスする
バックエンドでは、表 はアーティファクトとして保存されます。特定のバージョンにアクセスするには、アーティファクト API を使用します。表を可視化する
この方法でログした表は、Workspace の Run page と Project page の両方に表示されます。詳細については、表を可視化して分析するを参照してください。アーティファクトの表
artifact.add() を使用すると、表を Workspace ではなく run の アーティファクト セクションにログできます。これは、一度だけログして以降の run で参照したいデータセットがある場合に便利です。
アーティファクトの表を結合する
ローカルで作成した表や、他のアーティファクトから取得した表は、wandb.JoinedTable(table_1, table_2, join_key) を使用して結合できます。
アーティファクトのコンテキストで以前にログした 2 つの表を結合するには、それらをアーティファクトから取得し、結合した結果を新しい表にします。
たとえば次のコード例では、元の楽曲を収めた
'original_songs' という表と、同じ楽曲の合成バージョンを収めた 'synth_songs' という表を読み込みます。2 つの表を "song_id" で結合し、その結果を新しい W&B 表 としてアップロードします。