Reports
機械学習 プロジェクト のための プロジェクト 管理とコラボレーション ツール
W&B Reports の用途:
Runs の整理。
可視化の埋め込みと自動化。
学び の記述。
コラボレーターとの更新情報の共有(LaTeX zip ファイルまたは PDF として)。
次の画像は、トレーニングの過程で W&B に ログ された メトリクス から作成された レポート のセクションを示しています。
上記の画像が取得された レポート は こちら からご覧ください。
仕組み
数回クリックするだけで、コラボレーティブな レポート を作成できます。
W&B App で W&B project workspace に移動します。
workspace の右上隅にある [Create report ] (レポート の作成) ボタンをクリックします。
[Create Report ] (レポート の作成) という タイトル のモーダルが表示されます。 レポート に追加するグラフと パネル を選択します (グラフと パネル は後で追加または削除できます)。
[Create report ] (レポート の作成) をクリックします。
レポート を希望の状態に編集します。
[Publish to project ] (project に公開) をクリックします。
[Share ] (共有) ボタンをクリックして、コラボレーターと レポート を共有します。
W&B Python SDK を使用して インタラクティブ およびプログラムで レポート を作成する方法の詳細については、レポート の作成 ページを参照してください。
開始方法
ユースケース に応じて、次のリソースを調べて W&B Reports を開始してください。
推奨される ベストプラクティス とヒント
Experiments と ログ の ベストプラクティス とヒントについては、Best Practices: Reports を参照してください。
1 - Create a report
W&B の App UI を使用するか、Weights & Biases SDK を使用してプログラムで W&B Report を作成します。
W&B App UI または W&B Python SDK を使用して、プログラムでインタラクティブに report を作成します。
App UI
Report tab
W&B Python SDK
W&B App で project の workspace に移動します。
workspace の右上隅にある [Create report ] をクリックします。
モーダルが表示されます。最初に表示するグラフを選択します。グラフは report インターフェイスから後で追加または削除できます。
[Filter run sets ] オプションを選択して、新しい run が report に追加されないようにします。このオプションはオン/オフを切り替えることができます。[Create report ] をクリックすると、下書き report が report タブで使用できるようになり、作業を続けることができます。
W&B App で project の workspace に移動します。
project の [Reports ] タブ (クリップボードの画像) を選択します。
report ページで [Create Report ] ボタンを選択します。
wandb
ライブラリを使用して、プログラムで report を作成します。
W&B SDK と Workspaces API をインストールします。
pip install wandb wandb-workspaces
次に、ワークスペースをインポートします。
import wandb
import wandb_workspaces.reports.v2 as wr
wandb_workspaces.reports.v2.Report
を使用して report を作成します。Report Class Public API (wandb.apis.reports
) を使用して report インスタンスを作成します。 project の名前を指定します。
report = wr. Report(project= "report_standard" )
report を保存します。Reports は、.save()
メソッドを呼び出すまで W&B サーバーにアップロードされません。
App UI またはプログラムで report をインタラクティブに編集する方法については、Edit a report を参照してください。
2 - Edit a report
App UI を使用してインタラクティブに、または W&B SDK を使用してプログラム的に レポート を編集します。
App UIまたは W&B SDKでプログラム的に、インタラクティブにレポートを編集できます。
Reports は ブロック で構成されています。ブロックはレポートの本文を構成します。これらのブロック内には、テキスト、画像、埋め込み 可視化、実験からのプロットと run、および パネル グリッドを追加できます。
パネル グリッド は、パネルと run sets を保持する特定のタイプのブロックです。Run sets は、W&B のプロジェクトに記録された runs の集合です。パネルは run set データの 可視化です。
レポートをプログラムで編集する場合は、W&B Python SDKに加えて wandb-workspaces
がインストールされていることを確認してください。
pip install wandb wandb-workspaces
プロットを追加する
各パネル グリッドには、run sets のセットとパネルのセットがあります。セクションの下部にある run sets は、グリッド内のパネルに表示されるデータを制御します。異なる runs のセットからデータを取得するグラフを追加する場合は、新しいパネル グリッドを作成します。
レポートにスラッシュ (/
) を入力して、ドロップダウン メニューを表示します。[パネルを追加 ] を選択して、パネルを追加します。折れ線グラフ、散布図、平行座標グラフなど、W&B でサポートされている任意のパネルを追加できます。
SDKを使用して、プログラムでプロットをレポートに追加します。1つ以上のプロットまたはグラフ オブジェクトのリストを PanelGrid
Public API Classの panels
パラメータに渡します。関連する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 sets を追加する
App UIまたは W&B SDKを使用して、プロジェクトからrun setsをインタラクティブに追加します。
レポートにスラッシュ (/
) を入力して、ドロップダウン メニューを表示します。ドロップダウンから、[パネル グリッド] を選択します。これにより、レポートが作成されたプロジェクトから run set が自動的にインポートされます。
wr.Runset()
および wr.PanelGrid
クラスを使用して、プロジェクトから run sets を追加します。次の手順では、run set を追加する方法について説明します。
wr.Runset()
オブジェクト インスタンスを作成します。プロジェクトの run sets が含まれるプロジェクトの名前を project パラメータに、プロジェクトを所有するエンティティを entity パラメータに指定します。
wr.PanelGrid()
オブジェクト インスタンスを作成します。1つ以上の run set オブジェクトのリストを runsets
パラメータに渡します。
1つ以上の wr.PanelGrid()
オブジェクト インスタンスをリストに格納します。
パネル グリッド インスタンスのリストで report インスタンス ブロック属性を更新します。
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= "<project-name>" , entity= "<entity-name>" )]
)
report. blocks = [panel_grids]
report. save()
オプションで、SDKへの1回の呼び出しで run sets とパネルを追加できます。
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= "<project-name>" , entity= "<entity-name>" )],
)
report. blocks = [panel_grids]
report. save()
Run set を固定する
レポートは、プロジェクトからの最新のデータを表示するために、run sets を自動的に更新します。Run set を固定 することで、レポート内の run set を保持できます。Run set を固定すると、ある時点でのレポート内の run set の状態が保持されます。
レポートの表示中に run set を固定するには、[フィルタ] ボタンの近くにあるパネル グリッド内の雪のアイコンをクリックします。
コード ブロックを追加する
App UIまたは W&B SDKを使用して、インタラクティブにコード ブロックをレポートに追加します。
レポートにスラッシュ (/
) を入力して、ドロップダウン メニューを表示します。ドロップダウンから [コード ] を選択します。
コード ブロックの右側にあるプログラミング言語の名前を選択します。これにより、ドロップダウンが展開されます。ドロップダウンから、プログラミング言語の構文を選択します。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()
これにより、次のようなコード ブロックがレンダリングされます。
Markdown を追加する
App UIまたは W&B SDKを使用して、インタラクティブに Markdown をレポートに追加します。
レポートにスラッシュ (/
) を入力して、ドロップダウン メニューを表示します。ドロップダウンから [Markdown ] を選択します。
wandb.apis.reports.MarkdownBlock
クラスを使用して、プログラムで Markdown ブロックを作成します。文字列を 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$" )
]
これにより、次のような Markdown ブロックがレンダリングされます。
HTML 要素を追加する
App UIまたは W&B SDKを使用して、インタラクティブに HTML 要素をレポートに追加します。
レポートにスラッシュ (/
) を入力して、ドロップダウン メニューを表示します。ドロップダウンからテキスト ブロックのタイプを選択します。たとえば、H2 見出しブロックを作成するには、[見出し 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 をコピーして貼り付ける方法を示しています。
ツイート リンクの 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= '<blockquote class="twitter-tweet"><p lang="en" dir="ltr">The voice of an angel, truly. <a href="https://twitter.com/hashtag/MassEffect?src=hash&ref_src=twsrc %5E tfw">#MassEffect</a> <a href="https://t.co/nMev97Uw7F">pic.twitter.com/nMev97Uw7F</a></p>— Mass Effect (@masseffect) <a href="https://twitter.com/masseffect/status/1428748886655569924?ref_src=twsrc %5E tfw">August 20, 2021</a></blockquote> \n '
),
]
report. save()
パネル グリッドを複製および削除する
再利用したいレイアウトがある場合は、パネル グリッドを選択してコピーして貼り付け、同じレポートに複製したり、別のレポートに貼り付けたりすることもできます。
右上隅にあるドラッグ ハンドルを選択して、パネル グリッド セクション全体を強調表示します。クリックしてドラッグして、パネル グリッド、テキスト、見出しなどのレポート内の領域を強調表示して選択します。
パネル グリッドを選択し、キーボードの delete
を押してパネル グリッドを削除します。
ヘッダーを折りたたんで Reports を整理する
Report のヘッダーを折りたたんで、テキスト ブロック内のコンテンツを非表示にします。レポートが読み込まれると、展開されているヘッダーのみがコンテンツを表示します。レポートでヘッダーを折りたたむと、コンテンツを整理し、過剰なデータ読み込みを防ぐことができます。次の gif は、そのプロセスを示しています。
複数の次元にわたる関係を可視化する
複数の次元にわたる関係を効果的に 可視化 するには、カラー グラデーションを使用して変数の1つを表します。これにより、明瞭さが向上し、パターンが解釈しやすくなります。
カラー グラデーションで表す変数を選択します (例: ペナルティ スコア、学習率など)。これにより、トレーニング時間 (x軸) にわたって、ペナルティ (色) が報酬/副作用 (y軸) とどのように相互作用するかをより明確に理解できます。
主要な傾向を強調表示します。特定の runs のグループにカーソルを合わせると、 可視化 でそれらが強調表示されます。
3 - Collaborate on reports
W&B Reports を同僚、共同作業者、およびチームと共有してコラボレーションできます。
レポートを保存したら、Share ボタンを選択して共同作業ができます。Edit ボタンを選択すると、レポートのドラフトコピーが作成されます。ドラフトレポートは自動保存されます。変更を共有レポートに公開するには、Save to report を選択します。
編集の競合が発生した場合、警告通知が表示されます。これは、あなたと別の共同作業者が同じレポートを同時に編集した場合に発生する可能性があります。警告通知は、潜在的な編集の競合を解決するのに役立ちます。
レポートにコメントする
レポートの パネル にコメントボタンをクリックすると、その パネル に直接コメントを追加できます。
4 - Clone and export reports
W&B の レポート を PDF または LaTeX としてエクスポートします。
レポート のエクスポート
レポート をPDFまたは LaTeXとしてエクスポートします。 レポート 内で、ケバブアイコンを選択してドロップダウンメニューを展開します。[Download ] を選択し、PDFまたは LaTeX出力形式を選択します。
レポート の複製
レポート 内で、ケバブアイコンを選択してドロップダウンメニューを展開します。[Clone this report ] ボタンを選択します。モーダルで、複製された レポート の宛先を選択します。[Clone report ] を選択します。
レポート を複製して、 プロジェクト のテンプレートと形式を再利用します。チームのアカウント内で プロジェクト を複製すると、複製された プロジェクト はチームに表示されます。個人のアカウント内で複製された プロジェクト は、その ユーザー にのみ表示されます。
URLから Report をロードして、テンプレートとして使用します。
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 - Embed a report
W&B Reports を Notion に直接埋め込んだり、HTML IFrame 要素で埋め込んだりできます。
HTML iframe 要素
レポート の右上隅にある [共有 ] ボタンを選択します。モーダルウィンドウが表示されます。モーダルウィンドウ内で、[埋め込みコードをコピー ] を選択します。コピーされたコードは、インラインフレーム (IFrame) HTML 要素内にレンダリングされます。コピーしたコードを、選択した iframe HTML 要素に貼り付けます。
公開 レポートのみが埋め込み時に表示可能です。
Confluence
次のアニメーションは、Confluence の IFrame セル内にレポートへの直接リンクを挿入する方法を示しています。
Notion
次のアニメーションは、Notion の Embed ブロックとレポートの埋め込みコードを使用して、レポートを Notion ドキュメントに挿入する方法を示しています。
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 - Compare runs across projects
異なるプロジェクトのrunを、プロジェクトを跨いだReportsで比較します。
クロスプロジェクト レポートを使用して、2 つの異なるプロジェクトの run を比較します。run セット テーブルのプロジェクト セレクターを使用して、プロジェクトを選択します。
セクション内の 可視化 は、最初のアクティブな runset から列をプルします。ラインプロットで探している メトリクス が見つからない場合は、セクションで最初にチェックされた run セットにその列があることを確認してください。
この機能は、 時系列 ラインの履歴データをサポートしていますが、異なるプロジェクトから異なるサマリー メトリクス をプルすることはサポートしていません。つまり、別のプロジェクトでのみ ログ に記録される列から散布図を作成することはできません。
2 つのプロジェクトの run を比較する必要があり、列が機能しない場合は、一方のプロジェクトの run にタグを追加し、それらの run をもう一方のプロジェクトに移動します。各プロジェクトの run のみをフィルタリングできますが、 レポート には両方の run セットのすべての列が含まれます。
表示専用の レポート リンク
プライベート プロジェクト または Team プロジェクトにある レポート への表示専用リンクを共有します。
表示専用の レポート リンクは、URL に秘密の アクセス トークンを追加するため、リンクを開いた人は誰でもページを表示できます。誰でもマジック リンクを使用して、最初に ログ インしなくても レポート を表示できます。W&B Local プライベート クラウド インストールをご利用のお客様の場合、これらのリンクはファイアウォールの内側に保持されるため、プライベート インスタンスへの アクセス 権と表示専用リンクへの アクセス 権を持つチームのメンバーのみが レポート を表示できます。
表示専用モード では、 ログ インしていない人は、チャートを表示したり、マウスオーバーして 値 のツールチップを表示したり、チャートを拡大/縮小したり、テーブル内の列をスクロールしたりできます。表示モードの場合、新しいチャートや新しいテーブル クエリを作成して データを探索することはできません。表示専用の レポート リンクの訪問者は、run をクリックして run ページに移動することはできません。また、表示専用の訪問者には共有モーダルは表示されませんが、代わりにホバーすると、次のようなツールチップが表示されます: 表示専用アクセスでは共有は利用できません
。
マジック リンクは、「プライベート」および「Team」プロジェクトでのみ使用できます。「パブリック」(誰でも表示可能)または「オープン」(誰でもrunを表示および投稿可能)プロジェクトの場合、このプロジェクトはパブリックであり、すでにリンクを持っている人なら誰でも利用できるため、リンクをオン/オフにすることはできません。
グラフを レポート に送信する
ワークスペース からグラフを レポート に送信して、進捗状況を追跡します。 レポート にコピーするチャートまたは パネル のドロップダウン メニューをクリックし、Add to report をクリックして宛先の レポート を選択します。
7 - Example reports
Reports ギャラリー
Notes: 素早い要約で 可視化を追加
プロジェクトの開発で重要な観察、将来の作業のためのアイデア、または達成されたマイルストーンを記録します。 Report 内のすべての実験 run は、パラメータ、メトリクス、ログ、およびコードにリンクされるため、作業の完全なコンテキストを保存できます。
テキストを書き留め、関連するグラフを取り込んで、洞察を説明します。
トレーニング時間の比較を共有する方法の例については、Inception-ResNet-V2 が遅すぎる場合の対処法 W&B Report を参照してください。
参照と将来のインタラクションのために、複雑なコードベースから最良の例を保存します。 Lyft dataset からの LIDAR ポイントクラウドを可視化し、3D バウンディングボックスで注釈を付ける方法の例については、LIDAR ポイントクラウド W&B Report を参照してください。
Collaboration: 同僚と 学びを共有
プロジェクトの開始方法を説明し、これまでに観察した内容を共有し、最新の 学び をまとめます。同僚は、 Report の任意の panel または最後にコメントを使用して、提案をしたり、詳細を議論したりできます。
同僚が自分で探索し、追加の洞察を得て、次のステップをより適切に計画できるように、動的な settings を含めます。この例では、3 種類の experiments を個別に可視化、比較、または平均化できます。
ベンチマークの最初の run と観察を共有する方法の例については、SafeLife ベンチマーク experiments W&B Report を参照してください。
スライダーと構成可能なメディア panel を使用して、 model の結果または training の進捗状況を紹介します。スライダー付きの W&B Report の例については、かわいい動物とポストモダンのスタイル転送: マルチドメイン画像合成のための StarGAN v2 report をご覧ください。
Work log: 試したことを追跡し、次のステップを計画
プロジェクトを進める際に、 experiments、学び、注意点、および次のステップに関する考えを書き留め、すべてを 1 か所に整理します。これにより、スクリプト以外の重要な部分をすべて「文書化」できます。 学び を report する方法の例については、Who Is Them? Text Disambiguation With Transformers W&B Report を参照してください。
model がどのように、そしてなぜ開発されたのかを理解するために、あなたと他の人が後で参照できるプロジェクトのストーリーを語ります。 学び を report する方法については、運転席からの眺め W&B Report を参照してください。
OpenAI Robotics チームが W&B Reports を使用して大規模な machine learning プロジェクトをどのように実行したかを調査するために W&B Reports がどのように使用されたかの例については、W&B Reports を使用したエンドツーエンドの Learning Dexterity を参照してください。