Try in Colab
Keras コールバック
W&B は Keras 用に3つのコールバックを提供しています。wandb v0.13.4から利用可能です。レガシーな WandbCallback は下にスクロールしてください。
-
WandbMetricsLogger: このコールバックは Experiment Tracking に使用します。トレーニングと検証のメトリクス、システムメトリクスを Weights and Biases にログします。 -
WandbModelCheckpoint: モデルのチェックポイントを Weights and Biases の Artifacts にログするためにこのコールバックを使用します。 -
WandbEvalCallback: このベースコールバックは、モデルの予測を Weights and Biases の Tables にログして、インタラクティブな可視化を行います。
- Keras のデザイン哲学に従います。
- すべての機能に対して単一のコールバック (
WandbCallback) を使用する際の認知負荷を減らします。 - Keras ユーザーがコールバックをサブクラス化してニッチなユースケースをサポートできるように簡単に改修できます。
WandbMetricsLogger を使用して実験を追跡
Try in Colab
WandbMetricsLogger は、on_epoch_end や on_batch_end などのコールバックメソッドが引数として取得する Keras の logs 辞書を自動的にログします。
これにより次の項目が追跡されます:
model.compileに定義されたトレーニングと検証のメトリクス。- システム (CPU/GPU/TPU) のメトリクス。
- 学習率(固定値または学習率スケジューラ)。
WandbMetricsLogger リファレンス
WandbModelCheckpoint を使用してモデルをチェックポイント
Try in Colab
WandbModelCheckpoint コールバックを使用して、Keras モデル (SavedModel 形式) またはモデルの重みを定期的に保存し、モデルのバージョン管理のために 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 サーバーからアクセス可能でなければなりません。ただし、ローカルパスを使用してチェックポイントを行い、それを Artifacts としてアップロードすることは可能です。
モデル予測を WandbEvalCallback で可視化
Try in Colab
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 にログします。
W&B の Artifact ページ には、デフォルトでテーブルログが含まれており、Workspace ページには含まれていません。
WandbEvalCallback リファレンス
メモリ使用量の詳細
data_table は on_train_begin メソッドが呼び出されたときに W&B にログされます。一度 W&B アーティファクトとしてアップロードされると、data_table_ref クラス変数を使用してこのテーブルにアクセスすることができます。data_table_ref は 2D リストで、self.data_table_ref[idx][n] のようにインデックスを付けてアクセスできます。この例では、idx は行番号で、n は列番号です。
コールバックのカスタマイズ
on_train_begin や on_epoch_end メソッドをオーバーライドして、より細かい制御を行うことができます。N バッチ後にサンプルをログしたい場合、on_train_batch_end メソッドを実装することができます。
💡
WandbEvalCallback を継承してモデル予測可視化のコールバックを実装している場合、何か明確にすべき点や修正が必要な場合は、問題を報告してお知らせください。issue を開いてください。WandbCallback [レガシー]
WandbCallback クラスを使用して、model.fit で追跡されるすべてのメトリクスと損失値を自動的に保存します。
スクリプトを含む私たちの example repo をご覧ください。ここには Fashion MNISTの例 とそれが生成する W&B ダッシュボード があります。
WandbCallback クラスは、広範なロギング設定オプションをサポートしています:監視するメトリクスの指定、重みや勾配の追跡、トレーニングデータと検証データ上の予測のログなど。
keras.WandbCallback の参考文献のドキュメントも確認してください。より詳細な情報があります。
WandbCallback
- Keras によって収集された任意のメトリクスの履歴データを自動的にログします:
keras_model.compile()に渡された損失とその他の項目。 monitorとmode属性によって定義された “最良” のトレーニングステップに関連付けられたサマリーメトリクスを設定します。これはデフォルトでは最小のval_lossを持つエポックとなります。WandbCallbackはデフォルトで最も良いepochに関連付けられたモデルを保存します。- 勾配とパラメータのヒストグラムをオプションでログします。
- オプションで wandb に視覚化するためのトレーニングおよび検証データを保存します。
WandbCallback リファレンス
よくある質問
Keras のマルチプロセッシングを wandb でどのように使用しますか?
use_multiprocessing=True を設定したときにこのエラーが発生する場合があります:
Sequenceクラスの構築時に、これを追加:wandb.init(group='...')。mainで、if __name__ == "__main__":を使用して、スクリプトロジックの残りをその中に置くようにしてください。