アプリの UI でインタラクティブに、または W&B SDK を使ってプログラムからレポートを編集します。Reports は ブロック で構成されています。ブロックはレポートの本文を構成します。これらのブロックには、テキスト、画像、埋め込み可視化、Experiments や run のプロット、パネルグリッドを追加できます。パネルグリッド は、パネルと run set を保持する特定の種類のブロックです。Run set は、W&B のプロジェクトにログされた runs のコレクションです。パネルは run set データを可視化したものです。
SDK を使用すると、プログラムからレポートにプロットを追加できます。1 つ以上のプロットまたはグラフオブジェクトのリストを、PanelGrid Public API Class の panels パラメーターに渡します。プロットまたはグラフオブジェクトは、対応する Python Class を使って作成します。以下の例は、折れ線グラフと散布図を作成する方法を示しています。
App UI または W&B SDK を使用して、プロジェクトからインタラクティブに run set を追加します。
W&B App
Report and Workspace API
レポートでスラッシュ (/) を入力すると、ドロップダウンメニューが表示されます。ドロップダウンから Panel Grid を選択します。これにより、レポートの作成元のプロジェクトから run set が自動的に import されます。パネルをレポートに import すると、run 名はプロジェクトから引き継がれます。レポートでは、必要に応じて run の名前を変更 し、閲覧者により多くのコンテキストを提供できます。run 名が変更されるのは、その個別のパネル内だけです。同じレポート内でそのパネルを複製した場合、複製先のパネルでも run 名が変更されます。
レポートで鉛筆アイコンをクリックして、レポートエディタを開きます。
run set で、名前を変更する run を検索します。レポート名にカーソルを合わせ、action () メニューをクリックします。次のいずれかを選択し、フォームを送信します。
プロジェクトの run 名を変更: プロジェクト全体で run 名を変更します。新しいランダム名を生成するには、このフィールドを空欄のままにします。
Panel Grid の run 名を変更: run 名をレポート内でのみ変更し、他のコンテキストでは既存の名前を保持します。新しいランダム名の生成はサポートされていません。
レポートを公開 をクリックします。
wr.Runset() および wr.PanelGrid クラスを使用して、プロジェクトから run set を追加します。以下の手順では、run set を追加する方法を説明します。
wr.Runset() オブジェクトのインスタンスを作成します。project パラメーターには run set を含むプロジェクトの名を指定し、entity パラメーターにはそのプロジェクトを所有する entity を指定します。
wr.PanelGrid() オブジェクトのインスタンスを作成します。1 つ以上の runset オブジェクトの list を run sets パラメーターに渡します。
1 つ以上の wr.PanelGrid() オブジェクトのインスタンスを list に格納します。
レポートインスタンスの blocks 属性を、panel grid インスタンスの list で更新します。
レポートでは、プロジェクトの最新データが表示されるよう、run set が自動的に更新されます。run set を固定すると、レポート内のその run set を保持できます。run set を固定すると、レポート内の run set の状態がその時点のものとして保持されます。レポートの表示中に run set を固定するには、パネルグリッド内の Filter ボタンの近くにある雪の結晶アイコンをクリックします。
Workspace and Reports API を使用して、run set 内の runs をプログラムでグループ化できます。run set 内の runs は、設定値、run メタデータ、または summary メトリクスでグループ化できます。次の表は、利用可能なグループ化 method と、その method で利用可能なキーを示しています。
類似した設定の run を比較するには、設定値で run をグループ化します。設定値は、run の設定 (wandb.init(config=)) で指定するパラメーターです。設定値で run をグループ化するには、config.<key> 構文を使用します。ここで、<key> はグループ化に使う設定値の名です。たとえば、次のコードスニペットでは、まず group の設定値を指定して run を初期化し、その後 group 設定値に基づいて report 内の run をグループ化します。<entity> と <project> の値は、ご使用の W&B entity 名およびプロジェクト名に置き換えてください。
import wandbimport wandb_workspaces.reports.v2 as wrentity = "<entity>"project = "<project>"for group in ["control", "experiment_a", "experiment_b"]: for i in range(3): with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run: # トレーニングのシミュレーション for step in range(100): run.log({ "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05), "loss": 1.0 - (step / 100) * 0.5 })
その後、Pythonスクリプトまたはノートブック内で、config.group の値で run をグループ化できます。
run は、run の名 (Name)、状態 (State)、またはジョブタイプ (JobType) でグループ化できます。前の例に続いて、以下のコードを使うと、名で run をグループ化できます:
runset = wr.Runset( project=project, entity=entity, groupby=["Name"] # run 名でグループ化)
run の名前は、wandb.init(name=) パラメーターで指定した名前です。名前を指定しない場合、W&B が run にランダムな名前を生成します。run の名前は、W&B App の run の Overview ページ、または Api.runs().run.name を使ってプログラムから確認できます。
ここで、key はフィルター名、operation は比較演算子 (例: >, <, ==, in, not in, or, and) 、<value> は比較対象の値です。Filter は、適用したいフィルターのタイプを表すプレースホルダーです。次の表は、使用可能なフィルターとその説明を示しています。
Filter
Description
Available keys
Config('key')
設定値でフィルターする
wandb.init(config=) の config パラメーターで指定した値。
SummaryMetric('key')
サマリー メトリクスでフィルターする
wandb.Run.log() を使って run にログした値。
Tags('key')
タグでフィルターする
run に追加したタグの値 (プログラムから、または W&B App から追加) 。
Metric('key')
run のプロパティでフィルターする
tags, state, displayName, jobType
フィルターを定義したら、レポートを作成し、フィルターした run set を wr.PanelGrid(runsets=) に渡せます。さまざまな要素をプログラムでレポートに追加する方法について詳しくは、このページ内にある Report and Workspace API タブを参照してください。次の例では、レポート内で run set をフィルターする方法を示します。<> で囲まれた値は、ご自身の値に置き換えてください。
以下の例では、Summary メトリクスで run set をフィルターする方法を示します。Summary メトリクスは、wandb.Run.log() を使って run にログする値です。run をログした後、Summary メトリクスの名は、W&B App の run の Overview ページにある Summary セクションで確認できます。
import wandbimport wandb_workspaces.reports.v2 as wrreport = wr.Report(project="report-editing")report.blocks = [ wr.MarkdownBlock(text="Markdown cell with *italics* and **bold** and $e=mc^2$")]