実験を実行すると、さまざまなメッセージがコンソールに出力されることがあります。W&B はコンソールログを取得して W&B App に表示します。これらのメッセージを使って、実験の動作をデバッグおよび監視できます。
W&B App で run のコンソールログを確認するには、次の手順に従います。
- W&B App で自分のプロジェクトにアクセスします。
- Runs 表内の run を選択します。
- プロジェクトのサイドバーで Logs タブをクリックします。
W&B では、run ごとに最大 100,000 行のログが保存されます。W&B App では、一度に表示できるログは最大 10,000 行です。保存されているすべてのログ行を確認するには、ログをスクロールして古い行を表示します。
W&B は、情報メッセージ、警告、エラーなど複数種類のコンソールログを収集し、各ログには重大度を示すプレフィックスが付きます。
情報メッセージは、run の進捗やステータスに関する更新情報を示します。通常、先頭に wandb: が付きます。
wandb: Starting Run: abc123
wandb: Run data is saved locally in ./wandb/run-20240125_120000-abc123
実行は停止しないものの、問題の可能性を示す警告メッセージには、先頭に WARNING: が付きます
WARNING Found .wandb file, not streaming tensorboard metrics.
WARNING These runs were logged with a previous version of wandb.
重大な問題を示すエラーメッセージには、先頭に ERROR: が付きます。これは、run が正常に完了できなくなる可能性がある問題を示しています。
ERROR Unable to save notebook session history.
ERROR Failed to save notebook.
コード内で wandb.Settings オブジェクトを wandb.init() に渡すことで、W&B におけるコンソールログの扱いを設定できます。wandb.Settings では、コンソールログの動作を制御するために、次のパラメーターを設定できます。
show_errors: True に設定すると、エラーメッセージが W&B App に表示されます。False に設定すると、エラーメッセージは表示されません。
silent: True に設定すると、W&B のコンソール出力がすべて抑制されます。これは、コンソールの不要な出力を最小限に抑えたい本番環境で役立ちます。
show_warnings: True に設定すると、警告メッセージが W&B App に表示されます。False に設定すると、警告メッセージは表示されません。
show_info: True に設定すると、情報メッセージが W&B App に表示されます。False に設定すると、情報メッセージは表示されません。
次の例では、これらの設定を行う方法を示します。
import wandb
settings = wandb.Settings(
show_errors=True, # W&B App にエラーメッセージを表示する
silent=False, # W&B のコンソール出力をすべて無効にする
show_warnings=True # W&B App に警告メッセージを表示する
)
with wandb.init(settings=settings) as run:
# トレーニングコードをここに記述する
run.log({"accuracy": 0.95})
W&B はアプリケーションのコンソールログを収集しますが、独自のロギング設定に干渉することはありません。メッセージを記録するには、Python に組み込まれている print() 関数または logging モジュールを使用できます。
import wandb
with wandb.init(project="my-project") as run:
for i in range(100, 1000, 100):
# W&Bにログし、コンソールに出力する
run.log({"epoch": i, "loss": 0.1 * i})
print(f"epoch: {i} loss: {0.1 * i}")
コンソールログは、次のように表示されます。
1 epoch: 100 loss: 1.3191105127334595
2 epoch: 200 loss: 0.8664389848709106
3 epoch: 300 loss: 0.6157898902893066
4 epoch: 400 loss: 0.4961796700954437
5 epoch: 500 loss: 0.42592573165893555
6 epoch: 600 loss: 0.3771176040172577
7 epoch: 700 loss: 0.3393910825252533
8 epoch: 800 loss: 0.3082585036754608
9 epoch: 900 loss: 0.28154927492141724
タイムスタンプは各コンソールログのエントリに自動的に追加されます。これにより、各ログメッセージがいつ生成されたかを確認できます。
コンソールログでは、タイムスタンプの表示をオンまたはオフに切り替えられます。コンソールページの左上にある Timestamp visible ドロップダウンを選択します。タイムスタンプを表示するか非表示にするかを選べます。
コンソールログページの上部にある検索バーを使用して、キーワードでログをフィルターできます。特定の用語、ラベル、エラーメッセージを検索できます。
コンソールログページ上部の UI の検索バーでは、wandb.Settings の x_label に引数として渡したラベルに基づいてコンソールログをフィルターできます。
import wandb
# プライマリノードでrunを初期化する
with wandb.init(
entity="entity",
project="project",
settings=wandb.Settings(
x_label="custom_label" # (オプション) ログのフィルター用カスタムラベル
)
) as run:
# ここにコードを記述する
W&B App で run のコンソールログをダウンロードするには、次の手順に従います。
- W&B App のプロジェクトにアクセスします。
- Runs 表で run を選択します。
- プロジェクトのサイドバーで Logs タブをクリックします。
- コンソールログページの画面右上にあるダウンロードボタンをクリックします。
W&B App で run のコンソールログをコピーするには、以下の手順に従います。
- W&B App のプロジェクトにアクセスします。
- Runs 表内の run を選択します。
- プロジェクトのサイドバーにある Logs タブをクリックします。
- コンソールログページの画面右上にあるコピーボタンをクリックします。