メインコンテンツへスキップ
W&B Python SDK を使用して、メトリクス、メディア、またはカスタムオブジェクトの辞書を step にログします。W&B は各 step でキーと値のペアを収集し、wandb.Run.log() でデータをログするたびに、1 つの統合辞書に保存します。スクリプトからログされたデータは、まずローカルマシン上の wandb というディレクトリに保存され、その後 W&B cloud または private server に同期されます。
キーと値のペアが 1 つの統合辞書に保存されるのは、各 step に同じ値を渡した場合のみです。step に異なる値をログすると、W&B は収集したすべてのキーと値をメモリに書き込みます。
wandb.Run.log() を呼び出すたびに、デフォルトでは新しい step が作成されます。W&B はチャートとパネルの作成時に、steps をデフォルトの x 軸として使用します。必要に応じて、カスタム x 軸を作成して使用したり、カスタム summary メトリクスを取得したりすることもできます。詳細は, Customize log axes を参照してください。
step (0、1、2、…) の連続する値をログするには、wandb.Run.log()を使用してください。履歴内の特定の step に書き込むことはできません。W&B が書き込めるのは、「現在」の step と「次」の step のみです。

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

W&B は、W&B Experiment の実行中に次の情報を自動的にログします。
  • システムメトリクス: CPU と GPU の使用率、ネットワークなど。GPU については、nvidia-smi を使って取得されます。
  • コマンドライン: stdout と stderr が取得され、run page. の logs タブに表示されます。
以下をログするには、アカウントの Settings pageCode Saving を有効にします。
  • 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 にストリーミングするには、それらを明示的にログする必要があります。
  • プロット: wandb.plot()wandb.Run.log() と組み合わせて使用し、チャートをトラッキングします。詳細は プロット をログする を参照してください。
  • : wandb.Table を使用してデータをログし、W&B で可視化やクエリを行います。詳細は 表 をログする を参照してください。
  • PyTorch gradients: wandb.Run.watch(model) を追加すると、重みの勾配を UI 上でヒストグラムとして確認できます。
  • 設定情報: ハイパーパラメーター、データセットへのリンク、または使用しているアーキテクチャ名を設定パラメーターとしてログします。指定方法は次のとおりです: wandb.init(config=your_config_dictionary).
  • メトリクス: wandb.Run.log() を使用すると、モデルのメトリクスを確認できます。トレーニングループ内で accuracy や損失 などのメトリクスをログすると、UI でライブ更新されるグラフが表示されます。

メトリクス名の命名制約

GraphQL の制限により、W&B のメトリクス名は特定の命名規則に従う必要があります。
  • 使用可能な文字: 英字 (A-Z、a-z) 、数字 (0-9) 、およびアンダースコア (_)
  • 先頭文字: 名は英字またはアンダースコアで始める必要があります
  • パターン: メトリクス名は /^[_a-zA-Z][_a-zA-Z0-9]*$/ に一致する必要があります
無効な文字 (カンマ、スペース、特殊記号など) を含む名前をメトリクスに付けることは避けてください。W&B UI での並べ替え、クエリ、表示で問題が発生する可能性があります。
有効なメトリクス名:
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})
無効なメトリクス名 (以下は避けてください) :
with wandb.init() as run:
  run.log({"acc,val": 0.9})  # カンマを含む
  run.log({"loss-train": 0.1})  # ハイフンを含む
  run.log({"test acc": 0.95})  # スペースを含む
  run.log({"5_fold_cv": 0.8})  # 数字で始まる

一般的なワークフロー

  1. 最高の精度を比較する: run 間でメトリクスの最高値を比較するには、そのメトリクスの summary 値を設定します。デフォルトでは、summary には各キーについて最後にログした値が設定されます。これは UI の表で便利です。summary メトリクスに基づいて run を並べ替えたりフィルターしたりできるため、最終的な精度ではなく、最高の 精度に基づいて表や棒グラフで run を比較しやすくなります。例: wandb.run.summary["best_accuracy"] = best_accuracy
  2. 1 つのチャートに複数のメトリクスを表示する: 同じ call で複数のメトリクスをログします。例:
    with wandb.init() as run:
      run.log({"acc": 0.9, "loss": 0.1})
    
    その後、UI で両方のメトリクスをプロットできます。
  3. x-axis をカスタマイズする: 同じ log call にカスタム x-axis を追加すると、W&B ダッシュボードで別の軸に対するメトリクスを可視化できます。例:
    with wandb.init() as run:
      run.log({'acc': 0.9, 'epoch': 3, 'batch': 117})
    
    特定のメトリクスのデフォルトの x-axis を設定するには、Run.define_metric() を使用します。
  4. リッチメディアとチャートをログする: wandb.Run.log() は、画像や動画などのメディア から チャート まで、さまざまなデータ型の logging をサポートします。

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

Experiments と logging のベストプラクティスやヒントについては、ベストプラクティス: Experiments と Loggingを参照してください。