run をフィルタリングし検索する
プロジェクトページのサイドバーとテーブルの使い方
6 minute read
W&B の run とは、W&B によってログ記録された単一の計算単位のことです。W&B の run をプロジェクト全体の原子要素として考えることができます。言い換えれば、各 run とは特定の計算の記録であり、モデルのトレーニング、結果のログ記録、ハイパーパラメータースイープなどを含みます。
run を開始する一般的なパターンには以下が含まれますが、これらに限定されません:
W&B はあなたが作成した run を projects に保存します。W&B App UI 上でプロジェクトのワークスペース内の run とそのプロパティを表示できます。また、wandb.Api.Run
オブジェクトを使用してプログラムで run のプロパティにアクセスすることも可能です。
run.log
でログ記録したものは、その run に記録されます。次のコードスニペットを考えてみてください。
import wandb
run = wandb.init(entity="nico", project="awesome-project")
run.log({"accuracy": 0.9, "loss": 0.1})
最初の行は W&B Python SDK をインポートします。2 行目はエンティティ nico
のプロジェクト awesome-project
で run を初期化します。3 行目はその run に対するモデルの精度と損失をログ記録します。
ターミナル内で、W&B は次のように返します:
wandb: Syncing run earnest-sunset-1
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb:
wandb:
wandb: Run history:
wandb: accuracy ▁
wandb: loss ▁
wandb:
wandb: Run summary:
wandb: accuracy 0.9
wandb: loss 0.5
wandb:
wandb: 🚀 View run earnest-sunset-1 at: https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb: ⭐️ View project at: https://wandb.ai/nico/awesome-project
wandb: Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb: Find logs at: ./wandb/run-20241105_111006-1jx1ud12/logs
W&B がターミナルで返す URL は、W&B App UI 上で run のワークスペースにリダイレクトします。ワークスペースで生成されたパネルは単一のポイントに対応していることに注意してください。
単一時点でメトリクスをログ記録することはあまり有用ではないかもしれません。識別モデルのトレーニングの場合、定期的な間隔でメトリクスをログ記録することがより現実的です。以下のコードスニペットを考慮してください:
epochs = 10
lr = 0.01
run = wandb.init(
entity="nico",
project="awesome-project",
config={
"learning_rate": lr,
"epochs": epochs,
},
)
offset = random.random() / 5
# トレーニング run のシミュレーション
for epoch in range(epochs):
acc = 1 - 2**-epoch - random.random() / (epoch + 1) - offset
loss = 2**-epoch + random.random() / (epoch + 1) + offset
print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
run.log({"accuracy": acc, "loss": loss})
これは次のような出力を返します:
wandb: Syncing run jolly-haze-4
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/pdo5110r
lr: 0.01
epoch=0, accuracy=-0.10070974957523078, loss=1.985328507123956
epoch=1, accuracy=0.2884687745057535, loss=0.7374362314407752
epoch=2, accuracy=0.7347387967382066, loss=0.4402409835486663
epoch=3, accuracy=0.7667969248039795, loss=0.26176963846423457
epoch=4, accuracy=0.7446848791003173, loss=0.24808611724405083
epoch=5, accuracy=0.8035095836268268, loss=0.16169791827329466
epoch=6, accuracy=0.861349032371624, loss=0.03432578493587426
epoch=7, accuracy=0.8794926436276016, loss=0.10331872172219471
epoch=8, accuracy=0.9424839917077272, loss=0.07767793473500445
epoch=9, accuracy=0.9584880427028566, loss=0.10531971149250456
wandb: 🚀 View run jolly-haze-4 at: https://wandb.ai/nico/awesome-project/runs/pdo5110r
wandb: Find logs at: wandb/run-20241105_111816-pdo5110r/logs
トレーニングスクリプトは run.log
を10回呼び出します。スクリプトが run.log
を呼び出すたびに、W&B はそのエポックの精度と損失をログ記録します。前述の出力から W&B が出力する URL を選択すると、その run のワークスペースに直接アクセスできます。
W&B は、シミュレーションしたトレーニングループを jolly-haze-4
という単一の run 内にキャプチャします。これは、スクリプトが wandb.init
メソッドを一度だけ呼び出しているためです。
別の例として、スイープの際、W&B はあなたが指定したハイパーパラメーター探索空間を探索します。スイープが作成する各新しいハイパーパラメーターの組み合わせを、一意の run として実装します。
W&B run は wandb.init()
を使用して初期化します。次のコードスニペットは、W&B Python SDK をインポートして run を初期化する方法を示しています。
角括弧 (< >
) で囲まれた値をあなた自身の値に置き換えるようにしてください:
import wandb
run = wandb.init(entity="<entity>", project="<project>")
run を初期化すると、W&B は指定したプロジェクトに対して run をログに記録します (wandb.init(project="<project>")
)。プロジェクトがまだ存在しない場合、W&B は新しいプロジェクトを作成します。プロジェクトが既に存在する場合、W&B はそのプロジェクトに run を保存します。
Uncategorized
というプロジェクトに保存します。W&B の各 run には、run ID という一意の識別子が付与されます。一意の ID を指定することができます し、または W&B がランダムに生成してくれる ことも可能です。
各 run には、人間が読めるrun 名 という一意でない識別子もあります。run の名前を指定することができますし、W&B にランダムに生成させることもできます。
たとえば、次のコードスニペットを考えてみてください:
import wandb
run = wandb.init(entity="wandbee", project="awesome-project")
このコードスニペットは次の出力を生成します:
🚀 View run exalted-darkness-6 at:
https://wandb.ai/nico/awesome-project/runs/pgbn9y21
Find logs at: wandb/run-20241106_090747-pgbn9y21/logs
前のコードが id 引数を指定しなかったため、W&B は一意の run ID を作成します。ここで、nico
は run を記録したエンティティであり、awesome-project
は run が記録されるプロジェクトの名前、 exalted-darkness-6
は run の名前、pgbn9y21
は run ID です。
run の末尾で run.finish()
を指定して run を終了したことを示してください。これにより、run がプロジェクトに正しくログ記録され、バックグラウンドで継続されないようにするのに役立ちます。
import wandb
run = wandb.init(entity="<entity>", project="<project>")
# トレーニングコード、ログ記録など
run.finish()
各 run には、run の現在のステータスを示す状態があります。可能な run 状態の完全なリストについては Run states を参照してください。
次の表は、run がとりうる可能な状態を示しています:
状態 | 説明 |
---|---|
Finished | Run が終了し、完全にデータを同期した、または wandb.finish() を呼び出した |
Failed | Run が終了し、非ゼロの終了ステータス |
Crashed | Run は内部プロセスでハートビートを送信するのを停止しました(マシンがクラッシュした場合など) |
Running | Run がまだ実行中で、最近ハートビートを送信している |
Run ID は run のための一意の識別子です。デフォルトでは、新しい run を初期化する際に、W&B はランダムで一意の run ID を生成します。また、run を初期化する際に独自の一意の run ID を指定することもできます。
run を初期化する際に run ID を指定しない場合、W&B はランダムな run ID を生成します。run の一意の ID は W&B App UI で確認できます。
W&B は Run path フィールドに一意の run ID を表示します。run path はチーム名、プロジェクト名、run ID で構成されています。一意の ID は run path の最後の部分です。
たとえば、以下の画像では、一意の run ID は 9mxi1arc
です:
id
引数をwandb.init
メソッドに渡すことで、独自の run ID を指定することができます。
import wandb
run = wandb.init(entity="<project>", project="<project>", id="<run-id>")
run の一意の ID を使用して W&B App UI の run の概要ページに直接移動できます。次のセルは特定の run の URL パスを示しています:
https://wandb.ai/<entity>/<project>/<run-id>
ここで、角括弧 (< >
) で囲まれた値は、エンティティ、プロジェクト、および run ID の実際の値のためのプレースホルダーです。
run の名前は、人間が読める非一意の識別子です。
デフォルトでは、W&B は新しい run を初期化する際にランダムな run 名を生成します。run の名前はプロジェクトのワークスペース内およびrun の概要ページの上部に表示されます。
run の名前を指定するには、name
引数をwandb.init
メソッドに渡します。
import wandb
run = wandb.init(entity="<project>", project="<project>", name="<run-name>")
特定の run に追加したメモは、run ページの Overview タブやプロジェクトページの run 一覧表に表示されます。
W&B App またはプログラムを使用して run を停止します。
Ctrl+D
を押して run を停止します。たとえば、前述の手順に従うと、ターミナルは次のような状態になるかもしれません:
KeyboardInterrupt
wandb: 🚀 View run legendary-meadow-2 at: https://wandb.ai/nico/history-blaster-4/runs/o8sdbztv
wandb: Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 1 other file(s)
wandb: Find logs at: ./wandb/run-20241106_095857-o8sdbztv/logs
W&B App UI に移動して run がもはやアクティブではないことを確認します:
legendary-meadow-2
です。State フィールドの隣で、run の状態が running
から Killed
に変わります。
State フィールドの隣で、run の状態が running
から Killed
に変わります。
State fields を参照し、run の可能な状態の完全なリストを確認してください。
run の状態、run にログ記録されたアーティファクト、run 中に記録されたログファイルなど、特定の run に関する情報を表示します。
特定の run を表示するには:
https://wandb.ai/home の W&B App UI に移動します。
run を初期化した際に指定した W&B プロジェクトに移動します。
プロジェクトのサイドバー内で Workspace タブを選択します。
run セレクタ内で表示したい run をクリックするか、部分的な run 名を入力して一致する runs をフィルターします。
デフォルトでは、長い run 名は読みやすくするために途中で切り詰められます。run 名を最初または最後で切り詰めるには、run リストの上部のアクション ...
メニューをクリックし、Run name cropping を最初、途中、または最後で切り取るように設定します。
特定の run の URL パスの形式は次のとおりです:
https://wandb.ai/<team-name>/<project-name>/runs/<run-id>
ここで、角括弧 (< >
) で囲まれた値は、チーム名、プロジェクト名、および run ID の実際の値のためのプレースホルダーです。
プロジェクト内で特定の run 情報を知るために Overview タブを使用してください。
entity/project/run-ID
形式で一意の run ID を識別します。baseline
や production
)を適用するのに便利です。W&B は概要セクションの下に次の情報を保存します:
wandb.config
で保存された設定パラメータのリスト。wandb.log()
で保存されたサマリーパラメータのリスト。デフォルトでは、W&B はこの値を最後にログ記録した値に設定します。こちらでプロジェクトの概要の例を確認できます here。
Workspace タブを使用して、生成されたプロットやカスタムプロット、システムメトリクスなどの可視化を表示、検索、グループ化、および配置してください。
こちらでワークスペースの例を確認できます here
Runs タブを使用して、run をフィルタリング、グループ化、並べ替えます。
Runs タブで実行できる一般的なアクションを以下のタブで示しています。
Runs タブには、プロジェクト内の run の詳細が表示されます。デフォルトでは多くの列が表示されます。
...
をクリックしてから Pin column をクリックします。固定された列はページの左側に近い位置に表示されます。固定列を解除するには、Unpin column を選択します。...
をクリックしてから Hide column をクリックします。現在非表示のすべての列を表示するには、Columns をクリックします。Runs タブをカスタマイズすると、そのカスタマイズは Workspace タブ の Runs セレクタにも反映されます。
Table のある列の値で全行を並べ替えます。
上記の画像は、val_acc
と呼ばれる Table 列の並べ替えオプションを表示する方法を示しています。
フィルターボタン上の式を使用したすべての行のフィルタリング、ダッシュボード上部のフィルターボタンを使用できます。
行に1つ以上のフィルターを追加するには、Add filter を選択します。3 つのドロップダウンメニューが表示されます。左から右へのフィルタータイプは、列名、オペレーター、値に基づいています。る。
列名 | 二項関係 | 値 | |
---|---|---|---|
受け入れ値 | ストリング | =, ≠, ≤, ≥, IN, NOT IN, | 整数、浮動小数点、ストリング、タイムスタンプ、null |
行編集案では、列名と論理述語構造に基づいてオートコンプリートを行い、各項目のオプションを示します。複数の論理述語を使用して「and」または「or」(場合によっては括弧)で1つの式に接続できます。
ダッシュボード上の Group by ボタンを使用して、特定の列の値で全行をグループ化します。
デフォルトでは、これにより他の数値列が、その列のグループ全体の値の分布を示すヒストグラムに変わります。グループ化は、データ内のより高水準のパターンを理解するのに役立ちます。
System tab には、CPU 使用率、システムメモリ、ディスク I/O、ネットワークトラフィック、GPU 使用率など、特定の run に対して追跡されるシステムメトリクスが表示されます。
W&B が追跡するシステムメトリクスの完全なリストについては、System metrics を参照してください。
システムタブの例はこちらから見ることができます here。
Log tab には、標準出力 (stdout
) や標準エラー (stderr
) などのコマンドラインに出力されたものが表示されます。
右上の「ダウンロード」ボタンを選択してログファイルをダウンロードします。
ログタブの例はこちらから見ることができます here.
Files tab を使用して、特定の run に関連付けられたファイル(モデルチェックポイント、検証セット例など)を表示してください。
ファイルタブの例はこちらから見ることができます here.
Artifacts タブには、指定した run の入力および出力 Artifacts が一覧表示されます。
Artifacts タブの例はこちらから見ることができます here.
W&B App を使用してプロジェクトから 1 つ以上の run を削除します。
このセクションでは、グループとジョブタイプを使用して run を整理する方法についての手順を紹介します。 run をグループ(たとえば、実験名)に割り当て、ジョブタイプ(たとえば、前処理、トレーニング、評価、デバッグ)を指定することで、ワークフローを簡素化し、モデルの比較を改善できます。
W&B の各 run は グループ と ジョブタイプ で分類できます:
preprocessing
や training
、evaluation
のようなものです。次のワークスペースの例では、Fashion-MNIST データセットからの増加するデータ量を使用してベースラインモデルをトレーニングしています。ワークスペースは使用されたデータ量を示すために色を使用します:
W&B のフィルタリングオプションや検索バーを使用して、次のような特定の条件に基づいて run を比較します:
フィルターを適用する際、Table ビューは自動的に更新されます。これにより、モデル間のパフォーマンスの違い(たとえば、どのクラスが他のモデルと比べてはるかに難しいか)を特定することができます。
プロジェクトページのサイドバーとテーブルの使い方
W&B run をフォークする
巻き戻す
一時停止または終了した W&B Run を再開する
トレーニングと評価 run をグループ化して大規模な Experiments を構成する
Python コードからトリガーされたアラートを Slack またはメールに送信する
このページは役に立ちましたか?
Glad to hear it! If you have further feedback, please let us know.
Sorry to hear that. Please tell us how we can improve.