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

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

Line plots

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

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

折れ線グラフの設定を編集する

このセクションでは、個々の折れ線グラフ パネル、セクション内のすべての折れ線グラフ パネル、またはワークスペース内のすべての折れ線グラフ パネルの設定を編集する方法について説明します。

個々の折れ線グラフ

折れ線グラフの個々の設定は、セクションまたはワークスペースの折れ線グラフの設定よりも優先されます。折れ線グラフをカスタマイズするには:

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

折れ線グラフの設定

折れ線グラフでは、次の設定を構成できます。

日付: プロットのデータの表示に関する詳細を構成します。

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

グループ化: プロットで run をグループ化および集計するかどうか、またその方法を構成します。

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

チャート: パネル、X 軸、Y 軸、および -軸のタイトルを指定し、凡例の表示/非表示を切り替え、その位置を構成します。

凡例: パネルの凡例の外観をカスタマイズします (有効になっている場合)。

  • 凡例: プロットの凡例の各線の凡例のフィールド。
  • 凡例テンプレート: 凡例の完全にカスタマイズ可能なテンプレートを定義します。線のプロットの上部にあるテンプレートに表示するテキストと変数、およびマウスをプロットの上に置いたときに表示される凡例を正確に指定します。

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

  • Y 軸式: 計算されたメトリクスをグラフに追加します。ログに記録されたメトリクスのいずれか、およびハイパーパラメーターなどの設定値を使用して、カスタム線を計算できます。
  • X 軸式: カスタム式を使用して計算された値を使用するように X 軸をリスケールします。役立つ変数には、デフォルトの X 軸の **_step** が含まれ、要約値を参照するための構文は ${summary:value} です。

セクション内のすべての折れ線グラフ

セクション内のすべての折れ線グラフのデフォルト設定をカスタマイズするには、折れ線グラフのワークスペース設定をオーバーライドします。

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

ワークスペース内のすべての折れ線グラフ

ワークスペース内のすべての折れ線グラフのデフォルト設定をカスタマイズするには:

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

    • 表示設定 セクションの詳細については、ワークスペースの表示設定 を参照してください。ワークスペース レベルでは、折れ線グラフのデフォルトの ズーム の振る舞いを構成できます。この設定は、一致する X 軸キーを持つ折れ線グラフ間でズームを同期するかどうかを制御します。デフォルトでは無効になっています。

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

いくつかの異なる Experiments があり、プロット上の値の平均を表示する場合は、テーブルのグループ化機能を使用できます。run テーブルの上にある [グループ] をクリックし、[すべて] を選択して、グラフに平均値を表示します。

平均化する前のグラフは次のようになります。

次の画像は、グループ化された線を使用して runs 全体の平均値を表すグラフを示しています。

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

wandb.log を使用して、PyTorch テンソルを含む NaN 値を折れ線グラフにプロットすることもできます。例:

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

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

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

折れ線グラフの色を変更する

runs のデフォルトの色が比較に役立たない場合があります。これを克服するために、wandb には、手動で色を変更できる 2 つのインスタンスが用意されています。

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

Runs に割り当てられたランダムな色

いずれかの色をクリックすると、カラー パレットが表示され、そこから必要な色を手動で選択できます。

カラー パレット
  1. 設定を編集するパネルの上にマウスを置きます。
  2. 表示される鉛筆アイコンを選択します。
  3. [凡例] タブを選択します。

異なる X 軸で可視化する

実験にかかった絶対時間を確認したり、実験が実行された曜日を確認したりする場合は、X 軸を切り替えることができます。ステップから相対時間、そして Wall Time に切り替える例を次に示します。

面グラフ

折れ線グラフの設定の [詳細設定] タブで、異なるプロット スタイルをクリックして、面グラフまたはパーセンテージ面グラフを取得します。

ズーム

長方形をクリックしてドラッグし、垂直方向と水平方向に同時にズームします。これにより、X 軸と Y 軸のズームが変更されます。

チャートの凡例を非表示にする

この単純なトグルを使用して、折れ線グラフの凡例をオフにします。

1 - Line plot reference

X軸

Selecting X-Axis

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

Y軸の変数

Y軸の変数には、wandb.log でログに記録した値を設定できます。ただし、数値、数値の配列、または数値のヒストグラムをログに記録している必要があります。変数のポイント数が1500を超える場合、W&B は1500ポイントまでサンプルダウンします。

X範囲とY範囲

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

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

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

最大 run /グループ数

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

凡例

チャートの凡例を制御して、ログに記録した任意の run の任意の設定値と、作成時間や run を作成した ユーザー など、run からのメタデータを表示できます。

例:

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

[[ ]] 内に値を設定すると、チャートにカーソルを合わせたときに、ポイント固有の値をクロスヘアに表示できます。たとえば、\[\[ $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-精度などの メトリクス から派生した値をプロットできます。現在、単一の メトリクス をプロットしている場合にのみ機能します。単純な算術式(+、-、*、/、%)、および累乗の場合は ** を実行できます。

プロットスタイル

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

折れ線グラフ:

面グラフ:

パーセンテージ面グラフ:

2 - Point aggregation

Data Visualization の精度とパフォーマンスを向上させるために、折れ線グラフ内でポイント集約メソッドを使用します。ポイント集約モードには、full fidelity(完全精度)random sampling(ランダムサンプリング) の2種類があります。W&B はデフォルトで完全精度モードを使用します。

Full fidelity

完全精度モードを使用すると、W&B はデータポイントの数に基づいて、x軸を動的なバケットに分割します。次に、各バケット内の最小値、最大値、平均値を計算し、折れ線グラフのポイント集約をレンダリングします。

ポイント集約に完全精度モードを使用する主な利点は3つあります。

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

最小点と最大点のレンダリング方法を設定する

折れ線グラフの周りの影付き領域で最小値と最大値を表示または非表示にします。

次の画像は、青い折れ線グラフを示しています。水色の影付き領域は、各バケットの最小値と最大値を表しています。

折れ線グラフで最小値と最大値をレンダリングするには、次の3つの方法があります。

  • Never: 最小/最大値は影付きの領域として表示されません。x軸バケット全体の集約された線のみを表示します。
  • On hover: 最小/最大値の影付き領域は、チャートにカーソルを合わせると動的に表示されます。このオプションを使用すると、ビューがすっきりした状態に保たれ、範囲をインタラクティブに検査できます。
  • Always: 最小/最大影付き領域は、チャート内のすべてのバケットに対して常に表示され、常に値の全範囲を視覚化できます。チャートで多くの Runs が可視化されている場合、これは視覚的なノイズになる可能性があります。

デフォルトでは、最小値と最大値は影付き領域として表示されません。影付き領域オプションのいずれかを表示するには、次の手順に従います。

  1. W&B の Projects に移動します。
  2. 左側のタブで Workspace アイコンを選択します。
  3. 画面の右上隅にある歯車アイコンを、Add panels ボタンの左側の横にあるアイコンを選択します。
  4. 表示される UI スライダーから、Line plots を選択します。
  5. Point aggregation セクション内で、Show min/max values as a shaded area ドロップダウンメニューから On over または Always を選択します。
  1. W&B の Projects に移動します。
  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 の Projects に移動します。
  2. 左側のタブで Workspace アイコンを選択します。
  3. オプションで、折れ線グラフ パネルを ワークスペース に追加するか、既存の折れ線グラフ パネルに移動します。
  4. クリックしてドラッグし、ズームインする特定の領域を選択します。

Random sampling

ランダムサンプリングは、1500個のランダムにサンプリングされたポイントを使用して折れ線グラフをレンダリングします。ランダムサンプリングは、多数のデータポイントがある場合にパフォーマンス上の理由で役立ちます。

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

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

  1. W&B の Projects に移動します。
  2. 左側のタブで Workspace アイコンを選択します。
  3. 画面の右上隅にある歯車アイコンを、Add panels ボタンの左側の横にあるアイコンを選択します。
  4. 表示される UI スライダーから、Line plots を選択します。
  5. Point aggregation セクションから Random sampling を選択します。
  1. W&B の Projects に移動します。
  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]

3 - Smooth line plots

折れ線グラフでは、スムージングを使ってノイズの多いデータ のトレンドを確認します。

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;
});

これは アプリ内 では次のようになります。

ガウシアン平滑化

ガウシアン平滑化 (またはガウシアン カーネル平滑化) は、点の加重平均を計算します。ここで、重みは平滑化 パラメータ として指定された標準偏差を持つガウス分布に対応します。を参照してください。平滑化された 値 は、すべての入力x 値 に対して計算されます。

TensorBoard の 振る舞い と一致させることを気にしない場合は、ガウシアン平滑化は平滑化に適した標準的な選択肢です。指数移動平均とは異なり、値の前後に発生する点に基づいて点が平滑化されます。

これは アプリ内 では次のようになります。

移動平均

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

点 がx軸上で不均等に配置されている場合は、ガウシアン平滑化の使用を検討してください。

次の画像は、実行中のアプリが アプリ内 でどのように見えるかを示しています。

指数移動平均 (非推奨)

TensorBoard EMAアルゴリズムは、一貫した点密度 (x軸の単位あたりにプロットされる点の数) を持たない同じチャート上の複数の線を正確に平滑化できないため、非推奨になりました。

指数移動平均は、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);

これは アプリ内 では次のようになります。

実装の詳細

すべての平滑化アルゴリズムはサンプリングされた データ で実行されます。つまり、1500を超える点を ログ に記録すると、平滑化アルゴリズムは サーバー から点がダウンロードされた に実行されます。平滑化アルゴリズムの目的は、 データ 内のパターンをすばやく見つけるのに役立つことです。多数の ログ に記録された点 を持つ メトリクス で正確な平滑化された 値 が必要な場合は、API を介して メトリクス をダウンロードし、独自の平滑化 メソッド を実行する方が良い場合があります。

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

デフォルトでは、元の平滑化されていない データ が背景に薄い線として表示されます。これをオフにするには、[元のデータを表示] トグルをクリックします。