メインコンテンツへスキップ
W&B Python SDK を使用して、メトリクス、メディア、またはカスタムオブジェクトの 辞書 を特定のステップに ログ 記録します。 W&B は各ステップでキーと値のペアを収集し、 wandb.Run.log() を使用してデータが ログ 記録されるたびに、それらを1つの統合された 辞書 に保存します。 スクリプト から ログ 記録された データ は、マシンの wandb という名前の ディレクトリー にローカルで保存され、その後 W&B クラウド または プライベート サーバー に同期されます。
キーと値のペアが1つの統合された 辞書 に保存されるのは、各ステップで同じ値を渡した場合のみです。 step に対して異なる値を ログ 記録した場合、 W&B は収集されたすべてのキーと値をメモリに書き込みます。
デフォルトでは、 wandb.Run.log() の各呼び出しが新しい step になります。 W&B は、 チャート や パネル を作成する際のデフォルトの x 軸としてステップを使用します。 オプションで、カスタム x 軸を作成して使用したり、カスタム サマリー メトリクス をキャプチャしたりすることもできます。 詳細については、 ログ軸のカスタマイズ を参照してください。
wandb.Run.log() を使用して、各 step に対して 0, 1, 2 といった連続した値を ログ 記録してください。 特定の履歴ステップに書き込むことはできません。 W&B は「現在」と「次」のステップにのみ書き込みます。

自動的にログ記録されるデータ

W&B は、 W&B Experiments の実行中に以下の情報を自動的に ログ 記録します。
  • システムメトリクス: CPU および GPU 使用率、ネットワークなど。 GPU については、 nvidia-smi を使用して取得されます。
  • コマンドライン: 標準出力 (stdout) と標準エラー出力 (stderr) が取得され、 run ページ の logs タブに表示されます。
アカウントの 設定ページCode Saving を有効にすると、以下が ログ 記録されます。
  • Git commit: 最新の git commit を取得し、 run ページの Overviewタブ に表示します。また、未コミットの変更がある場合は diff.patch ファイルも表示されます。
  • 依存関係: requirements.txt ファイルがアップロードされ、 run ページの 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 の メトリクス 名は特定の命名規則に従う必要があります。
  • Allowed characters: Letters (A-Z, a-z), digits (0-9), and underscores (_)
  • Starting character: Names must start with a letter or underscore
  • Pattern: Metric names should match /^[_a-zA-Z][_a-zA-Z0-9]*$/
メトリクス 名に無効な文字(カンマ、スペース、特殊記号など)を使用しないでください。 W&B UI でのソート、クエリ、表示に問題が発生する可能性があります。
Valid metric names:
with wandb.init() as run:
  run.log({"accuracy": 0.9, "val_loss": 0.1, "epoch_5": 5})
  run.log({"modelAccuracy": 0.95, "learning_rate": 0.001})
Invalid metric names (avoid these):
with wandb.init() as run:
  run.log({"acc,val": 0.9})  # Contains comma
  run.log({"loss-train": 0.1})  # Contains hyphen
  run.log({"test acc": 0.95})  # Contains space
  run.log({"5_fold_cv": 0.8})  # Starts with number

一般的なワークフロー

  1. 最高精度の比較: Runs 間で メトリクス の最高値を比較するには、その メトリクス の サマリー 値を設定します。 デフォルトでは、 サマリー は各 キー に対して最後に ログ 記録された値に設定されます。 これは UI の テーブル で役立ち、 サマリー メトリクス に基づいて Runs をソートおよびフィルタリングできるため、最終的な精度ではなく 最高の 精度に基づいて、 テーブル や棒グラフで Runs を比較するのに役立ちます。 例: wandb.run.summary["best_accuracy"] = best_accuracy
  2. 1つのチャートで複数のメトリクスを表示: 同じ呼び出しで複数の メトリクス を ログ 記録します。 例:
    with wandb.init() as run:
      run.log({"acc": 0.9, "loss": 0.1})
    
    その後、 UI で両方の メトリクス をプロットできます。
  3. x 軸のカスタマイズ: 同じ ログ 呼び出しにカスタム x 軸を追加して、 W&B ダッシュボード で別の軸に対して メトリクス を視覚化します。 例:
    with wandb.init() as run:
      run.log({'acc': 0.9, 'epoch': 3, 'batch': 117})
    
    特定の メトリクス に対してデフォルトの x 軸を設定するには、 Run.define_metric() を使用します。
  4. リッチメディアとチャートのログ記録: wandb.Run.log() は、 画像やビデオなどのメディア から Tablesカスタムチャート まで、幅広い データ タイプ の ログ 記録をサポートしています。

ベストプラクティスとヒント

Experiments と ログ 記録に関する ベストプラクティス とヒントについては、 Best Practices: Experiments and Logging を参照してください。