メインコンテンツへスキップ
カスタムチャートを使用すると、パネルに読み込むデータとその可視化を制御できます。

1. データを W&B にログする

まず、スクリプト内でデータをログします。ハイパーパラメーターのように、トレーニング開始時に一度だけ設定する単一の値には wandb.Run.config を使用します。時間の経過に伴って記録する複数の値には wandb.Run.log() を使用し、カスタムの 2D 配列は wandb.Table() でログします。ログする各キーについて、データポイントは最大 10,000 件までにすることを推奨します。
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"])}
  )
データテーブルをログする簡単なサンプルノートブックをお試しください。次のstepでは、カスタムチャートを設定します。作成されたチャートがどのように表示されるかは、ライブレポートで確認できます。

2. クエリを作成する

可視化するデータをログしたら、プロジェクトページに移動し、+ ボタンをクリックして新しいパネルを追加し、Custom Chart を選択します。ワークスペースを開きながら進めることもできます。
空のカスタムチャート

クエリを追加する

  1. summary をクリックし、historyTable を選択して、run の履歴からデータを取得する新しいクエリを設定します。
  2. wandb.Table() をログしたキーを入力します。上記のコードスニペットでは my_custom_table です。サンプルノートブック では、キーは pr_curveroc_curve です。

Vega フィールドを設定する

クエリがこれらの列に読み込まれると、Vega フィールドのドロップダウンメニューで選択できるようになります。
クエリ結果から列を取り込み、Vega フィールドを設定する
  • x-axis: runSets_historyTable_r (再現率)
  • y-axis: runSets_historyTable_p (適合率)
  • color: runSets_historyTable_c (クラスラベル)

3. チャートをカスタマイズする

かなり見栄えがよくなってきましたが、散布図ではなく折れ線グラフに切り替えてみます。この組み込みチャートの Vega spec を変更するには、Edit をクリックします。ワークスペース を見ながら進めてください。
カスタムチャートの選択
可視化をカスタマイズするため、Vega spec を次のように更新しました。
  • プロット、凡例、x軸、y軸にタイトルを追加する (各フィールドの title を設定)
  • mark の値を point から line に変更する
  • 未使用の size フィールドを削除する
PR曲線のVega spec
これをこのプロジェクト内の別の場所でも使えるプリセットとして保存するには、ページ上部の Save as をクリックします。結果は次のようになります。ROC 曲線もあわせて表示しています。
PR曲線のチャート

おまけ: 複合ヒストグラム

ヒストグラムは数値の分布を可視化し、大規模なデータセットの理解に役立ちます。複合ヒストグラムでは、同じビンに複数の分布を重ねて表示できるため、異なるモデル間や、1つのモデル内の異なるクラス間で、2つ以上のメトリクスを比較できます。たとえば、運転シーン内の物体を検出するセマンティックセグメンテーションモデルでは、accuracy の最適化と intersection over union (IOU) の最適化の効果を比較したり、異なるモデルが車 (データ中で大きく頻出する領域) と交通標識 (はるかに小さく、あまり出現しない領域) をどの程度うまく検出できるかを確認したりできます。デモ Colabでは、生物の10クラスのうち2クラスについて、信頼度スコアを比較できます。
複合ヒストグラム
独自のカスタム複合ヒストグラムパネルを作成するには、次の手順に従います。
  1. Workspace または Report で新しい Custom Chart パネルを作成します (「Custom Chart」可視化を追加します) 。右上の「Edit」ボタンをクリックすると、任意の組み込みパネルタイプをベースに Vega spec を編集できます。
  2. その組み込みの Vega spec を、私の Vega による複合ヒストグラム用 MVP コード に置き換えます。メインタイトル、軸タイトル、入力ドメイン、そのほかの詳細は、この Vega spec を Vega 構文を使って 直接変更できます (colors を変えたり、3つ目のヒストグラムを追加したりすることもできます :)) 。
  3. 右側のクエリを編集して、wandb のログから正しいデータを読み込みます。summaryTable フィールドを追加し、対応する tableKeyclass_scores に設定して、run によってログされた wandb.Table を取得します。これにより、class_scores としてログされた wandb.Table の列を使って、ドロップダウンメニューから2つのヒストグラムのビンセット (red_binsblue_bins) を設定できるようになります。私の例では、赤のビンに animal クラスの予測スコア、青のビンに plant を選びました。
  4. プレビュー表示されるプロットに満足するまで、Vega spec とクエリを引き続き調整できます。完了したら、上部の Save as をクリックし、再利用できるようにカスタムプロットに名前を付けます。次に Apply from panel library をクリックして、プロットを完成させます。
ごく短時間の experiment で得られた結果は次のとおりです。1000件の例だけで1エポックトレーニングすると、ほとんどの画像が植物ではないことには非常に高い確信を示す一方で、どの画像が動物かもしれないかについては非常に不確かなモデルになります。
チャート設定
チャート結果