WandbLogger を介して PyTorch Lightning ライブラリに直接組み込まれています。
Lightning とのインテグレーション
- PyTorch Logger
- Fabric Logger
wandb.log() の使用:
WandbLogger は Trainer の global_step を使用して W&B にログを記録します。コード内で直接 wandb.log を追加で呼び出す場合は、wandb.log() の step 引数を 使用しないでください。代わりに、他のメトリクスと同様に Trainer の global_step をログに記録してください:
サインアップと APIキー の作成
APIキー は、お使いのマシンを W&B に対して認証します。ユーザープロファイルから APIキー を生成できます。For a more streamlined approach, create an API key by going directly to User Settings. Copy the newly created API key immediately and save it in a secure location such as a password manager.
- 右上隅にあるユーザープロファイルアイコンをクリックします。
- User Settings を選択し、API Keys セクションまでスクロールします。
wandb ライブラリのインストールとログイン
wandb ライブラリをローカルにインストールしてログインするには:
- コマンドライン
- Python
- Python notebook
-
WANDB_API_KEY環境変数 に APIキー を設定します。 -
wandbライブラリをインストールしてログインします。
PyTorch Lightning の WandbLogger を使用する
PyTorch Lightning には、メトリクス、モデルの重み、メディアなどをログに記録するための複数の WandbLogger クラスがあります。
Lightning と統合するには、WandbLogger をインスタンス化し、Lightning の Trainer または Fabric に渡します。
- PyTorch Logger
- Fabric Logger
一般的なロガー引数
以下はWandbLogger で最もよく使用されるパラメータの一部です。すべてのロガー引数の詳細については、PyTorch Lightning のドキュメントを確認してください。
| パラメータ | 説明 |
|---|---|
project | ログを記録する W&B の Projects を定義します |
name | W&B の Runs に名前を付けます |
log_model | log_model="all" の場合はすべてのモデルを、log_model=True の場合はトレーニング終了時にログを記録します |
save_dir | データが保存されるパス |
ハイパーパラメータのログ記録
- PyTorch Logger
- Fabric Logger
追加のコンフィグパラメータのログ記録
勾配、パラメータのヒストグラム、モデル構造のログ記録
モデルオブジェクトをwandblogger.watch() に渡すことで、トレーニング中にモデルの勾配とパラメータを監視できます。詳細は PyTorch Lightning の WandbLogger ドキュメントを参照してください。
メトリクスのログ記録
- PyTorch Logger
- Fabric Logger
WandbLogger を使用している場合、training_step や validation_step メソッドなどの LightningModule 内で self.log('my_metric_name', metric_vale) を呼び出すことで、メトリクスを W&B にログ記録できます。以下のコードスニペットは、メトリクスと LightningModule のハイパーパラメータをログに記録するための LightningModule の定義方法を示しています。この例では、torchmetrics ライブラリを使用してメトリクスを計算しています。メトリクスの最小値/最大値のログ記録
W&B のdefine_metric 関数を使用すると、W&B サマリーメトリクスに、そのメトリクスの最小値、最大値、平均値、または最良値のどれを表示するかを定義できます。define_metric が使用されない場合は、最後にログに記録された値がサマリーメトリクスに表示されます。詳細は define_metric の リファレンスドキュメント および ガイド を参照してください。
W&B サマリーメトリクスで最大検証精度を追跡するように W&B に指示するには、トレーニングの開始時に一度だけ wandb.define_metric を呼び出します。
- PyTorch Logger
- Fabric Logger
モデルのチェックポイント作成
モデルのチェックポイントを W&B Artifacts として保存するには、 Lightning のModelCheckpoint コールバックを使用し、WandbLogger の log_model 引数を設定します。
- PyTorch Logger
- Fabric Logger
- ロガー経由
- wandb 経由
- PyTorch Logger
- Fabric Logger
画像、テキスト、その他のログ記録
WandbLogger には、メディアをログに記録するための log_image、log_text、log_table メソッドがあります。
また、wandb.log または trainer.logger.experiment.log を直接呼び出して、オーディオ、分子、点群、3D オブジェクトなどの他のメディアタイプをログに記録することもできます。
- 画像のログ記録
- テキストのログ記録
- テーブルのログ記録
WandbLogger を介して W&B にログを記録するタイミングを制御できます。この例では、検証画像と予測のサンプルをログに記録します。
Lightning と W&B で複数の GPU を使用する
PyTorch Lightning は、DDP インターフェースを通じてマルチ GPU サポートを提供しています。ただし、PyTorch Lightning の設計上、GPU のインスタンス化方法に注意する必要があります。 Lightning は、トレーニングループ内の各 GPU(またはランク)が、同じ初期条件でまったく同じようにインスタンス化される必要があると想定しています。しかし、ランク 0 のプロセスのみがwandb.run オブジェクトにアクセスでき、ランクが 0 以外のプロセスの場合は wandb.run = None となります。これにより、ランクが 0 以外のプロセスが失敗する可能性があります。このような状況では、ランク 0 のプロセスが、すでにクラッシュしたランク 0 以外のプロセスの参加を待機するため、デッドロック に陥る可能性があります。
このため、トレーニングコードのセットアップ方法に注意してください。推奨されるセットアップ方法は、コードを wandb.run オブジェクトに依存しないようにすることです。
例
Colab ノートブック付きのビデオチュートリアル で手順を確認できます。よくある質問
W&B は Lightning とどのように統合されますか?
コアとなる統合は Lightningloggers API に基づいており、これによりフレームワークに依存しない方法でログコードの大部分を記述できます。Logger は Lightning Trainer に渡され、その API の豊富な フックとコールバックシステム に基づいてトリガーされます。これにより、研究コードをエンジニアリングやログコードから適切に分離し続けることができます。
追加のコードなしでインテグレーションは何をログに記録しますか?
モデルのチェックポイントを W&B に保存し、そこで表示したり、将来の Runs で使用するためにダウンロードしたりできます。また、GPU 使用率やネットワーク I/O などの システムメトリクス、ハードウェアや OS 情報などの環境情報、コードの状態(git のコミットや diff パッチ、ノートブックの内容、セッション履歴を含む)、および標準出力に印刷されたすべての内容をキャプチャします。トレーニングセットアップで wandb.run を使用する必要がある場合はどうすればよいですか?
アクセスする必要がある変数のスコープを自分自身で拡張する必要があります。言い換えれば、すべてのプロセスで初期条件が同じであることを確認してください。
os.environ["WANDB_DIR"] を使用してモデルのチェックポイントディレクトリをセットアップできます。これにより、ランクが 0 以外のプロセスでも wandb.run.dir にアクセスできるようになります。