Runs
W&Bでログされる1つの計算単位はRunと呼ばれます。
W&BのRunを、プロジェクト全体の原子的な要素と考えてください。ハイパーパラメーターを変更したり、別のモデルを使用したり、W&B Artifact を作成するなど、新しいRunを作成して開始する必要があります。
例えば、W&B Sweepでは、ハイパーパラメーター検索を行い、様々なモデルの空間を探索します。各新しいハイパーパラメーターの組み合わせは、W&B Runとして実装されます。
W&B Runsは以下のようなタスクに使用します。
- モデルのトレーニングを行うたび。
- データやモデルをW&B Artifactとしてログする。
- W&B Artifactをダウンロードする。
wandb.log
を使ってログを残すと、そのRunに記録されます。W&Bでオブジェクトをログに記録する方法についての詳細は、Log Media and Objectsを参照してください。
プロジェクト内のRunは、プロジェクトのWorkspaceで表示できます。
Runの作成
wandb.init()
を使ってW&B Runを作成します。
import wandb
run = wandb.init(project="my-project-name")
project
フィールドにプロジェクト名をオプションで指定できます。Runオブジェクトを作成する際にプロジェクト名を指定することをお勧めします。指定された名前のプロジェクトがまだ存在しない場合、W&Bは新しいプロジェクトを作成します。プロジェクトは、実験、runs、アーティファクトなどを一か所で便利に整理するのに役立ちます。これをプロジェクトワークスペースと呼びます。プロジェクトのワークスペースは、runを比較するための個人用の砂場のようなものです。
プロジェクトが指定されていない場合、W&BのRunは"Uncategorized"というプロジェクトに格納されます。
あるプロセスでアクティブなwandb.Run
は、常に最大1つであり、wandb.run
としてアクセスできます。
import wandb
assert wandb.run is None
wandb.init()
assert wandb.run is not None
同じノートブックやスクリプトで複数のRunsを開始するためには、まだ完了していないRunを終了する必要があります。
Runの終了
W&Bは自動的にwandb.finish
を呼び出して、Runの終了処理とクリーンアップを行います。ただし、wandb.init
を子プロセスから呼び出す場合は、子プロセスの終了時に明示的にwandb.finish
を呼び出す必要があります。
スクリプトが終了すると、wandb.finish APIは自動的に呼び出されます。
wandb.finish
APIを使用してRunを手動で終了させるか、with
文を使用してRunを終了させることができます。次のコード例は、with
Python文からRunを終了する方法を示しています:
import wandb
wandb.init()
wandb.finish()
assert wandb.run is None
with wandb.init() as run:
pass # ここでデータをログに記録
assert wandb.run is None
プロジェクト内のすべてのRunを表示
W&BアプリのUI を使ってプロジェクトに関連付けられたRunを表示します。W&Bアプリに移動し、プロジェクト名で検索してください。
次の例では、"my-first-run"というプロジェクトを検索しています:
プロジェクトを選択します。これにより、そのプロジェクトのワークスペースにリダイレクトされます。プロジェクトのワークスペースは、runを比較するためのパーソナルな砂場を提供します。異なるアーキテクチャーやハイパーパラメータ、データセット、前処理などで、同じ問題に取り組むモデルを整理するためにプロジェクトを使用してください。
プロジェクトのワークスペース内にはRunsというラベルの付いたテーブルが表示されます。このテーブルには、プロジェクト内のすべてのRunが一覧表示されます。言い換えれば、これらのrunは、作成時にproject
引数が与えられました。
次の画像は、"sweep-demo"というプロジェクトのワークスペースを示しています:
Runs Sidebarには、プロジェクト内のすべてのrunが一覧表示されます。一つのRunにマウスカーソルを合わせることで、以下の操作や表示が可能になります。
- ケバブメニュー:Runの名前を変更したり、Runを削除したり、アクティブなRunを停止したりするために、このケバブメニューを使います。
- 表示アイコン:目のアイコンを選択して特定のrunを非表示にします。
- 色:runの色を他のプリセットまたはカスタムカラーに変更します。
- 検索:名前でrunを検索します。これにより、プロットで表示されるrunがフィルタリングされます。
- フィルター:サイドバーフィルターを使って、表示されるrunのセットを絞り込みます。
- グループ:アーキテクチャーなどのconfig列を選択し、runを動的にグループ化します。グループ化すると、プロットには平均値に沿った線が表示され、グラフ上のポイントの分散が影として表示されます。
- 並べ替え:どのようにrunを並べ替えるかを選択します。例えば、最小損失または最高精度のrunを選びます。並べ替えは、グラフに表示されるrunに影響します。
- 展開ボタン:サイドバーをフルテーブルに展開します
- Runのカウント:上部のかっこ内の数字は、プロジェクト内のrunの合計数です。括弧内の「N表示」という数字は、目アイコンがオンになっていて、各プロットで視覚化できるrunの数です。下の例では、グラフは183のrunのうち最初の10つしか表示していません。グラフを編集して、表示されるrunの最大数を増やします。
プロジェクト内で複数のRunをどのように整理するかの詳細については、Runs Tableドキュメントを参照してください。
プロジェクトのワークスペースのライブ例として、example projectをご覧ください。
プロジェクト内の特定のRunを調査する
Runページを使用して、特定のRunに関する詳細情報を調査します。
- プロジェクトに移動し、Runs Sidebarから特定のRunを選択します。
- 次に、Overview Tabアイコンを選択します。
以下の画像は、「sparkling-glade-2」という名前のRunに関する情報を示しています。
Overview Tabでは、選択したRunに関する次の情報が表示されます。
- Run名:Runの名前。
- 説明:Runに関する説明。Runを作成する際に説明が指定されていない場合、このフィールドは最初に空白のままになります。W&B App UIまたはプログラムでRunの説明をオプションで提供できます。
- プライバシー:Runのプライバシー設定。プライベートまたはパブリックのどちらかに設定できます。
- プライベート:(デフォルト)あなただけが閲覧および貢献できます。
- パブリック:誰でも閲覧できます。
- タグ:(リスト、オプション)文字列のリスト。タグは、Runをまとめるためや、"ベースライン" や "プロダクション" などの一時的なラベルを適用するのに便利です。
- 作者:Runを作成したW&Bのユーザー名。
- Runの状態:Runの状態:
- 終了:スクリプトが終了し、データが完全に同期されたか、
wandb.finish()
が呼ばれた - 失敗:スクリプトが正常終了しないステータスで終了した
- クラッシュ:内部プロセスでスクリプトがハートビートの送信を停止した。マシンがクラッシュした場合に発生することがあります
- 実行中:スクリプトが実行中で、最近ハートビートが送信されました
- 終了:スクリプトが終了し、データが完全に同期されたか、
- 開始時刻:Runが開始されたタイムスタンプ。
- 期間:Runが終了、失敗、またはクラッシュするまでの秒数。
- ホスト名:Runが起動された場所。Runをローカルマシンで起動した場合、マシンの名前が表示されます。
- オペレーティングシステム:Runに使用されたオペレーティングシステム。
- Pythonバージョン:Runに使用されたPythonのバージョン。
- Python実行ファイル:Runを開始したコマンド。
- システムハードウェア:Runの作成に使用されたハードウェア。
- W&B CLIバージョン:RunコマンドをホストしたマシンにインストールされたW&B CLIのバージョン。
概要セクションの下には、以下の情報も追加で表示されます。
- アーティファクトの出力: Runによって生成されたアーティファクトの出力。
- Config:
wandb.config
で保存された設定パラメーターのリスト。 - Summary:
wandb.log()
で保存されたサマリーパラメーターのリスト。デフォルトでは、この値は最後にログされた値に設定されています。