Skip to main content
W&B の Keras コールバックを使用すると、トレーニング中に実験をトラッキングし、モデル チェックポイントをログし、モデルの予測を可視化できます。このインテグレーションを使用すれば、トレーニングループを書き換えることなく、Keras のトレーニングワークフローに実験管理とモデルのバージョン管理を追加できます。 Keras コールバックは、Python SDK バージョン 0.13.4 以降の wandb.integration.keras モジュールで利用できます。W&B Keras インテグレーションには、次のコールバックが用意されています。
  • WandbMetricsLogger: 実験管理に使用するコールバックです。トレーニングと検証のメトリクスを、システムメトリクスとあわせて W&B にログします。
  • WandbModelCheckpoint: モデル チェックポイントを W&B Artifacts にログするためのコールバックです。
  • WandbEvalCallback: モデルの予測を W&B Tables にログし、インタラクティブに可視化できるようにするベースコールバックです。

Keras インテグレーションのインストールとインポート

W&B の最新バージョンをインストールします。
Keras インテグレーションを使用するには、wandb.integration.keras から必要なクラスをインポートします。
以下のセクションでは、各コールバックについてコード例を交えて詳しく説明します。

WandbMetricsLogger で実験をトラッキングする

wandb.integration.keras.WandbMetricsLogger() は、on_epoch_end や on_batch_end などのコールバックメソッドが引数として受け取る Keras の logs 辞書をログします。 次の部分的なサンプルでは、Keras ワークフローでの WandbMetricsLogger() の使い方を示します。まず、使用するオプティマイザー、損失関数、メトリクスを指定してモデルをコンパイルします。次に、wandb.init() を使用して W&B run を初期化します。最後に、WandbMetricsLogger() コールバックを model.fit() に渡します。
前の例では、各エポックの終わりに、loss、accuracy、top@5_accuracy などのトレーニングおよび検証のメトリクスを W&B にログします。

WandbMetricsLogger リファレンス

WandbModelCheckpoint を使用してモデルのチェックポイントを保存する

WandbModelCheckpoint コールバックを使用すると、Keras モデル (SavedModel 形式) またはモデルの重みを定期的に保存し、モデルのバージョン管理のために wandb.Artifact として W&B にアップロードできます。 このコールバックは tf.keras.callbacks.ModelCheckpoint() を継承しているため、親コールバックがチェックポイントの保存ロジックを処理します。 このコールバックは、次のものを保存します。
  • 監視対象のメトリクスに基づいて最高のパフォーマンスを達成したモデル。
  • パフォーマンスにかかわらず、各エポック終了時のモデル。
  • エポック終了時、または一定数のトレーニングバッチ処理後のモデル。
  • モデルの重みのみ、またはモデル全体。
  • SavedModel 形式または .h5 形式のモデル。
このコールバックは WandbMetricsLogger() と併用してください。

WandbModelCheckpoint リファレンス

N エポックごとにチェックポイントをログする

デフォルト (save_freq="epoch") では、コールバックはエポックごとにチェックポイントを作成し、アーティファクトとしてアップロードします。特定のバッチ数ごとにチェックポイントを作成するには、save_freq に整数を設定します。N エポックごとにチェックポイントを作成するには、train データローダーのカーディナリティを計算して save_freq に渡します。

TPU アーキテクチャでチェックポイントを効率的にログする

TPU でチェックポイントを保存する際に、UnimplementedError: File system scheme '[local]' not implemented というエラーメッセージが表示される場合があります。これは、モデルのディレクトリ (filepath) にクラウドストレージバケットのパス (gs://bucket-name/...) を使用する必要があり、このバケットに TPU サーバーからアクセスできる必要があるためです。一方、W&B はチェックポイントの保存にローカルパスを使用し、その後、チェックポイントをアーティファクトとしてアップロードします。

WandbEvalCallback を使用してモデルの予測を可視化する

WandbEvalCallback() は Keras コールバックを構築するための抽象基底クラスで、主にモデルの予測の可視化、副次的にデータセットの可視化を目的としています。 この抽象コールバックは、データセットやタスクに依存しません。使用するには、この基底 WandbEvalCallback() コールバッククラスを継承し、add_ground_truth メソッドと add_model_prediction メソッドを実装します。 WandbEvalCallback() は、次の処理を行うメソッドを提供するユーティリティクラスです。
  • データおよび予測の wandb.Table() インスタンスを作成する。
  • データおよび予測の表を wandb.Artifact() としてログする。
  • on_train_begin でデータ表をログする。
  • on_epoch_end で予測の表をログする。
次の例では、画像分類タスクに WandbClfEvalCallback を使用します。この例のコールバックは、検証データ (data_table) を W&B にログし、推論を実行して、各エポックの終了時に予測 (pred_table) を W&B にログします。

WandbEvalCallback リファレンス

メモリ使用量の詳細

W&B は、on_train_begin メソッドの呼び出し時に data_table をログします。W&B がこれを W&B Artifact としてアップロードすると、この表への参照が得られます。この参照には、data_table_ref クラス変数を使用してアクセスできます。data_table_ref は 2 次元リストで、self.data_table_ref[idx][n] のようにインデックスを指定してアクセスできます。idx は行番号、n は列番号です。使用方法については、次の例を参照してください。

コールバックのカスタマイズ

データと予測をログするタイミングをより細かく制御するには、デフォルトのコールバックメソッドをオーバーライドできます。on_train_begin または on_epoch_end メソッドをオーバーライドすると、より詳細に制御できます。N バッチ後にサンプルをログする場合は、on_train_batch_end メソッドを実装できます。
WandbEvalCallback を継承してモデルの予測を可視化するコールバックを実装する際に、不明な点や修正が必要な点がある場合は、issue を作成してください。

レガシー WandbCallback

WandbCallback は、従来のオールインワン型のコールバックです。新しい project では、前のセクションで説明した専用のコールバック (WandbMetricsLogger、WandbModelCheckpoint、WandbEvalCallback) を使用してください。W&B ライブラリの WandbCallback() クラスを使用すると、model.fit() で追跡されるすべてのメトリクスと損失の値を保存できます。
短い動画 Keras と W&B を 1 分以内で使い始めるをご覧いただけます。 より詳しい動画は、W&B を Keras と統合するをご覧ください。Colab Jupyter ノートブックも確認できます。 その他のサンプルスクリプトについては、W&B サンプルリポジトリをご覧ください。Fashion MNIST のサンプルと、それによって生成される W&B ダッシュボードも含まれています。 WandbCallback クラスは、監視するメトリクスの指定、重みと勾配のトラッキング、training_data と validation_data に対する予測のログなど、ログする際の設定オプションをサポートしています。 詳細については、keras.WandbCallback のリファレンスドキュメントをご覧ください。 WandbCallback:
  • Keras が収集したすべてのメトリクス (損失および keras_model.compile() に渡されたもの) の履歴データをログします。
  • monitor 属性と mode 属性で定義された “最良” のトレーニングステップに関連付けられた run のサマリー メトリクスを設定します。デフォルトでは、val_loss が最小となるエポックです。デフォルトで、WandbCallback は最良の epoch に関連付けられたモデルを保存します。
  • オプションで、勾配とパラメーターのヒストグラムをログします。
  • オプションで、wandb で可視化するためにトレーニングデータと検証データを保存します。

WandbCallback リファレンス

よくある質問

wandb と Keras のマルチプロセッシングを使用する

use_multiprocessing=True を設定すると、次のエラーが発生することがあります:
回避するには、次の手順を実行します。
  1. Sequence クラスの構築時に、wandb.init(group='...') を追加します。
  2. main では、必ず if __name__ == "__main__": を使用し、その中にスクリプトの残りのロジックを配置します。
最終更新日 2026年9月30日