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キーを発行する
より手早く行うには、User Settings に直接アクセスしてAPIキーを作成してください。新しく作成したAPIキーはすぐにコピーし、パスワードマネージャーなどの安全な場所に保存してください。
- 右上にあるプロフィールアイコンをクリックします。
- User Settings を選択し、API Keys セクションまでスクロールします。
wandb ライブラリをインストールしてログインする
wandb ライブラリをローカル環境にインストールしてログインするには、次の手順を実行します。
- コマンドライン
- Python
- Python notebook
-
WANDB_API_KEY環境変数に APIキー を設定します。 -
wandbライブラリをインストールし、ログインします。
PyTorch Lightning の WandbLogger を使用する
WandbLogger クラスが複数あります。
Lightning と統合するには、WandbLogger をインスタンス化して、Lightning の Trainer または Fabric に渡します。
- PyTorch Logger
- Fabric Logger
よく使われるロガー引数
WandbLogger でよく使われるパラメーターの一部です。ロガー引数の詳細については、PyTorch Lightning のドキュメントを参照してください。
| パラメーター | 説明 |
|---|---|
project | ログ先の wandb プロジェクトを指定します |
name | wandb の run に名前を付けます |
log_model | log_model="all" の場合はすべてのモデルをログし、log_model=True の場合はトレーニング終了時にログします |
save_dir | データの保存先パス |
ハイパーパラメーターをログする
- PyTorch Logger
- Fabric Logger
追加の設定パラメーターをログする
勾配、パラメーターのヒストグラム、モデルトポロジーをログする
wandblogger.watch() にモデルオブジェクトを渡します。詳しくは、PyTorch Lightning の WandbLogger ドキュメントを参照してください
メトリクスをログする
- PyTorch Logger
- Fabric Logger
WandbLogger を使用している場合は、LightningModule の training_step や validation_step メソッド内で self.log('my_metric_name', metric_vale) を呼び出すことで、メトリクスを W&B にログできます。以下のコードスニペットは、メトリクスと LightningModule のハイパーパラメーターをログするように LightningModule を定義する方法を示しています。この例では、メトリクスの計算に torchmetrics ライブラリを使用します。メトリクスの最小値/最大値をログする
define_metric 関数を使用すると、W&B summary メトリクスにそのメトリクスの最小値、最大値、平均値、または最良値のどれを表示するかを定義できます。define_metric _ を使用しない場合は、最後にログされた値が summary メトリクスに表示されます。詳細については、define_metric のリファレンスドキュメントとガイドを参照してください。
W&B summary メトリクスで検証 accuracy の最大値をトラッキングするには、トレーニングの開始時に wandb.define_metric() を一度だけ call します。
- PyTorch Logger
- Fabric Logger
モデルのチェックポイントを保存する
ModelCheckpoint コールバックを使用し、WandbLogger で log_model 引数を設定します。
- PyTorch Logger
- Fabric Logger
python trainer = Trainer(logger=wandb_logger, callbacks=[checkpoint_callback]) - Logger 経由
- wandb 経由
python # チェックポイントをローカルにダウンロードします(未キャッシュの場合) wandb_logger.download_artifact(checkpoint_reference, artifact_type="model") - PyTorch Logger
- Fabric Logger
画像、テキストなどをログする
WandbLogger には、メディアをログするための log_image、log_text、log_table メソッドがあります。
wandb.log() または trainer.logger.experiment.log() を直接呼び出して、オーディオ、分子、ポイントクラウド、3D オブジェクトなど、ほかのメディアタイプをログすることもできます。
- 画像をログする
- テキストをログする
- Tables をログする
WandbLogger を介して W&B にいつログするかを制御できます。この例では、検証画像と予測のサンプルをログします。
Lightning と W&B で複数の GPU を使用する
wandb.run オブジェクトにアクセスできるのは ランク 0 のプロセスだけで、0 以外の ランク のプロセスでは wandb.run = None になります。これにより、0 以外のプロセスが失敗する可能性があります。このような状況では、ランク 0 のプロセスは、すでにクラッシュした 0 以外の ランク のプロセスが合流するのを待ち続けるため、デッドロック に陥るおそれがあります。
そのため、トレーニングコードの設定方法には注意してください。推奨されるのは、コードを wandb.run オブジェクトに依存しないようにすることです。
例
よくある質問
W&B は Lightning とどのように統合されていますか?
loggers API に基づいており、そのおかげでロギングコードの大部分をフレームワーク非依存の形で記述できます。Logger は Lightning Trainer に渡され、この API の充実した hook-and-callback system によってトリガーされます。これにより、研究用コードをエンジニアリングやロギングのコードから明確に分離できます。
追加のコードを書かなくても、インテグレーションは何をログしますか?
トレーニング設定で wandb.run を使用する必要がある場合はどうすればよいですか?
os.environ["WANDB_DIR"] を使用してモデル チェックポイントのディレクトリを設定できます。これにより、ランクが 0 以外の任意のプロセスから wandb.run.dir にアクセスできます。