これは、このセクションの複数ページの印刷可能なビューです。 印刷するには、ここをクリックしてください.

このページの通常のビューに戻る.

パネル

ワークスペースパネルの可視化機能を使用して ログされたデータ をキーごとに探り、ハイパーパラメーターと出力メトリクスの関係を可視化することなどができます。

ワークスペースモード

W&B Projects は2つの異なるワークスペースモードをサポートしています。ワークスペース名の横のアイコンがそのモードを示しています。

アイコン ワークスペースモード
automated workspace icon Automated workspaces はプロジェクト内でログされたすべてのキーに対して自動的にパネルを生成します。自動ワークスペースを選ぶ理由:
  • プロジェクトのすべての利用可能なデータを可視化してすぐに始めたい場合。
  • 少数のキーをログする小規模プロジェクトの場合。
  • より広範な分析のため。
自動ワークスペースからパネルを削除した場合、Quick add を使って再作成できます。
manual workspace icon Manual workspaces は最初は空白で、ユーザーによって意図的に追加されたパネルのみが表示されます。手動ワークスペースを選ぶ理由:
  • プロジェクトのログされたキーの一部だけを主に気にかけている場合。
  • より焦点を絞った分析が必要な場合。
  • ワークスペースのパフォーマンスを向上させるため、あまり役に立たないパネルを読み込まないようにする場合。
Quick add を使用して、手動ワークスペースとそのセクションを有用な可視化で迅速に埋めることができます。

ワークスペースがパネルを生成する方法を変更するには、ワークスペースをリセットするを行います。

ワークスペースをリセットする方法

ワークスペースのリセット手順:

  1. ワークスペースの上部でアクションメニュー ... をクリックします。
  2. Reset workspace をクリックします。

ワークスペースレイアウトの設定

ワークスペースレイアウトを設定するには、ワークスペースの上部近くにある Settings をクリックし、次に Workspace layout をクリックします。

  • 検索時に空のセクションを隠す(デフォルトではオン)
  • パネルをアルファベット順に並べ替え(デフォルトではオフ)
  • セクションの編成(デフォルトでは最初のプレフィックスでグループ化)。この設定を変更するには:
    1. 鍵アイコンをクリックします。
    2. セクション内のパネルをどのようにグループ化するか選択します。

ワークスペース内のラインプロットのデフォルトを設定するには、Line plots を参照してください。

セクションのレイアウトを設定する

セクションのレイアウトを設定するには、その歯車アイコンをクリックし、次に Display preferences をクリックします。

  • ツールチップ内での色付き run 名前のオン/オフ(デフォルトではオン)
  • 仲間のチャートツールチップでハイライトされた run のみを表示(デフォルトではオフ)
  • ツールチップに表示される run の数(単一の run、すべての run、または Default
  • プライマリチャートツールチップでの run 名前の完全な表示(デフォルトではオフ)

パネルを全画面表示する

全画面表示モードでは、run 選択が表示され、パネルは通常の1000バケツではなく、10,000バケツでの完全な精度のサンプリングモードプロットを使用します。

全画面表示モードでパネルを表示するには:

  1. パネルの上にカーソルを合わせます。
  2. パネルのアクションメニュー ... をクリックし、次に全画面ボタンをクリックします。これはビューファインダーまたは四角の四隅を示すアウトラインのように見えます。 View panel full-screen
  3. 全画面表示モードでパネルを表示している間に パネルを共有する と、生成されたリンクは自動的に全画面表示モードで開きます。

全画面表示モードからパネルのワークスペースに戻るには、ページ上部の左向き矢印をクリックします。

パネルを追加する

このセクションでは、ワークスペースにパネルを追加するさまざまな方法を示します。

パネルを手動で追加する

パネルをワークスペースに一度に1つずつ、グローバルまたはセクションレベルで追加できます。

  1. グローバルにパネルを追加するには、パネル検索フィールドの近くにあるコントロールバーで Add panels をクリックします。
  2. セクションに直接パネルを追加するには、セクションのアクション ... メニューをクリックし、次に + Add panels をクリックします。
  3. 追加するパネルの種類を選択します。例えばチャート。パネルの設定詳細が表示され、デフォルトが選択されます。
  4. 必要に応じて、パネルとその表示設定をカスタマイズします。設定オプションは選択したパネルのタイプに依存します。各パネルタイプのオプションについてもっと知るには、以下の関連セクションを参照してください。Line plotsBar plots など。
  5. Apply をクリックします。
Demo of adding a panel

クイック追加でパネルを追加する

Quick add を使用して、選択した各キーに対して自動的にパネルを追加できます。これをグローバルまたはセクションレベルで行うことができます。

  1. グローバルに Quick add を使用してパネルを追加するには、パネル検索フィールド近くのコントロールバーで Add panels をクリックし、それから Quick add をクリックします。
  2. セクションに直接 Quick add を使用してパネルを追加するには、セクションのアクション ... メニューをクリック、Add panels をクリックし、それから Quick add をクリックします。
  3. パネルのリストが表示されます。チェックマークのある各パネルはすでにワークスペースに含まれています。
    • 利用可能なすべてのパネルを追加するには、リストの上の Add panels ボタンをクリックします。Quick Add リストが閉じられ、新しいパネルがワークスペースに表示されます。
    • リストから個別にパネルを追加するには、そのパネルの行にカーソルを合わせ、それから Add をクリックします。追加したい各パネルについてこのステップを繰り返し、Quick Add リストの右上にある X をクリックして閉じます。新しいパネルがワークスペースに表示されます。
  4. 必要に応じて、パネルの設定をカスタマイズします。

パネルを共有する

このセクションでは、リンクを使ってパネルを共有する方法を示します。

リンクを使ってパネルを共有するには、次のどちらかを行います:

  • パネルを全画面表示モードで表示している間、ブラウザからURLをコピーします。
  • アクションメニュー ... をクリックし、Copy panel URL を選択します。

ユーザーまたはチームにリンクを共有します。リンクにアクセスすると、そのパネルは 全画面モード で開きます。

全画面表示モードからパネルのワークスペースに戻るには、ページ上部の左向き矢印をクリックします。

プログラムでパネルの全画面リンクを構成する

特定の状況、たとえば オートメーションを作成する場合などに、パネルの全画面URLを含めると便利です。このセクションでは、パネルの全画面URLの形式を示します。以下の例では、ブラケット内の entity, project, panel, section 名を置き換えてください。

https://wandb.ai/<ENTITY_NAME>/<PROJECT_NAME>?panelDisplayName=<PANEL_NAME>&panelSectionName=<SECTON_NAME>

同じセクション内の複数のパネルが同じ名前を持つ場合、このURLはその名前を持つ最初のパネルを開きます。

パネルを埋め込んでソーシャルメディアで共有する

ウェブサイトにパネルを埋め込んだり、ソーシャルメディアで共有するには、そのパネルがリンクを持つ誰でも閲覧できる状態でなければなりません。プロジェクトがプライベートであれば、そのプロジェクトのメンバーのみがパネルを閲覧できます。プロジェクトが公開されていれば、リンクを持つ誰でもそのパネルを閲覧できます。

ソーシャルメディアでパネルを埋め込んで共有するコードを取得する手順:

  1. ワークスペースからパネルの上にカーソルを合わせ、そのアクションメニュー ... をクリックします。
  2. Share タブをクリックします。
  3. 招待した人だけにアクセス権リンクを持つ全員が閲覧可能 に変更します。そうしないと次のステップのオプションは使用できません。
  4. Twitterで共有, Redditで共有, LinkedInで共有, または 埋め込みリンクをコピー を選択します。

パネルレポートをメールで送信する

単一のパネルをスタンドアロンのレポートとしてメールする手順:

  1. パネルの上にカーソルを合わせ、パネルのアクションメニュー ... をクリックします。
  2. Share panel in report をクリックします。
  3. Invite タブを選択します。
  4. メールアドレスまたはユーザー名を入力します。
  5. 必要に応じて、** can view** を can edit に変更します。
  6. Invite をクリックします。W&B はユーザーに対し、共有するパネルのみを含むレポートのクリック可能なリンクをメールで送信します。

パネルを共有する場合とは異なり、受信者はこのレポートからワークスペースにアクセスできません。

パネルを管理する

パネルを編集する

パネルを編集する手順:

  1. 鉛筆アイコンをクリックします。
  2. パネルの設定を変更します。
  3. パネルを別のタイプに変更するには、タイプを選択し、設定を構成します。
  4. Apply をクリックします。

パネルを移動する

異なるセクションにパネルを移動するには、パネルのドラッグハンドルを使用します。リストから新しいセクションを選択するには:

  1. 必要に応じて、最後のセクションの後に Add section をクリックして新しいセクションを作成します。
  2. パネルのアクション ... メニューをクリックします。
  3. Move をクリックし、新しいセクションを選択します。

また、ドラッグハンドルを使用して、セクション内のパネルを並べ替えることもできます。

パネルを複製する

パネルを複製する手順:

  1. パネルの上部でアクション ... メニューをクリックします。
  2. Duplicate をクリックします。

必要に応じて、複製したパネルを カスタマイズ または 移動 することができます。

パネルを削除する

パネルを削除する手順:

  1. パネルの上にマウスを移動します。
  2. アクション ... メニューを選択します。
  3. Delete をクリックします。

手動ワークスペースからすべてのパネルを削除するには、そのアクション ... メニューをクリックし、Clear all panels をクリックします。

自動または手動ワークスペースからすべてのパネルを削除するには、ワークスペースをリセットします。Automatic を選択すると、デフォルトのパネルセットから開始します。Manual を選択すると、パネルのない空のワークスペースから開始します。

セクションを管理する

デフォルトでは、ワークスペース内のセクションはキーのログ階層を反映しています。ただし、手動ワークスペースでは、一度パネルを追加し始めるとセクションが表示されます。

セクションを追加する

セクションを追加するには、最後のセクションの後に Add section をクリックします。

既存のセクションの前または後に新しいセクションを追加するには、セクションのアクション ... メニューをクリックし、New section below または New section above をクリックします。

セクションのパネルを管理する

多くのパネルを持つセクションは、Standard grid レイアウトを使用している場合デフォルトでページ分割されます。ページに表示されるパネルの数は、パネルの設定とセクション内のパネルのサイズによります。

  1. セクションが使用しているレイアウトを確認するには、セクションのアクション ... メニューをクリックします。セクションのレイアウトを変更するには、Layout grid セクションで Standard grid または Custom grid を選択します。
  2. パネルのサイズを変更するには、パネルの上にカーソルを合わせて、ドラッグハンドルをクリックし、パネルのサイズを調整します。
  • セクションが Standard grid を使用している場合、1つのパネルのサイズを変更すると、そのセクション内のすべてのパネルのサイズが変更されます。
  • セクションが Custom grid を使用している場合、それぞれのパネルのサイズを個別にカスタマイズできます。
  1. ページに表示するパネルの数をカスタマイズするには:
  2. セクションの上部で 1 to of をクリックします。ここで <X> は表示中のパネル数、<Y> はパネルの合計数です。
  3. 1ページに表示するパネルの数を最大100まで選択します。
  4. 多くのパネルがある場合にすべてのパネルを表示するには、パネルを Custom grid レイアウトを使用するように構成します。セクションのアクション ... メニューをクリックし、Layout grid セクションで Custom grid を選択します。
  5. セクションからパネルを削除するには:
  6. パネルにカーソルを合わせ、そのアクション ... メニューをクリックします。
  7. Delete をクリックします。

ワークスペースを自動ワークスペースにリセットすると、削除されたすべてのパネルが再び表示されます。

セクション名を変更する

セクション名を変更するには、そのアクション ... メニューから Rename section をクリックします。

セクションを削除する

セクションを削除するには、その ... メニューをクリックして Delete section をクリックします。これにより、セクションとそのパネルも削除されます。

1 - 折れ線グラフ

メトリクスを可視化し、軸をカスタマイズし、プロット上で複数のラインを比較します

ラインプロットは、wandb.log() でメトリクスを時間経過とともにプロットするとデフォルトで表示されます。複数のラインを同じプロットで比較したり、カスタム軸を計算したり、ラベルをリネームしたりするために、チャート設定をカスタマイズできます。

ラインプロット設定を編集する

このセクションでは、個々のラインプロットパネル、セクション内のすべてのラインプロットパネル、またはワークスペース内のすべてのラインプロットパネルの設定を編集する方法を紹介します。

個別のラインプロット

個々のラインプロットの設定は、セクションまたはワークスペースのラインプロット設定を上書きします。ラインプロットをカスタマイズするには:

  1. パネルの上にマウスをホバーさせ、ギアアイコンをクリックします。
  2. 表示されるモーダル内で、設定 を編集するタブを選択します。
  3. 適用 をクリックします。

ラインプロット設定

次の設定をラインプロットに設定できます:

データ: プロットのデータ表示の詳細を設定します。

  • X: X 軸に使用する値を選択します (デフォルトは Step です)。X 軸を 相対時間 に変更したり、W&B でログを取った値に基づいてカスタム軸を選択したりできます。
    • 相対時間 (Wall) はプロセス開始以降の時計時間で、もし 1 日後に run を再開して何かをログした場合、それは 24 時間にプロットされます。
    • 相対時間 (プロセス) は実行中のプロセス内の時間で、もし 10 秒間 run を実行し、1 日後に再開した場合、そのポイントは 10 秒にプロットされます。
    • ウォール時間 はグラフ上の最初の run 開始からの経過時間を示します。
    • Step はデフォルトで wandb.log() が呼び出されるたびに増加し、モデルからログされたトレーニングステップの数を反映することになっています。
  • Y: メトリクスや時間経過とともに変化するハイパーパラメーターなど、ログに取られた値から1つ以上の y 軸を選択します。
  • X軸 および Y軸 の最小値と最大値 (オプション)。
  • ポイント集計メソッド. ランダムサンプリング (デフォルト) または フルフェデリティ。詳細は サンプリング を参照。
  • スムージング: ラインプロットのスムージングを変更します。デフォルトは 時間加重EMA です。その他の値には スムージングなし, ランニング平均, および ガウシアン があります。
  • 外れ値: 外れ値を除外して、デフォルトのプロット最小値および最大値スケールを再設定します。
  • 最大 run またはグループ数: この数値を増やすことで、ラインプロットに一度により多くのラインを表示します。デフォルトは 10 run です。チャートの一番上に “最初の 10 run を表示中” というメッセージが表示され、利用可能な run が 10 個を超える場合、チャートが表示できる数を制約していることが分かります。
  • チャートタイプ: ラインプロット、エリアプロット、および パーセンテージエリアプロットの中で切り替えます。

グルーピング: プロット内で run をどのようにグループ化し集計するかを設定します。

  • グループ化基準: 列を選択し、その列に同じ値を持つすべての run がグループ化されます。
  • Agg: 集計— グラフ上のラインの値です。オプションはグループの平均、中央値、最小、最大です。

チャート: パネル、X軸、Y軸のタイトルを指定し、凡例を表示または非表示に設定し、その位置を設定します。

凡例: パネルの凡例の外観をカスタマイズします、もし有効化されている場合。

  • 凡例: プロットの各ラインに対する凡例のフィールド、それぞれのラインのプロット内の凡例。
  • 凡例テンプレート: テンプレートの上部に表示される凡例およびマウスオーバー時にプロットに表示される伝説で, 表示したい具体的なテキストおよび変数を定義します。

: パネルにカスタム計算式を追加します。

  • Y軸式: グラフに計算されたメトリクスを追加。ログされたメトリクスやハイパーパラメーターのような設定値を使用してカスタムラインを計算することができます。
  • X軸式: 計算された値を使用して x 軸を再スケーリングします。有用な変数には、デフォルトの x 軸の step などが含まれ、サマリー値を参照するための構文は ${summary:value} です。

セクション内のすべてのラインプロット

ワークスペースの設定を上書きして、セクション内のすべてのラインプロットのデフォルトの設定をカスタマイズするには:

  1. セクションのギアアイコンをクリックして設定を開きます。
  2. 表示されるモーダル内で、データ または 表示設定 タブを選択して、セクションのデフォルトの設定を構成します。各 データ 設定の詳細については、前述のセクション 個別のラインプロット を参照してください。各表示設定の詳細については、セクションレイアウトの構成 を参照してください。

ワークスペース内のすべてのラインプロット

ワークスペース内のすべてのラインプロットのデフォルト設定をカスタマイズするには:

  1. 設定 というラベルの付いたギアがあるワークスペースの設定をクリックします。
  2. ラインプロット をクリックします。
  3. 表示されるモーダル内で、データ または 表示設定 タブを選択して、ワークスペースのデフォルト設定を構成します。
    • データ 設定の詳細については、前述のセクション 個別のラインプロット を参照してください。

    • 表示設定 セクションの詳細については、ワークスペース表示設定 を参照してください。ワークスペースレベルで、ラインプロットのデフォルト ズーム 振る舞いを構成できます。この設定は、x 軸キーが一致するラインプロット間でズームの同期を制御します。デフォルトでは無効です。

プロット上で平均値を可視化する

複数の異なる実験があり、その値の平均をプロットで見たい場合は、テーブルのグルーピング機能を使用できます。runテーブルの上部で “グループ化” をクリックし、“すべて” を選択してグラフに平均値を表示します。

以下は平均化する前のグラフの例です:

次の画像は、グループ化されたラインを使用して run における平均値を示すグラフです。

プロット上で NaN 値を可視化する

wandb.log を使用して、PyTorch テンソルを含む NaN 値をラインプロットでプロットすることもできます。例えば:

wandb.log({"test": [..., float("nan"), ...]})

2 つのメトリクスを 1 つのチャートで比較する

  1. ページの右上隅にある パネルを追加 ボタンを選択します。
  2. 表示される左側のパネルで評価のドロップダウンを展開します。
  3. Run comparer を選択します。

ラインプロットの色を変更する

時々、run のデフォルトの色が比較には適していないことがあります。この問題を解決するために、wandb は手動で色を変更できる2つの方法を提供しています。

各 run は初期化時にデフォルトでランダムな色が割り当てられます。

Random colors given to runs

どの色をクリックすると、手動で選択できるカラーパレットが表示されます。

The color palette
  1. 設定を編集したいパネルにマウスをホバーさせます。
  2. 表示される鉛筆アイコンを選択します。
  3. 凡例 タブを選択します。

異なる x 軸で可視化する

実験がかかった絶対時間を見たい場合や、実験が実行された日を見たい場合は、x 軸を切り替えることができます。ここでは、ステップから相対時間、そして壁時間に切り替える例を示します。

エリアプロット

詳細設定タブでさまざまなプロットスタイルをクリックすると、エリアプロットまたはパーセンテージエリアプロットを取得できます。

ズーム

直線をクリックしてドラッグすると垂直および水平方向に同時にズームします。これにより、x軸とy軸のズームが変更されます。

チャートの凡例の非表示

この簡単なトグルでラインプロットの凡例をオフにできます:

1.1 - 折れ線グラフのリファレンス

X軸

Selecting X-Axis

折れ線グラフのX軸を、W&B.logで記録した任意の値に設定できます。ただし、それが常に数値として記録されている必要があります。

Y軸の変数

Y軸の変数は、wandb.logで記録した任意の値に設定できます。ただし、数値、数値の配列、または数値のヒストグラムを記録している必要があります。変数に対して1500点以上を記録した場合、W&Bは1500点にサンプリングします。

X範囲とY範囲

プロットのXとYの最大値と最小値を変更できます。

X範囲のデフォルトは、X軸の最小値から最大値までです。

Y範囲のデフォルトは、メトリクスの最小値と0からメトリクスの最大値までです。

最大run/グループ数

デフォルトでは、10 runまたはrunのグループのみがプロットされます。runは、runsテーブルまたはrunセットの上位から取得されるため、runsテーブルやrunセットを並べ替えると、表示されるrunを変更できます。

凡例

チャートの凡例を制御して、任意のrunに対して記録した任意のconfig値やrunのメタデータ、例えば作成日時やrunを作成したユーザーを表示できます。

例:

${run:displayName} - ${config:dropout} は、各runの凡例名を royal-sweep - 0.5 のようにします。ここで royal-sweep はrun名で、0.5dropout という名前のconfigパラメータです。

グラフにカーソルを合わせたときにクロスヘアで特定の点の値を表示するために、[[ ]] 内に値を設定できます。例えば \[\[ $x: $y ($original) ]] は “2: 3 (2.9)” のように表示されます。

[[ ]] 内でサポートされる値は以下の通りです:

意味
${x} X値
${y} Y値(平滑化調整を含む)
${original} 平滑化調整を含まないY値
${mean} グループ化されたrunの平均
${stddev} グループ化されたrunの標準偏差
${min} グループ化されたrunの最小値
${max} グループ化されたrunの最大値
${percent} 全体のパーセント(積み上げ面チャート用)

グループ化

全てのrunをグループ化するか、個々の変数でグループをすることができます。また、テーブル内部でグループ化することによってグループを有効にすると、そのグループは自動的にグラフに反映されます。

スムージング

スムージング係数を0から1の間で設定できます。0はスムージングなし、1は最大スムージングを意味します。詳細はスムージング係数の設定についてを参照してください。

外れ値を無視

デフォルトのプロットの最小値と最大値のスケールから外れ値を除外するようにプロットをリスケールします。この設定がプロットに与える影響は、プロットのサンプリングモードに依存します。

  • ランダムサンプリングモードを使用するプロットでは、外れ値を無視を有効にすると、5%から95%の点のみが表示されます。外れ値が表示される場合、それらは他の点と異なるフォーマットでは表示されません。
  • 完全な忠実度モードを使用するプロットでは、全ての点が常に表示され、各バケットの最後の値まで凝縮されます。外れ値を無視が有効になっている場合、各バケットの最小値と最大値の境界がシェーディングされます。それ以外の場合は、領域はシェーディングされません。

式の表現

式の表現を使用して、1-accuracyのようにメトリクスから派生した値をプロットできます。現在、単一のメトリクスをプロットしている場合にのみ機能します。+、-、*、/、%といった簡単な算術式、および**を使用してべき乗を行うことができます。

プロットスタイル

折れ線グラフのスタイルを選択します。

折れ線プロット:

面プロット:

パーセンテージエリアプロット:

1.2 - ポイント集約

Use point aggregation methods within your line plots for improved data visualization accuracy and performance. There are two types of point aggregation modes: full fidelity and random sampling. W&B uses full fidelity mode by default.

Full fidelity

Full fidelity modeを使用すると、W&Bはデータポイントの数に基づいてx軸を動的なバケットに分割します。そして、それぞれのバケット内の最小、最大、平均値を計算し、線プロットのポイント集約をレンダリングします。

フルフィデリティモードを使用する際のポイント集約の3つの主な利点は次のとおりです:

  • 極値とスパイクを保持する: データ内の極値とスパイクを保持します。
  • 最小値と最大値のレンダリングを設定する: W&Bアプリを使用して、極値(最小/最大)を影付きエリアとして表示するかどうかをインタラクティブに決定できます。
  • データの忠実度を失わずにデータを探索する: W&Bは特定のデータポイントにズームインするとx軸のバケットサイズを再計算します。これにより、正確さを失うことなくデータを探索できることを保証します。キャッシュを使用して以前に計算された集計を保存することで、ロード時間を短縮するのに役立ちます。これは、特に大規模なデータセットをナビゲートしている場合に便利です。

最小値と最大値のレンダリングの設定

線プロットの周囲に影付きのエリアを使って最小値と最大値を表示または非表示にします。

次の画像は、青い線プロットを示しています。薄い青の影付きエリアは各バケットの最小値と最大値を表しています。

線プロットで最小値と最大値をレンダリングする方法は3通りあります:

  • Never: 最小/最大値は影付きエリアとして表示されません。x軸のバケット全体に渡る集約された線だけを表示します。
  • On hover: グラフにカーソルを合わせると、最小/最大値の影付きエリアが動的に表示されます。このオプションは、ビューをシンプルに保ちながら、範囲をインタラクティブに検査することを可能にします。
  • Always: 最小/最大の影付きエリアは常にグラフのすべてのバケットで一貫して表示され、常に全範囲の値を視覚化するのに役立ちます。これにより、グラフに多くのrunsが視覚化されている場合、視覚的なノイズが発生する可能性があります。

デフォルトでは、最小値と最大値は影付きエリアとして表示されません。影付きエリアオプションの1つを表示するには、以下の手順に従ってください:

  1. W&Bプロジェクトに移動します。
  2. 左のタブでWorkspaceアイコンを選択します。
  3. 画面の右上隅にある歯車アイコンを、Add panelsボタンの左側に選択します。
  4. 表示されるUIスライダーからLine plotsを選択します。
  5. Point aggregationセクション内で、Show min/max values as a shaded areaドロップダウンメニューからOn hoverまたはAlwaysを選択します。
  1. W&Bプロジェクトに移動します。
  2. 左のタブでWorkspaceアイコンを選択します。
  3. フルフィデリティモードを有効にしたい線プロットパネルを選択します。
  4. 表示されるモーダル内で、Show min/max values as a shaded areaドロップダウンメニューからOn hoverまたはAlwaysを選択します。

データの忠実度を失わずにデータを探索する

データセットの特定の領域を分析し、極値やスパイクなどの重要なポイントを見逃さないようにします。線プロットをズームインすると、W&Bは各バケット内の最小、最大、および平均値を計算するために使用されるバケットサイズを調整します。

W&Bはデフォルトでx軸を1000のバケットに動的に分割します。各バケットに対し、W&Bは以下の値を計算します:

  • Minimum: そのバケット内の最小値。
  • Maximum: そのバケット内の最大値。
  • Average: そのバケット内のすべてのポイントの平均値。

W&Bは、すべてのプロットでデータの完全な表現を保持し、極値を含める方法でバケット内の値をプロットします。1,000ポイント以下にズームインすると、フルフィデリティモードは追加の集約なしにすべてのデータポイントをレンダリングします。

線プロットをズームインするには、次の手順に従います:

  1. W&Bプロジェクトに移動します。
  2. 左のタブでWorkspaceアイコンを選択します。
  3. 必要に応じて、ワークスペースに線プロットパネルを追加するか、既存の線プロットパネルに移動します。
  4. ズームインしたい特定の領域を選択するためにクリックしてドラッグします。

Random sampling

Random samplingはラインプロットをレンダリングするために1,500のランダムにサンプリングされたポイントを使用します。大量のデータポイントがある場合、パフォーマンスの理由でランダムサンプリングが有用です。

ランダムサンプリングを有効にする

デフォルトでは、W&Bはフルフィデリティモードを使用します。ランダムサンプリングを有効にするには、次の手順に従います:

  1. W&Bプロジェクトに移動します。
  2. 左のタブでWorkspaceアイコンを選択します。
  3. 画面の右上隅にある歯車アイコンを、Add panelsボタンの左側に選択します。
  4. 表示されるUIスライダーからLine plotsを選択します。
  5. Point aggregationセクションからRandom samplingを選択します。
  1. W&Bプロジェクトに移動します。
  2. 左のタブでWorkspaceアイコンを選択します。
  3. ランダムサンプリングを有効にしたい線プロットパネルを選択します。
  4. 表示されるモーダル内で、Point aggregation methodセクションからRandom samplingを選択します。

サンプリングされていないデータへのアクセス

W&B Run APIを使用して、run中にログされたメトリクスの完全な履歴にアクセスできます。次の例は、特定のrunから損失値を取得し処理する方法を示しています:

# W&B APIを初期化
run = api.run("l2k2/examples-numpy-boston/i0wt6xua")

# 'Loss'メトリクスの履歴を取得
history = run.scan_history(keys=["Loss"])

# 履歴から損失値を抽出
losses = [row["Loss"] for row in history]

1.3 - スムーズなラインプロット

ノイズの多いデータにおけるトレンドを見るために、線グラフでスムージングを使用します。

W&B は 3 つのタイプの平滑化をサポートしています:

これらが インタラクティブな W&B レポートでどのように動作するかをご覧ください。

指数移動平均 (デフォルト)

指数平滑化は、時系列データを指数的に減衰させることで、過去のデータポイントの重みを滑らかにする手法です。範囲は 0 から 1 です。背景については 指数平滑化 をご覧ください。時系列の初期値がゼロに偏らないようにするためのデバイアス項が追加されています。

EMA アルゴリズムは、線上の点の密度(x 軸範囲の単位当たりの y 値の数)を考慮に入れます。これにより、異なる特性を持つ複数の線を同時に表示する際に、一貫した平滑化が可能になります。

これが内部でどのように動作するかのサンプルコードです:

const smoothingWeight = Math.min(Math.sqrt(smoothingParam || 0), 0.999);
let lastY = yValues.length > 0 ? 0 : NaN;
let debiasWeight = 0;

return yValues.map((yPoint, index) => {
  const prevX = index > 0 ? index - 1 : 0;
  // VIEWPORT_SCALE は結果をチャートの x 軸範囲にスケーリングします
  const changeInX =
    ((xValues[index] - xValues[prevX]) / rangeOfX) * VIEWPORT_SCALE;
  const smoothingWeightAdj = Math.pow(smoothingWeight, changeInX);

  lastY = lastY * smoothingWeightAdj + yPoint;
  debiasWeight = debiasWeight * smoothingWeightAdj + 1;
  return lastY / debiasWeight;
});

これがアプリ内でどのように見えるかはこちらをご覧ください in the app:

ガウス平滑化

ガウス平滑化(またはガウスカーネル平滑化)は、標準偏差が平滑化パラメータとして指定されるガウス分布に対応する重みを用いてポイントの加重平均を計算します。入力 x 値ごとに平滑化された値が計算されます。

ガウス平滑化は、TensorBoard の振る舞いと一致させる必要がない場合の標準的な選択肢です。指数移動平均とは異なり、ポイントは前後の値に基づいて平滑化されます。

これがアプリ内でどのように見えるかはこちらをご覧ください in the app:

移動平均

移動平均は、与えられた x 値の前後のウィンドウ内のポイントの平均でそのポイントを置き換える平滑化アルゴリズムです。詳細は “Boxcar Filter” を参照してください https://en.wikipedia.org/wiki/Moving_average。移動平均のために選択されたパラメータは、Weights and Biases に移動平均で考慮するポイントの数を伝えます。

ポイントが x 軸上で不均一に配置されている場合は、ガウス平滑化を検討してください。

次の画像は、アプリ内での移動アプリの表示例を示しています in the app:

指数移動平均 (非推奨)

TensorBoard EMA アルゴリズムは、同じチャート上で一貫したポイント密度を持たない複数の線を正確に平滑化することができないため、非推奨とされました。

指数移動平均は、TensorBoard の平滑化アルゴリズムと一致するように実装されています。範囲は 0 から 1 です。背景については 指数平滑化 をご覧ください。時系列の初期値がゼロに偏らないようにするためのデバイアス項が追加されています。

これが内部でどのように動作するかのサンプルコードです:

  data.forEach(d => {
    const nextVal = d;
    last = last * smoothingWeight + (1 - smoothingWeight) * nextVal;
    numAccum++;
    debiasWeight = 1.0 - Math.pow(smoothingWeight, numAccum);
    smoothedData.push(last / debiasWeight);

これがアプリ内でどのように見えるかはこちらをご覧ください in the app:

実装の詳細

すべての平滑化アルゴリズムはサンプリングされたデータで実行されます。つまり、1500 ポイント以上をログに記録した場合、平滑化アルゴリズムはサーバーからポイントがダウンロードされた後に実行されます。平滑化アルゴリズムの目的は、データ内のパターンを迅速に見つけることです。多くのログを持つメトリクスに対して正確な平滑化された値が必要な場合は、API を介してメトリクスをダウンロードし、自分自身の平滑化メソッドを実行する方が良いかもしれません。

元のデータを非表示にする

デフォルトでは、オリジナルの非平滑化データを背景として薄い線で表示します。この表示をオフにするには、Show Original トグルをクリックしてください。

2 - 棒グラフ

メトリクスを可視化し、軸をカスタマイズし、カテゴリー データをバーとして比較します。

棒グラフは、矩形のバーでカテゴリカルデータを表示し、縦または横にプロットできます。全てのログされた値が長さ1の場合、wandb.log() を使用するとデフォルトで棒グラフが表示されます。

Plotting Box and horizontal Bar plots in W&B

チャートの設定をカスタマイズして、表示する run の最大数を制限したり、任意の設定で run をグループ化したり、ラベルの名前を変更したりできます。

棒グラフのカスタマイズ

Box または Violin プロットを作成して、多くの要約統計量を1つのチャートタイプに組み合わせることもできます。

  1. run テーブルで run をグループ化します。
  2. ワークスペースで ‘Add panel’ をクリックします。
  3. 標準の ‘Bar Chart’ を追加し、プロットする指標を選択します。
  4. ‘Grouping’ タブの下で ‘box plot’ や ‘Violin’ などを選択して、これらのスタイルのいずれかをプロットします。
Customize Bar Plots

3 - 並列座標

機械学習実験間で結果を比較する

大規模なハイパーパラメーターとモデルメトリクスの関係を一目で要約できるのがパラレル座標チャートです。

  • : wandb.config からのさまざまなハイパーパラメーターと wandb.log からのメトリクス。
  • ライン: 各ラインは単一の run を表します。ラインにマウスを合わせると、その run の詳細がツールチップで表示されます。現在のフィルターに一致するすべてのラインが表示されますが、目をオフにすると、ラインはグレー表示されます。

パラレル座標パネルを作成する

  1. ワークスペースのランディングページへ移動
  2. Add Panels をクリック
  3. Parallel coordinates を選択

パネル設定

パネルを設定するには、パネルの右上にある編集ボタンをクリックします。

  • ツールチップ: ホバーすると、各 run の情報が表示されます
  • タイトル: 軸のタイトルを編集して、より読みやすくします
  • 勾配: グラデーションを好きな色の範囲にカスタマイズ
  • ログスケール: 各軸は個別にログスケールで表示するように設定できます
  • 軸の反転: 軸の方向を切り替え—正確性と損失を両方持つカラムがあるときに便利です

ライブのパラレル座標パネルと対話する

4 - 散布図

このページでは、W&B で散布図を使用する方法を示します。

ユースケース

散布図を使用して、複数の runs を比較し、実験のパフォーマンスを視覚化します。

  • 最小値、最大値、および平均値のプロットラインを表示する。
  • メタデータのツールチップをカスタマイズする。
  • ポイントの色を制御する。
  • 軸の範囲を調整する。
  • 軸に対して対数スケールを使用する。

次の例では、異なるモデルの数週間にわたる実験による検証精度を表示する散布図を示しています。ツールチップには、バッチサイズ、ドロップアウト、および軸の値が含まれています。また、検証精度のランニング平均を示す線も表示されます。

ライブ例を見る →

数週間にわたる実験による異なるモデルの検証精度の例

散布図を作成する

W&B UI で散布図を作成するには:

  1. Workspaces タブに移動します。
  2. Charts パネルで、アクションメニュー ... をクリックします。
  3. ポップアップメニューから、Add panels を選択します。
  4. Add panels メニューで、Scatter plot を選択します。
  5. プロットしたいデータを表示するために x および y 軸を設定します。必要に応じて、軸の最大および最小範囲を設定するか、z 軸を追加してください。
  6. Apply をクリックして散布図を作成します。
  7. 新しい散布図を Charts パネルで確認します。

5 - コードを保存して差分を取る

デフォルトでは、W&Bは最新のgitコミットハッシュのみを保存します。UIで実験間のコードを動的に比較するためのより多くのコード機能を有効にできます。

wandb バージョン 0.8.28 から、W&Bは wandb.init() を呼び出すメインのトレーニングファイルからコードを保存することができます。

ライブラリコードを保存する

コード保存を有効にすると、W&Bは wandb.init() を呼び出したファイルからコードを保存します。追加のライブラリコードを保存するには、以下の3つのオプションがあります:

wandb.init を呼び出した後に wandb.run.log_code(".") を呼び出す

import wandb

wandb.init()
wandb.run.log_code(".")

code_dir を設定して wandb.init に設定オブジェクトを渡す

import wandb

wandb.init(settings=wandb.Settings(code_dir="."))

これにより、現在のディレクトリーおよびすべてのサブディレクトリー内のPythonソースコードファイルがアーティファクトとしてキャプチャされます。保存されるソースコードファイルの種類と場所をより詳細に制御するには、リファレンスドキュメントを参照してください。

UIでコード保存を設定する

コード保存をプログラム的に設定する以外に、W&Bアカウントの設定でこの機能を切り替えることもできます。これを有効にすると、アカウントに関連付けられているすべてのチームでコード保存が有効になります。

デフォルトでは、W&Bはすべてのチームでコード保存を無効にします。

  1. W&Bアカウントにログインします。
  2. 設定 > プライバシー に移動します。
  3. プロジェクトとコンテンツのセキュリティ の下で、デフォルトのコード保存を無効にする をオンにします。

コードコンペアラー

異なるW&B runで使用されたコードを比較する:

  1. ページの右上隅にある パネルを追加 ボタンを選択します。
  2. TEXT AND CODE ドロップダウンを展開し、コード を選択します。

Jupyterセッション履歴

W&BはJupyterノートブックセッションで実行されたコードの履歴を保存します。Jupyter内でwandb.init() を呼び出すと、W&Bは現在のセッションで実行されたコードの履歴を含むJupyterノートブックを自動的に保存するフックを追加します。

  1. コードが含まれているプロジェクトワークスペースに移動します。
  2. 左ナビゲーションバーのArtifacts タブを選択します。
  3. コードアーティファクトを展開します。
  4. ファイルタブを選択します。

これは、セッションで実行されたセルと、iPythonの表示メソッドを呼び出して作成された出力を表示します。これにより、指定されたrunのJupyter内でどのコードが実行されたかを正確に確認することができます。可能な場合、W&Bはノートブックの最新バージョンも保存し、コードディレクトリー内で見つけることができます。

6 - パラメータの重要度

モデルのハイパーパラメーターと出力メトリクスの関係を視覚化する

ハイパーパラメーターがどのようにメトリクスの望ましい値の予測に役立ったか、また高い相関があったかを発見しましょう。

相関 とは、ハイパーパラメーターと選択されたメトリクスの線形相関を意味します(この場合は val_loss)。したがって、高い相関はハイパーパラメーターの値が高いとき、メトリクスの値も高くなり、その逆もまた然りであることを示します。相関は注目すべき素晴らしいメトリクスですが、入力間の二次の相互作用を捉えることはできず、非常に異なる範囲の入力を比較することが煩雑になる可能性があります。

そのため、W&Bは 重要度 メトリクスも計算します。W&Bはハイパーパラメーターを入力として、ランダムフォレストをトレーニングし、メトリクスをターゲット出力として、ランダムフォレストの特徴重要度値をレポートします。

この手法のアイデアは、Jeremy Howard との会話からインスピレーションを受け、Fast.aiにおいてハイパーパラメータースペースを探るためのランダムフォレストの特徴重要度の使用を推進してきたことから生まれました。W&Bはこの分析の背後にある動機を学ぶために、この講義 (およびこれらのノート)をチェックすることを強くお勧めします。

ハイパーパラメーター重要度パネルは、高い相関のハイパーパラメーター間の複雑な相互作用を解きほぐします。そして、モデルのパフォーマンスを予測する上で、どのハイパーパラメーターが最も重要であるかを示すことによって、ハイパーパラメーターの探索を調整するのに役立ちます。

ハイパーパラメーター重要度パネルの作成

  1. W&B プロジェクトに移動します。
  2. Add panels ボタンを選択します。
  3. CHARTS ドロップダウンを展開し、ドロップダウンから Parallel coordinates を選択します。
Using automatic parameter visualization

パラメーターマネージャーを使用して、表示および非表示のパラメーターを手動で設定できます。

Manually setting the visible and hidden fields

ハイパーパラメーター重要度パネルの解釈

このパネルは、トレーニングスクリプト内で wandb.config オブジェクトに渡されたすべてのパラメーターを表示します。次に、これらのconfigパラメーターの特徴重要度と、それが選択されたモデルメトリクス(この場合は val_loss)との相関を示します。

重要度

重要度列は、選択したメトリクスを予測する際に、各ハイパーパラメーターがどの程度役立ったかを示します。多数のハイパーパラメーターを調整し始めて、それらの中からさらなる探索の価値があるものを特定するためにこのプロットを使用するシナリオを想像してみてください。その後の Sweeps は、最も重要なハイパーパラメーターに限定し、より良いモデルをより速く、安価に見つけることができます。

上記の画像では、epochs, learning_rate, batch_sizeweight_decay がかなり重要であることがわかります。

相関

相関は、個々のハイパーパラメーターとメトリクスの値との間の線形関係を捉えます。これにより、SGDオプティマイザーなどのハイパーパラメーターの使用と val_loss 間に有意な関係があるかどうかという問題に答えます(この場合、答えは「はい」です)。相関値は-1から1の範囲であり、正の値は正の線形相関を、負の値は負の線形相関を示し、0の値は相関がないことを示します。一般的に、どちらの方向でも0.7を超える値は強い相関を示します。

このグラフを使用して、メトリクスと高い相関のある値(この場合は確率的勾配降下法やadamを選択し、rmspropやnadamよりも優先することがあります)をさらに調査したり、より多くのエポックでトレーニングしたりすることができます。

重要度と相関の違いは、重要度がハイパーパラメーター間の相互作用を考慮に入れる一方で、相関は個々のハイパーパラメーターがメトリクスに与える影響のみを測定するという事実から生じます。第二に、相関は線形関係のみを捉えるのに対し、重要度はより複雑な関係を捉えることができます。

見てわかるように、重要度と相関はどちらもハイパーパラメーターがモデルのパフォーマンスにどのように影響するかを理解するための強力なツールです。

7 - run メトリクスを比較する

複数の run 間でメトリクスを比較する

Run Comparer を使用して、異なる run 間でメトリクスがどのように異なるかを確認します。

  1. ページの右上にある Add panels ボタンを選択します。
  2. 表示される左側のパネルから Evaluation ドロップダウンを展開します。
  3. Run comparer を選択します。

diff only オプションを切り替えて、 run 間で値が同じ行を非表示にします。

8 - クエリパネル

このページの一部の機能はベータ版であり、機能フラグの後ろに隠れています。関連するすべての機能をアンロックするには、プロフィールページの自己紹介に weave-plot を追加してください。

クエリパネルを使用してデータをクエリし、インタラクティブに視覚化します。

クエリパネルを作成する

ワークスペースまたはレポート内にクエリを追加します。

  1. プロジェクトのワークスペースに移動します。
  2. 右上のコーナーにある Add panel をクリックします。
  3. ドロップダウンから Query panel を選択します。

/Query panel と入力して選択します。

または、一連の Runs とクエリを関連付けることができます。

  1. レポート内で、/Panel grid と入力して選択します。
  2. Add panel ボタンをクリックします。
  3. ドロップダウンから Query panel を選択します。

クエリコンポーネント

クエリ式を使用して、W&Bに保存されたデータ、例えば Runs、Artifacts、Models、Tables などをクエリします。

例: テーブルをクエリする

W&B Tableをクエリしたいとします。トレーニングコード内で "cifar10_sample_table" という名前のテーブルをログします:

import wandb
wandb.log({"cifar10_sample_table":<MY_TABLE>})

クエリパネル内でテーブルをクエリするには次のようにします:

runs.summary["cifar10_sample_table"]

これを分解すると:

  • runs は、ワークスペースに Query Panel があるときに自動的に Query Panel Expressions に注入される変数です。その値は、その特定のワークスペースに表示される Runs のリストです。Run内の利用可能な異なる属性についてはこちらをお読みください
  • summary は、Run の Summary オブジェクトを返す操作です。Opsは マップされる ため、この操作はリスト内の各 Run に適用され、その結果として Summary オブジェクトのリストが生成されます。
  • ["cifar10_sample_table"] は Pick 操作(角括弧で示され)、predictions というパラメータを持ちます。Summary オブジェクトは辞書またはマップのように動作するため、この操作は各 Summary オブジェクトから predictions フィールドを選択します。

インタラクティブに独自のクエリの書き方を学ぶには、こちらのレポートを参照してください。

設定

パネルの左上コーナーにあるギアアイコンを選択してクエリ設定を展開します。これにより、ユーザーはパネルのタイプと結果パネルのパラメータを設定できます。

結果パネル

最後に、クエリ結果パネルは、選択したクエリパネル、設定によって設定された構成に基づいて、データをインタラクティブに表示する形式でクエリ式の結果をレンダリングします。次の画像は、同じデータのテーブルとプロットを示しています。

基本操作

次に、クエリパネル内で行える一般的な操作を示します。

ソート

列オプションからソートします:

フィルター

クエリ内で直接、または左上隅のフィルターボタンを使用してフィルターできます(2枚目の画像)。

マップ

マップ操作はリストを反復し、データ内の各要素に関数を適用します。これは、パネルクエリを使用して直接行うことも、列オプションから新しい列を挿入することによって行うこともできます。

グループ化

クエリを使用してまたは列オプションからグループ化できます。

連結

連結操作により、2つのテーブルを連結し、パネル設定から連結または結合できます。

結合

クエリ内でテーブルを直接結合することも可能です。次のクエリ式を考えてみてください:

project("luis_team_test", "weave_example_queries").runs.summary["short_table_0"].table.rows.concat.join(\
project("luis_team_test", "weave_example_queries").runs.summary["short_table_1"].table.rows.concat,\
(row) => row["Label"],(row) => row["Label"], "Table1", "Table2",\
"false", "false")

左のテーブルは次のように生成されます:

project("luis_team_test", "weave_example_queries").\
runs.summary["short_table_0"].table.rows.concat.join

右のテーブルは次のように生成されます:

project("luis_team_test", "weave_example_queries").\
runs.summary["short_table_1"].table.rows.concat

ここで:

  • (row) => row["Label"] は各テーブルのセレクタであり、結合する列を決定します
  • "Table1""Table2" は、結合された各テーブルの名前です
  • truefalse は、左および右の内/外部結合設定です

Runsオブジェクト

クエリパネルを使用して runs オブジェクトにアクセスします。Runオブジェクトは、実験の記録を保存します。詳細については、こちらのレポートのセクションを参照してくださいが、簡単な概要として、runs オブジェクトには以下が含まれます:

  • summary: Runの結果を要約する情報の辞書です。精度や損失のようなスカラーや、大きなファイルを含むことができます。デフォルトでは、wandb.log()は記録された時系列の最終的な値をsummaryに設定します。直接summaryの内容を設定することもできます。summaryはRunの出力と考えてください。
  • history: モデルがトレーニング中に変化する値を格納するための辞書のリストです。コマンド wandb.log() はこのオブジェクトに追加します。
  • config: Runの設定情報を含む辞書で、トレーニングランのハイパーパラメーターやデータセットアーティファクトを作成するランの前処理方法などが含まれます。これらはRunの「入力」として考えてください。

Artifactsにアクセスする

Artifacts は W&B の中核概念です。これは、バージョン管理された名前付きファイルやディレクトリーのコレクションです。Artifacts を使用して、モデルの重み、データセット、およびその他のファイルやディレクトリーを追跡します。Artifacts は W&B に保存され、他の runs でダウンロードまたは使用できます。詳細と例は、こちらのセクションのレポートで確認できます。Artifacts は通常、project オブジェクトからアクセスします:

  • project.artifactVersion(): プロジェクト内の特定の名前とバージョンのアーティファクトバージョンを返します
  • project.artifact(""): プロジェクト内の特定の名前のアーティファクトを返します。その後、.versions を使用してこのアーティファクトのすべてのバージョンのリストを取得できます
  • project.artifactType(): プロジェクト内の特定の名前の artifactType を返します。その後、.artifacts を使用して、このタイプを持つすべてのアーティファクトのリストを取得できます
  • project.artifactTypes: プロジェクト内のすべてのアーティファクトタイプのリストを返します

8.1 - オブジェクトを埋め込む

W&B の Embedding Projector を使用すると、ユーザー は PCA、UMAP、t-SNE などの一般的な次元削減アルゴリズムを用いて多次元埋め込みを 2D 平面上にプロットできます。

Embeddings はオブジェクト(人物、画像、投稿、単語など)を数字のリストで表現するために使用されます。これを ベクトル と呼ぶこともあります。機械学習やデータサイエンスのユースケースでは、Embeddings は様々な手法を用いて生成でき、幅広いアプリケーションで利用されます。このページでは、読者が Embeddings に精通しており、W&B 内でそれらを視覚的に分析することに関心があることを前提としています。

Embedding の例

ハローワールド

W&B を使用すると、wandb.Table クラスを使用して Embeddings をログできます。以下は、5 次元からなる 3 つの Embeddings の例です。

import wandb

wandb.init(project="embedding_tutorial")
embeddings = [
    # D1   D2   D3   D4   D5
    [0.2, 0.4, 0.1, 0.7, 0.5],  # embedding 1
    [0.3, 0.1, 0.9, 0.2, 0.7],  # embedding 2
    [0.4, 0.5, 0.2, 0.2, 0.1],  # embedding 3
]
wandb.log(
    {"embeddings": wandb.Table(columns=["D1", "D2", "D3", "D4", "D5"], data=embeddings)}
)
wandb.finish()

上記のコードを実行すると、W&B ダッシュボードにデータを含む新しいテーブルが作成されます。右上のパネルセレクタから 2D Projection を選択して Embeddings を 2 次元でプロットすることができます。デフォルトで賢明な設定が自動的に選択されますが、設定メニューから簡単に上書きできます。この例では、利用可能な 5 つの数値次元をすべて自動的に使用しています。

数字のMNIST

上記の例では Embeddings の基本的なログ方法を示しましたが、通常はもっと多くの次元とサンプルを扱います。UCI の手書き数字データセット UCI ML hand-written digits datasetを使って、SciKit-Learn を通じて提供される MNIST 数字データセットを考えてみましょう。このデータセットには 64 次元を持つ 1797 のレコードが含まれています。この問題は10クラスの分類ユースケースです。また、可視化のために入力データを画像に変換することもできます。

import wandb
from sklearn.datasets import load_digits

wandb.init(project="embedding_tutorial")

# データセットをロードする
ds = load_digits(as_frame=True)
df = ds.data

# "target" カラムを作成する
df["target"] = ds.target.astype(str)
cols = df.columns.tolist()
df = df[cols[-1:] + cols[:-1]]

# "image" カラムを作成する
df["image"] = df.apply(
    lambda row: wandb.Image(row[1:].values.reshape(8, 8) / 16.0), axis=1
)
cols = df.columns.tolist()
df = df[cols[-1:] + cols[:-1]]

wandb.log({"digits": df})
wandb.finish()

上記のコードを実行した後、再び UI にテーブルが表示されます。 2D Projection を選択することで、Embedding の定義、色付け、アルゴリズム(PCA, UMAP, t-SNE)、アルゴリズムのパラメータ、さらにはオーバーレイ(この場合、点の上にマウスを置くと画像が表示されます)の設定を行うことができます。この特定のケースでは、すべて「スマートデフォルト」が設定されており、2D Projection をクリックするだけで非常に類似したものが見えるはずです。(この例を試してみてください)。

ログオプション

Embeddings はさまざまなフォーマットでログすることができます:

  1. 単一の埋め込みカラム: データがすでに「行列」形式になっていることが多いです。この場合、カラムのデータ型は list[int], list[float], または np.ndarray にすることができます。
  2. 複数の数値カラム: 上記の2つの例では、各次元に対してカラムを作成するこの方法を使用します。現在、セルには Python の int または float が受け入れられます。

Single Embedding Column Many Numeric Columns

さらに、他のすべてのテーブルと同様に、テーブルを構築する方法について多くのオプションがあります:

  1. データフレーム から直接 wandb.Table(dataframe=df) を使用して
  2. データのリスト から直接 wandb.Table(data=[...], columns=[...]) を使用して
  3. 行単位で段階的に テーブルを構築する(コード内にループがある場合に最適)。table.add_data(...) を使ってテーブルに行を追加します。
  4. テーブルに 埋め込みカラム を追加する(Embedding の形式で予測のリストがある場合に最適): table.add_col("col_name", ...)
  5. 計算済みカラム を追加する(関数やモデルをテーブル全体に適用したい場合に最適): table.add_computed_columns(lambda row, ndx: {"embedding": model.predict(row)})

プロットオプション

2D Projection を選択した後、ギアアイコンをクリックしてレンダリング設定を編集できます。上記のカラムの選択に加えて、興味のあるアルゴリズム(および必要なパラメータ)を選ぶことができます。以下に、UMAP と t-SNE の各パラメータが表示されています。