wandb.Run.log() でデータをログするたびに、1 つの統合された辞書に保存します。スクリプトからログされたデータは、マシン上の wandb というディレクトリにローカル保存され、その後 W&B クラウドまたはプライベート サーバーに同期されます。
キーと値のペアが 1 つの統合された辞書に保存されるのは、各 step に同じ値を渡した場合のみです。
step に異なる値をログすると、W&B は収集したすべてのキーと値をメモリに書き込みます。wandb.Run.log() を呼び出すたびに新しい step になります。W&B はチャートやパネルを作成する際、step をデフォルトの X 軸として使用します。必要に応じて、カスタム X 軸を作成して使用したり、カスタム サマリー メトリクスを取得したりできます。詳しくは、ログの軸のカスタマイズをご覧ください。
自動的にログされるデータ
W&B は W&B の実験中に以下の情報を自動的にログします:- システムメトリクス: CPU と GPU 使用率、ネットワークなど。GPU の場合、これらは
nvidia-smiで取得されます。 - Command Line: stdout と stderr が取得され、Run page の logs タブに表示されます。
- Git commit: 最新の git commit を取得し、Run page の Overview タブで確認できます。また、未コミットの変更がある場合は
diff.patchファイルも表示されます。 - Dependencies:
requirements.txtファイルがアップロードされ、Run page の files タブに表示されます。また、run のためにwandbディレクトリに保存したファイルも表示されます。
W&B の特定の API 呼び出しでは、どのようなデータがログされますか?
W&B では、ログする内容を自由に選べます。以下に、よくログされるオブジェクトの例を示します。- Datasets: 画像やその他のデータセットのサンプルを W&B にストリーミングするには、それらを明示的にログする必要があります。
- Plots:
wandb.plot()をwandb.Run.log()とともに使用してチャートをトラッキングします。詳細については Log Plots を参照してください。 - Tables:
wandb.Tableを使用してデータをログすると、W&B で視覚化したりクエリしたりできます。詳細については Log Tables を参照してください。 - PyTorch の勾配:
wandb.Run.watch(model)を追加すると、重みの勾配をヒストグラムとして UI に表示できます。 - 設定情報: ハイパーパラメーター、データセットへのリンク、使用しているアーキテクチャ名などを設定パラメーターとしてログします。
wandb.init(config=your_config_dictionary)のように渡します。 - メトリクス:
wandb.Run.log()を使用してモデルのメトリクスを確認します。トレーニングループ内で精度や損失などのメトリクスをログすると、UI にリアルタイムで更新されるグラフが表示されます。
メトリクス命名の制約
GraphQL の制限により、W&B のメトリクス名は特定の命名規則に従う必要があります。- 使用可能な文字: 英字 (A-Z、a-z)、数字 (0-9)、アンダースコア (_)
- 先頭文字: 名の先頭は英字またはアンダースコアである必要があります
- パターン: メトリクス名は
/^[_a-zA-Z][_a-zA-Z0-9]*$/に一致する必要があります
一般的なワークフロー
-
最高精度を比較する: run 間でメトリクスの最良値を比較するには、そのメトリクスのサマリー値を設定します。デフォルトでは、各キーについて最後にログした値がサマリーに設定されます。これは UI の表で役立ちます。表ではサマリー メトリクスに基づいて run を並べ替えたりフィルターしたりできるため、最終的な精度ではなく 最高 精度に基づいて、表や棒グラフで run を比較しやすくなります。例:
wandb.run.summary["best_accuracy"] = best_accuracy -
1 つのチャートで複数のメトリクスを表示する: 1 回の呼び出しで複数のメトリクスをログします。例:
これで、UI で両方のメトリクスをプロットできます。
-
x 軸をカスタマイズする: 同じログ呼び出しにカスタム x 軸を追加すると、W&B ダッシュボードで別の軸を基準にメトリクスを可視化できます。例:
特定のメトリクスのデフォルトの x 軸を設定するには、Run.define_metric() を使用します。
-
リッチメディアとチャートをログする:
wandb.Run.log()は、画像や動画などのメディア から 表 や チャート まで、さまざまなデータタイプのログをサポートしています。