Try in Colab
wandb.Table
を使って、データをログに記録し W&B で視覚化・クエリできるようにします。このガイドでは次のことを学びます:
テーブルを作成する
Table(テーブル)を定義するには、各データ行に表示したい列を指定します。各行はトレーニングデータセットの単一の項目、トレーニング中の特定のステップやエポック、テスト項目でのモデルの予測、モデルが生成したオブジェクトなどです。各列には固定の型があり、数値、テキスト、ブール値、画像、ビデオ、オーディオなどがあります。あらかじめ型を指定する必要はありません。各列に名前を付け、その型のデータのみをその列のインデックスに渡してください。より詳細な例については、このレポート を参照してください。wandb.Table
コンストラクタを次の2つの方法のいずれかで使用します:
- 行のリスト: 名前付きの列とデータの行をログに記録します。例えば、次のコードスニペットは 2 行 3 列のテーブルを生成します:
- Pandas DataFrame:
wandb.Table(dataframe=my_df)
を使用して DataFrame をログに記録します。列の名前は DataFrame から抽出されます。
既存の配列またはデータフレームから
データを追加する
Tables は可変です。スクリプトが実行中に最大 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 テーブルを作成し、データを追加する方法を示しています。信頼度スコアを含む事前定義された列でテーブルを定義し、推論中に行ごとにデータを追加します。また、run を再開するときにテーブルにデータを段階的に追加することもできます。Run を再開した際にデータを追加
再開した Run において、既存のテーブルをアーティファクトから読み込み、最後のデータ行を取得して、更新されたメトリクスを追加することで W&B テーブルを段階的に更新できます。次に、互換性を保つためにテーブルを再初期化し、更新されたバージョンを W&B に再度ログに記録します。データを取得する
データが Table にあるとき、列または行ごとにアクセスできます:- 行イテレータ: ユーザーは Table の行イテレータを利用して、
for ndx, row in table.iterrows(): ...
のようにデータの行を効率的に反復処理できます。 - 列を取得する: ユーザーは
table.get_column("col_name")
を使用してデータの列を取得できます。convert_to="numpy"
を渡すと、列を NumPy のプリミティブ NDArray に変換できます。これは、列にwandb.Image
などのメディアタイプが含まれている場合に、基になるデータに直接アクセスするのに便利です。
テーブルを保存する
スクリプトでモデルの予測のテーブルなどのデータを生成した後、それを W&B に保存して結果をリアルタイムで視覚化します。Run にテーブルをログする
wandb.log()
を使用してテーブルを Run に保存します:
200,000 行以上をログに記録するには、以下のように制限をオーバーライドできます:
wandb.Table.MAX_ARTIFACT_ROWS = X
ただし、これにより UI でのクエリの速度低下などのパフォーマンス問題が発生する可能性があります。プログラムによるテーブルへのアクセス
バックエンドでは、Tables は Artifacts として保存されています。特定のバージョンにアクセスする場合は、artifact API を使用して行うことができます:テーブルを視覚化する
この方法でログに記録されたテーブルは、Run ページと Project ページの両方でワークスペースに表示されます。詳細については、テーブルの視覚化と分析 を参照してください。アーティファクトテーブル
artifact.add()
を使用して、テーブルをワークスペースの代わりに Run の Artifacts セクションにログします。これは、データセットを1回ログに記録し、今後の Run のために参照したい場合に役立ちます。
artifact.add()
の詳細な例については、この Colab を参照してください: 画像データを使った artifact.add() の詳細な例 また Artifacts と Tables を使ったバージョン管理と重複排除データの例 に関してはこのレポートを参照してください。
アーティファクトテーブルを結合する
wandb.JoinedTable(table_1, table_2, join_key)
を使用して、ローカルに構築したテーブルや他のアーティファクトから取得したテーブルを結合できます。
引数 | 説明 |
---|---|
table_1 | (str, wandb.Table , ArtifactEntry) アーティファクト内の wandb.Table へのパス、テーブルオブジェクト、または ArtifactEntry |
table_2 | (str, wandb.Table , ArtifactEntry) アーティファクト内の wandb.Table へのパス、テーブルオブジェクト、または ArtifactEntry |
join_key | (str, [str, str]) 結合を行うキーまたはキーのリスト |
'original_songs'
という名前のオリジナルの曲のテーブルと 'synth_songs'
という名前の同じ曲の合成バージョンのテーブルを結合する方法を示しています。以下のコード例は 2 つのテーブルを "song_id"
で結合し、結果のテーブルを新しい W&B テーブルとしてアップロードします: