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

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

レポート

機械学習プロジェクトのためのプロジェクト管理とコラボレーションツール

W&B Reportsを使って:

  • Runsを整理する。
  • 可視化を埋め込み、自動化する。
  • 学びを説明する。
  • LaTeXのzipファイルやPDFとして、共同作業者と更新を共有する。

次の画像は、トレーニング中にW&Bにログされたメトリクスから作成されたレポートの一部を示しています。

上記の画像が撮影されたレポートはこちらからご覧いただけます。

仕組み

簡単なクリック操作で共同レポートを作成することができます。

  1. W&B App内のW&Bプロジェクトワークスペースに移動します。
  2. ワークスペースの右上にあるCreate reportボタンをクリックします。
  1. Create Reportと題したモーダルが表示されます。レポートに追加したいチャートとパネルを選択してください。(後でチャートとパネルを追加または削除することができます)。
  2. Create reportをクリックします。
  3. レポートを希望の状態に編集します。
  4. Publish to projectをクリックします。
  5. Shareボタンをクリックし、共同作業者とレポートを共有します。

W&B Python SDKを使用して、インタラクティブにまたプログラム的にReportsを作成する方法については、Create a reportページをご覧ください。

開始方法

ユースケースに応じて、W&B Reportsを開始するための以下のリソースを探索してください:

ベストプラクティスとヒント

Experimentsとログに関するベストプラクティスとヒントについては、Best Practices: Reportsをご覧ください。

1 - レポートを作成する

W&B レポートは、App UI を使用するか Weights & Biases SDK を使ってプログラムで作成します。

レポートを作成するには、W&B App UI をインタラクティブに使用するか、W&B Python SDK を使用してプログラムで行います。

  1. W&B App でプロジェクトワークスペースに移動します。

  2. ワークスペースの右上隅にある Create report をクリックします。

  3. モーダルが表示されます。最初に使用したいチャートを選択します。レポートのインターフェースから後でチャートを追加または削除することができます。

  4. Filter run sets オプションを選択すると、新しい run がレポートに追加されるのを防げます。このオプションをオンまたはオフに切り替えることができます。Create report をクリックすると、レポートタブにドラフトレポートが表示され、作業を続けることができます。

  1. W&B App でプロジェクトワークスペースに移動します。

  2. プロジェクト内の Reports タブ(クリップボードの画像)を選択します。

  3. レポートページで Create Report ボタンを選択します。

wandb ライブラリを使用してプログラムでレポートを作成します。

  1. W&B SDK と Workspaces API をインストールします:

    pip install wandb wandb-workspaces
    
  2. 次に、ワークスペースをインポートします。

    import wandb
    import wandb_workspaces.reports.v2 as wr
    
  3. wandb_workspaces.reports.v2.Report を使用してレポートを作成します。Report Class Public API (wandb.apis.reports) を使ってレポートのインスタンスを作成します。プロジェクトに名前を指定します。

    report = wr.Report(project="report_standard")
    
  4. レポートを保存します。レポートは、save() メソッドを呼び出すまで W&B サーバーにアップロードされません。

    report.save()
    

App UI を使用してインタラクティブに、またはプログラムでレポートを編集する方法については、Edit a report を参照してください。

2 - レポートを編集する

App UI を使用してインタラクティブに、または W&B SDK を使用してプログラムで レポート を編集します。

レポートを App UI でインタラクティブに、または W&B SDK を使ってプログラムで編集します。

Reports は ブロック で構成されます。ブロックはレポートの本体を構成します。これらのブロック内でテキスト、画像、組み込みの可視化、実験と run のプロット、パネルグリッドを追加できます。

パネルグリッド は、パネルと run セット を保持する特定の種類のブロックです。Run セットは W&B のプロジェクトにログされる run のコレクションです。パネルは run セット データの可視化を行います。

プロットを追加する

各パネルグリッドには一連の run セットと一連のパネルがあります。このセクションの下部にある run セットで、グリッド内のパネルに表示されるデータを制御します。異なる run セットからデータを取得するチャートを追加する場合は、新しいパネルグリッドを作成してください。

レポートにスラッシュ(/)を入力して、ドロップダウンメニューを表示します。Add panel を選択してパネルを追加します。W&B でサポートされている任意のパネルを追加できます。例えば、ラインプロット、散布図や並行座標チャートなどです。

Add charts to a report

SDK を使用してプログラムでレポートにプロットを追加します。PanelGrid Public API クラスの panels パラメータに、1つ以上のプロットまたはチャートのオブジェクトのリストを渡します。対応する Python クラスを使用してプロットまたはチャートのオブジェクトを作成します。

以下の例では、ラインプロットと散布図の作成方法を示しています。

import wandb import wandb_workspaces.reports.v2 as wr

report = wr.Report( project=“report-editing”, title=“An amazing title”, description=“A descriptive description.”, )

blocks = [ wr.PanelGrid( panels=[ wr.LinePlot(x=“time”, y=“velocity”), wr.ScatterPlot(x=“time”, y=“acceleration”), ] ) ]

report.blocks = blocks report.save()

プログラムでレポートに追加できるプロットやチャートの詳細については、wr.panels を参照してください。

Run セットを追加する

App UI または W&B SDK を使用して、プロジェクトから run セットを追加します。

レポートにスラッシュ(/)を入力して、ドロップダウンメニューを表示します。ドロップダウンから Panel Grid を選択します。これにより、レポートが作成されたプロジェクトから自動的に run セットがインポートされます。

wr.Runset() および wr.PanelGrid クラスを使用してプロジェクトから run セットを追加します。以下の手順で run セットの追加方法を示します:

  1. wr.Runset() オブジェクト インスタンスを作成します。プロジェクト パラメータのために、run セットを含むプロジェクトの名前を指定し、エンティティ パラメータのためにプロジェクトを所有するエンティティを指定します。
  2. wr.PanelGrid() オブジェクト インスタンスを作成します。1つ以上の runset オブジェクトを runsets パラメータに渡します。
  3. 1つ以上の wr.PanelGrid() オブジェクト インスタンスをリストに保存します。
  4. パネルグリッド インスタンスのリストを使用して、レポート インスタンス ブロック属性を更新します。

import wandb import wandb_workspaces.reports.v2 as wr

report = wr.Report( project=“report-editing”, title=“An amazing title”, description=“A descriptive description.”, )

panel_grids = wr.PanelGrid( runsets=[wr.RunSet(project="", entity="")] )

report.blocks = [panel_grids] report.save()

ひとつの SDK 呼び出しで run セットとパネルを追加することもできます:

import wandb

report = wr.Report( project=“report-editing”, title=“An amazing title”, description=“A descriptive description.”, )

panel_grids = wr.PanelGrid( panels=[ wr.LinePlot( title=“line title”, x=“x”, y=[“y”], range_x=[0, 100], range_y=[0, 100], log_x=True, log_y=True, title_x=“x axis title”, title_y=“y axis title”, ignore_outliers=True, groupby=“hyperparam1”, groupby_aggfunc=“mean”, groupby_rangefunc=“minmax”, smoothing_factor=0.5, smoothing_type=“gaussian”, smoothing_show_original=True, max_runs_to_show=10, plot_type=“stacked-area”, font_size=“large”, legend_position=“west”, ), wr.ScatterPlot( title=“scatter title”, x=“y”, y=“y”, # z=‘x’, range_x=[0, 0.0005], range_y=[0, 0.0005], # range_z=[0,1], log_x=False, log_y=False, # log_z=True, running_ymin=True, running_ymean=True, running_ymax=True, font_size=“small”, regression=True, ), ], runsets=[wr.RunSet(project="", entity="")], )

report.blocks = [panel_grids] report.save()

Run セットをフリーズする

レポートはプロジェクトから最新のデータを表示するために run セットを自動的に更新します。しかし、レポート内の run セットを保持するには、その run セットをフリーズ することができます。Run セットをフリーズすると、特定の時点のレポート内の run セットの状態が保持されます。

レポートを表示する際に run セットをフリーズするには、Filter ボタンの近くにあるスノーフレーク アイコンをクリックします。

コード ブロックを追加する

レポートにコードブロックを App UI でインタラクティブに、または W&B SDK で追加します。

レポートにスラッシュ(/)を入力して、ドロップダウン メニューを表示します。ドロップダウンから Code を選択します。

コード ブロックの右側にあるプログラミング言語の名前を選択すると、ドロップダウンが展開されます。利用可能なプログラミング言語の構文を選択してください。Javascript、Python、CSS、JSON、HTML、Markdown、YAML から選べます。

wr.CodeBlock クラスを使用してコード ブロックをプログラムで作成します。言語とコードにそれぞれ表示したい言語名とコードを指定します。

たとえば、以下の例では、YAML ファイルのリストを示しています。

import wandb import wandb_workspaces.reports.v2 as wr

report = wr.Report(project=“report-editing”)

report.blocks = [ wr.CodeBlock( code=[“this:”, “- is”, “- a”, “cool:”, “- yaml”, “- file”], language=“yaml” ) ]

report.save()

これにより、次のようなコードブロックがレンダリングされます:

this:

  • is
  • a cool:
  • yaml
  • file

以下の例では、Python コードブロックを示しています:

report = wr.Report(project=“report-editing”)

report.blocks = [wr.CodeBlock(code=[“Hello, World!”], language=“python”)]

report.save()

これにより、次のようなコードブロックがレンダリングされます:

Hello, World!

マークダウンを追加する

レポートにマークダウンを App UI でインタラクティブに、または W&B SDK で追加します。

レポートにスラッシュ(/)を入力して、ドロップダウン メニューを表示します。ドロップダウンから Markdown を選択します。

wandb.apis.reports.MarkdownBlock クラスを使用して、プログラムでマークダウンブロックを作成します。text パラメータに文字列を渡します:

import wandb import wandb_workspaces.reports.v2 as wr

report = wr.Report(project=“report-editing”)

report.blocks = [ wr.MarkdownBlock(text=“Markdown cell with italics and bold and $e=mc^2$”) ]

これにより、次のようなマークダウン ブロックがレンダリングされます:

HTML要素を追加する

レポートに HTML 要素を App UI でインタラクティブに、または W&B SDK で追加します。

レポートにスラッシュ(/)を入力して、ドロップダウン メニューを表示します。ドロップダウンからテキスト ブロックの種類を選択します。例として、H2 見出しブロックを作成するには、Heading 2 のオプションを選択します。

1つ以上の HTML 要素のリストを wandb.apis.reports.blocks 属性に渡します。以下の例では、H1、H2、および無順リストを作成する方法を示しています:

import wandb import wandb_workspaces.reports.v2 as wr

report = wr.Report(project=“report-editing”)

report.blocks = [ wr.H1(text=“How Programmatic Reports work”), wr.H2(text=“Heading 2”), wr.UnorderedList(items=[“Bullet 1”, “Bullet 2”]), ]

report.save()

これにより、次のような HTML 要素がレンダリングされます:

リッチメディアリンクを埋め込む

レポート内にリッチメディアを App UI で、または W&B SDK で埋め込みます。

URL をレポートにコピーアンドペーストして、リッチメディアをレポート内に埋め込みます。以下のアニメーションは、Twitter、YouTube、および SoundCloud からの URL をコピーアンドペーストする方法を示しています。

Twitter

レポートにツイートリンク URL をコピーして貼り付け、ツイートをレポート内に表示します。

YouTube

レポート内にビデオを埋め込むために YouTube ビデオ URL リンクをコピーアンドペーストします。

SoundCloud

SoundCloud のリンクをコピーアンドペーストして、オーディオファイルをレポート内に埋め込みます。

1 つ以上の埋め込みメディア オブジェクトのリストを wandb.apis.reports.blocks 属性に渡します。以下の例では、ビデオと Twitter メディアをレポートに埋め込む方法を示しています:

import wandb import wandb_workspaces.reports.v2 as wr

report = wr.Report(project=“report-editing”)

report.blocks = [ wr.Video(url=“https://www.youtube.com/embed/6riDJMI-Y8U”), wr.Twitter( embed_html=’

\n' ), ] report.save()

パネルグリッドの複製と削除

再利用したいレイアウトがある場合は、パネルグリッドを選択してコピー&ペーストすることで、同じレポート内に複製したり、別のレポートに貼り付けることができます。

パネルグリッドセクション全体を強調表示するには、右上隅のドラッグハンドルを選択します。パネルグリッド、テキスト、見出しなど、レポート内の領域をクリックしてドラッグして強調表示および選択します。

パネルグリッドを選択し、キーボードで delete を押してパネルグリッドを削除します。

レポート内のヘッダーを折りたたんで整理する

テキストブロック内のコンテンツを非表示にするために、レポート内のヘッダーを折りたたみます。レポートが読み込まれると、展開されているヘッダーのみがコンテンツを表示します。レポート内でヘッダーを折りたたむことで、コンテンツを整理し、過剰なデータの読み込みを防ぐことができます。以下の gif はその手順を示しています。

Collapsing headers in a report.

複数次元の関係を可視化する

複数次元の関係を効果的に可視化するために、変数の 1 つを示すためにカラーバリエーションを使用します。これにより明瞭さが向上し、パターンが解釈しやすくなります。

  1. カラーグラデーションで表現する変数を選択します(例: 罰金スコア、学習率など)。これにより、罰金(色)がトレーニング時間 (x 軸) を経て報酬/副作用 (y 軸) とどのように相互作用するかをより明確に理解できます。
  2. 主要なトレンドを強調します。特定の run グループにカーソルを合わせると、それが可視化で強調表示されます。

3 - レポートを共同で作成する

W&B Reports を同僚やチームメンバーと共有してコラボレーションしましょう。

レポートを保存したら、Share ボタンを選択してコラボレーションできます。Edit ボタンを選択すると、レポートの下書きコピーが作成されます。下書きレポートは自動保存されます。変更を共有レポートに公開するには、Save to report を選択します。

編集の競合が発生すると警告通知が表示されます。これは、あなたと他のコラボレーターが同じレポートを同時に編集した場合に発生する可能性があります。警告通知は、編集の競合を解決するためのガイドとなります。

『Public』プロジェクト内でのレポート共有モーダル

レポートにコメントする

レポート内のパネルにあるコメントボタンをクリックして、そのパネルに直接コメントを追加します。

パネルにコメントを追加する

4 - レポートをクローンしてエクスポートする

W&B レポートを PDF または LaTeX としてエクスポートします。

レポートをエクスポート

レポートを PDF または LaTeX としてエクスポートします。レポート内でケバブアイコンを選択し、ドロップダウンメニューを展開します。Download を選択し、PDF または LaTeX の出力形式を選択します。

レポートをクローン

レポート内でケバブアイコンを選択し、ドロップダウンメニューを展開します。Clone this report ボタンを選択します。モーダルでクローンされたレポートの保存先を選択します。Clone report を選択します。

プロジェクトのテンプレートと形式を再利用するためにレポートをクローンします。チームのアカウント内でプロジェクトをクローンした場合、クローンされたプロジェクトはチームに表示されます。個人のアカウント内でプロジェクトをクローンした場合、そのプロジェクトはそのユーザーのみに表示されます。

テンプレートとして使用するために URL からレポートをロードします。

report = wr.Report(
    project=PROJECT, title="Quickstart Report", description="That was easy!"
)  # 作成
report.save()  # 保存
new_report = wr.Report.from_url(report.url)  # ロード

new_report.blocks 内のコンテンツを編集します。

pg = wr.PanelGrid(
    runsets=[
        wr.Runset(ENTITY, PROJECT, "First Run Set"),
        wr.Runset(ENTITY, PROJECT, "Elephants Only!", query="elephant"),
    ],
    panels=[
        wr.LinePlot(x="Step", y=["val_acc"], smoothing_factor=0.8),
        wr.BarPlot(metrics=["acc"]),
        wr.MediaBrowser(media_keys="img", num_columns=1),
        wr.RunComparer(diff_only="split", layout={"w": 24, "h": 9}),
    ],
)
new_report.blocks = (
    report.blocks[:1] + [wr.H1("Panel Grid Example"), pg] + report.blocks[1:]
)
new_report.save()

5 - レポートを埋め込む

W&B レポートを直接 Notion に埋め込むか、HTML IFrame 要素を使用します。

HTML iframe 要素

レポート内の右上にある Share ボタンを選択します。モーダルウィンドウが表示されます。このモーダルウィンドウ内で Copy embed code を選択します。コピーされたコードは、インラインフレーム (IFrame) HTML 要素内でレンダリングされます。コピーしたコードを任意の iframe HTML 要素に貼り付けます。

Confluence

次のアニメーションは、Confluence の IFrame セル内でレポートへの直接リンクを挿入する方法を示しています。

Notion

次のアニメーションは、Notion ドキュメント内で Embed ブロックを使ってレポートを挿入し、そのレポートの埋め込みコードを使用する方法を示しています。

Gradio

gr.HTML 要素を使用して、Gradio Apps 内で W&B Reports を埋め込み、Hugging Face Spaces で利用することができます。

import gradio as gr


def wandb_report(url):
    iframe = f'<iframe src={url} style="border:none;height:1024px;width:100%">'
    return gr.HTML(iframe)


with gr.Blocks() as demo:
    report = wandb_report(
        "https://wandb.ai/_scott/pytorch-sweeps-demo/reports/loss-22-10-07-16-00-17---VmlldzoyNzU2NzAx"
    )
demo.launch()

6 - プロジェクト間で run を比較する

異なる2つのプロジェクトのrunをプロジェクト間レポートで比較する。

クロスプロジェクト レポートを使用して、異なる 2 つのプロジェクトからの run を比較します。run セット テーブル内のプロジェクト セレクターを使用してプロジェクトを選択します。

異なるプロジェクト間での run の比較

このセクションの可視化は、最初のアクティブな run セットから列を引き出します。必要なメトリクスが線プロットに表示されない場合は、その列が利用可能であることを確認してください。

この機能は時系列線上の履歴データをサポートしていますが、異なるプロジェクトから異なるサマリー メトリクスを引き出すことはサポートしていません。つまり、別のプロジェクトでのみログに記録された列から散布図を作成することはできません。

2 つのプロジェクトからの run を比較する必要があるが、列が動作していない場合は、1 つのプロジェクトの run にタグを追加してから、それらの run を他のプロジェクトに移動します。各プロジェクトからの run のみをフィルタリングすることはできますが、レポートには両方の run セットのすべての列が含まれます。

ビュー専用レポートリンク

プライベートプロジェクトまたはチーム プロジェクトにあるレポートへのビュー専用リンクを共有します。

ビュー専用レポートリンクは、URL に秘密のアクセストークンを追加するため、リンクを開くと誰でもページを表示できます。誰でも最初にログインせずにマジックリンクを使用してレポートを表示できます。W&B Local プライベート クラウド インストールのお客様の場合、これらのリンクはファイアウォールの内側に残るため、プライベート インスタンスへのアクセス ビュー専用リンクへのアクセスを持つチームのメンバーのみがレポートを表示できます。

ビュー専用モード では、ログインしていない人でもチャートを見たり、ツールチップを見たり、ズームイン・アウトしてチャートを閲覧したり、テーブル内の列をスクロールしたりすることができます。ビュー モードの場合、新しいチャートや新しいテーブル クエリを作成してデータを探ることはできません。レポートリンクのビュー専用訪問者は run をクリックして run ページに移動することはできません。また、ビュー専用訪問者は共有モーダルを見ることはできず、代わりに「ビュー専用アクセスでは共有できません」というツールチップがホバー中に表示されます。

グラフをレポートに送信

ワークスペースからレポートにグラフを送信して、進捗を追跡します。 レポートにコピーしたいチャートまたはパネルのドロップダウン メニューをクリックし、Add to report をクリックして送信先のレポートを選択します。

7 - 例のレポート

レポートギャラリー

ノート: 簡単なサマリーで可視化を追加

重要な観察結果や将来の作業に関するアイデア、プロジェクトの開発におけるマイルストーンを捉えましょう。レポート内のすべての実験の run は、そのパラメータ、メトリクス、ログ、コードにリンクされるため、作業の全体的な文脈を保存できます。

テキストを書き留め、関連するチャートを引き入れてインサイトを示しましょう。

トレーニング時間の比較を共有する方法については、What To Do When Inception-ResNet-V2 Is Too Slow W&B Report をご覧ください。

複雑なコードベースからの最高の例を保存し、簡単に参照したり、将来の対話のために保存します。Lyft のデータセットから LIDAR ポイントクラウドを可視化し、3D バウンディングボックスで注釈を付ける方法については、LIDAR point clouds W&B Report をご覧ください。

コラボレーション: 同僚と学びを共有する

プロジェクトの開始方法を説明し、これまでに観察したことを共有し、最新の学びを統合します。同僚は、任意のパネルやレポートの最後にコメントを記入して、詳細を提案したり議論したりすることができます。

同僚が自分で探索し、追加のインサイトを得て、次のステップをよりよく計画できるように、動的な設定を含めます。この例では、3 種類の実験を独立して可視化したり、比較したり、平均化したりできます。

初めての run とベンチマークの観察を共有する方法については、SafeLife benchmark experiments W&B Report をご覧ください。

スライダーや設定可能なメディアパネルを使用して、モデルの結果やトレーニングの進捗を示します。スライダーを使用した W&B Report の例については、Cute Animals and Post-Modern Style Transfer: StarGAN v2 for Multi-Domain Image Synthesis レポートをご覧ください。

作業ログ: 試したことを記録し、次のステップを計画する

実験に関する考えや学び、注意点、次のステップをプロジェクトを進めながら書き留め、一箇所に整理しておきましょう。これにより、スクリプトを超えた重要な部分をすべて"文書化"することができます。学びをレポートする方法についての例としては、Who Is Them? Text Disambiguation With Transformers W&B Report をご覧ください。

プロジェクトのストーリーを語り、後からモデルがどのように、そしてなぜ開発されたのかを理解するために参照することができます。The View from the Driver’s Seat W&B Report では、学びをレポートする方法をご覧いただけます。

OpenAI Robotics チームが W&B Reports を使用して大規模な機械学習プロジェクトを実行した方法を探るために、W&B Reports がどのように使用されたかの例については、Learning Dexterity End-to-End Using W&B Reports をご覧ください。