Try in ColabDocumentation 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.
wandb.Table を使用してデータをログに記録し、W&B で可視化やクエリを実行します。このガイドでは、以下の方法について説明します。
テーブルの作成
Table を定義するには、データの各行に対して表示したい列を指定します。各行は、トレーニングデータセット内の単一のアイテム、トレーニング中の特定のステップやエポック、テストアイテムに対するモデルの予測、モデルによって生成されたオブジェクトなどになります。各列には、数値、テキスト、ブール値、画像、ビデオ、オーディオなどの固定タイプがあります。事前にタイプを指定する必要はありません。各列に名前を付け、その列のインデックスにはそのタイプのデータのみを渡すようにしてください。より詳細な例については、W&B Tables ガイド を参照してください。wandb.Table コンストラクタは、次の 2 つの方法のいずれかで使用します。
-
行のリスト:
名前付きの列とデータの行をログに記録します。例えば、次のコードスニペットは 2 行 3 列のテーブルを生成します。
-
Pandas DataFrame:
wandb.Table(dataframe=my_df)を使用して DataFrame をログに記録します。列名は DataFrame から抽出されます。
既存の配列または DataFrame から作成
データの追加
テーブルは可変(mutable)です。スクリプトの実行に合わせて、最大 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 へのデータの追加
再開された Runs において、Artifact から既存のテーブルを読み込み、データの最後の行を取得して、更新されたメトリクスを追加することで、W&B テーブルを逐次的に更新できます。その後、互換性を確保するためにテーブルを再初期化し、更新されたバージョンを W&B に再度ログ出力します。データの取得
データが Table に入ったら、列または行でアクセスできます。- 行イテレータ: ユーザーは、
for ndx, row in table.iterrows(): ...のような Table の行イテレータを使用して、データの行を効率的に反復処理できます。 - 列の取得: ユーザーは、
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 でのクエリの低速化など、パフォーマンスの問題が発生する可能性があります。プログラムによるテーブルへのアクセス
バックエンドでは、Tables は Artifacts として永続化されます。特定のバージョンにアクセスしたい場合は、Artifact API を使用して行うことができます。テーブルの可視化
この方法でログに記録されたテーブルは、Run ページと Project ページの両方の Workspace に表示されます。詳細については、テーブルの可視化と分析 を参照してください。Artifact テーブル
Workspace ではなく、run の Artifacts セクションにテーブルをログ出力するには、artifact.add() を使用します。これは、一度ログに記録して将来の Runs で参照したいデータセットがある場合に便利です。
artifact.add() の詳細な例についてはこの Colab を、Artifacts と Tables を使用してテーブルデータのバージョン管理と重複排除を行う方法の例についてはこのレポートを参照してください。
Artifact テーブルの結合(Join)
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 Table としてアップロードします。