実験でのメディアとオブジェクトのログ
W&B Python SDKを使って、メトリクス、メディア、カスタムオブジェクトのディクショナリをステップごとにログに記録します。W&Bは、各ステップでキーと値のペアを収集し、wandb.log()
でデータをログに記録するたびに、統合されたディクショナリに保存します。スクリプトからのログデータは、wandb
というディレクトリーにローカルマシンに保存され、W&Bクラウドまたはプライベートサーバーに同期されます。
同じ値を各ステップに渡す場合、キーと値のペアは統合されたディクショナリに保存されます。step
の異なる値をログに記録する場合、W&Bは収集されたすべてのキーと値をメモリに書き込みます。
wandb.log
を呼び出すごとに、デフォルトで新しいstep
が作成されます。W&Bは、チャートやパネルを作成するときに、ステップをデフォルトのx軸として使用します。カスタムx軸を作成・使用することもできますし、カスタムサマリーメトリックをキャプチャすることもできます。詳細については、カスタムログ軸の設定を参照してください。
wandb.log()
を使用して、連続した値を各 step
ごとにログに記録してください:0, 1, 2, ...。特定の履歴ステップに書き込むことはできません。W&Bは、「現在」および「次」のステップにのみ書き込みます。
自動的にログされるデータ
W&Bは、W&B実験中に自動的に以下の情報をログします。
- システムメトリクス: CPUやGPUの利用率、ネットワークなど。これらは、runページのシステムタブに表示されます。GPUの場合は、
nvidia-smi
でフェッチされます。 - コマンドライン: stdoutとstderrが取得され、runページのログタブに表示されます。
- Gitコミット: 最新のgitコミットを取得し、runページの概要タブに表示されます。また、未コミットの変更がある場合は、
diff.patch
ファイルも表示されます。 - 依存関係:
requirements.txt
ファイルがアップロードされ、runページのファイルタブに表示されます。また、runのwandb
ディレクトリに保存されたファイルも表示されます。
W&B API呼び出しでどのようなデータがログされるか?
W&Bでは、ログするデータを自分で決めることができます。以下は、一般的にログされるオブジェクトのいくつかをリストしています。
- データセット: 画像やその他のデータセットのサンプルをW&Bにストリーミングするために、特にログしなければなりません。
- プロット:
wandb.plot
をwandb.log
と共に使用してチャートをトラッキングします。詳細については、プロットのログを参照してください。 - テーブル:
wandb.Table
を使用して、W&Bで可視化やクエリができるデータをログします。詳細については、テーブルのログを参照してください。 - PyTorchの勾配:
wandb.watch(model)
を追加すると、UIで重みの勾配がヒストグラムとして表示されます。 - 設定情報: ハイパーパラメータ、データセットへのリンク、使用しているアーキテクチャーの名前などを設定パラメータとしてログします。これは、
wandb.init(config=your_config_dictionary)
のように渡されます。詳細については、PyTorchインテグレーションページを参照してください。 - メトリクス:
wandb.log
を使ってモデルのメトリクスを確認します。トレーニングループ内で精度や損失などのメトリクスをログすると、UIでリアルタイムに更新されるグラフが表示されます。
一般的なワークフロー
最高精度を比較する: メトリクスの最高値をrun間で比較するには、そのメトリクスのサマリー値を設定します。デフォルトでは、サマリーは各キーに対してログした最後の値に設定されます。これは、UIのテーブルでrunをサマリーメトリクスに基づいて並べ替えやフィルタリングができるため便利です。こうすることで、最終精度ではなく、 最高 精度に基づいてテーブルや棒グラフでrunを比較できます。例えば、サマリーを次のように設定できます:
wandb.run.summary["best_accuracy"] = best_accuracy
1つのチャートに複数のメトリックス:
wandb.log
の同じ呼び出しで複数のメトリクスをログし、次のようにします:wandb.log({"acc'": 0.9, "loss": 0.1})
そうすると、UIでプロットするための両方が利用可能になります。カスタムx軸: カスタムx軸を同じログ呼び出しに追加して、W&Bダッシュボードでメトリクスを別の軸に対して可視化します。例:
wandb.log({'acc': 0.9, 'epoch': 3, 'batch': 117})
。特定のメトリックスのデフォルトのx軸を設定するには、Run.define_metric()を使用してください。豊富なメディアとチャートのログ:
wandb.log
は、画像やビデオなどのメディアからテーブルやチャートまで、幅広いデータタイプのログをサポートしています。