INCREMENTAL モードは W&B Server v0.70.0 以降でサポートされます。表を作成してログする
wandb.init()で新しい run を初期化します。wandb.Tableクラスを使用して Table オブジェクトを作成します。columnsとdataの各パラメーターに、表の列とデータをそれぞれ指定します。オプションのlog_modeパラメーターを 3 つのモードのいずれかに設定することを推奨します:IMMUTABLE(デフォルト)、MUTABLE、またはINCREMENTAL。詳細については、次のセクションの Table ログモード を参照してください。run.log()で表を W&B にログします。
a と b、および 2 行のデータ ["a1", "b1"] と ["a2", "b2"] を持つ表を作成してログする方法を示しています:
ログモード
wandb.Table の log_mode パラメーターは、ML 実験中に表をどのようにログし、更新するかを決定します。log_mode パラメーターは、IMMUTABLE、MUTABLE、INCREMENTAL の 3 つの引数のいずれかを受け入れます。モードによって、表のログ方法、変更方法、および W&B アプリでのレンダリング方法が異なります。
以下に、3 つのログモードの定義、主な違い、および各モードの一般的なユースケースを示します。
次のセクションでは、各モードのコードスニペット例と、各モードを使用する際の考慮事項を示します。
MUTABLE モード
MUTABLE モードでは、既存の表を新しい表に置き換えることで表を更新します。MUTABLE モードは、反復処理ではないプロセスで既存の表に新しい列や行を追加する場合に便利です。UI では、最初にログした後に追加された列や行も含め、すべての行と列が表にレンダリングされます。
MUTABLE モードでは、表をログするたびに表オブジェクトが置き換えられます。表を新しい表で上書きする処理は計算コストが高く、大きな表では時間がかかる場合があります。MUTABLE モードで表を作成してログし、その後に新しい列を追加する方法を示します。表オブジェクトは 3 回ログされます。1 回目は初期データ、2 回目は信頼度スコア、3 回目は最終的な予測を追加した時点です。
次の例では、データの読み込みに仮の関数
load_eval_data() を、予測に仮の関数 model.predict() を使用しています。これらは、ご自身のデータ読み込み関数と予測関数に置き換えてください。INCREMENTAL モード を使用することを検討してください。
段階的モード
段階的モードでは、機械学習の実験中に行をバッチ単位で表にログします。これは、長時間実行されるジョブのモニタリングや、更新のたびに run 中にログすると非効率になる大きな表を扱う場合に最適です。UI では、行がログされるたびに表に新しい行が追加されるため、run 全体の終了を待たずに最新のデータを確認できます。また、増分を順に切り替えて、さまざまな時点の表を確認することもできます。W&B アプリ の run ワークスペースには、増分数の上限が 100 あります。100 を超える増分をログした場合、run ワークスペースには最新の 100 のみが表示されます。
INCREMENTAL モードで表を作成してログした後、新しい行を追加します。表はトレーニングステップ (step) ごとに 1 回ログされます。
次の例では、データを読み込むための仮の関数
get_training_batch()、モデルをトレーニングするための仮の関数 train_model_on_batch()、予測を行うための仮の関数 predict_on_batch() を使用しています。これらを独自のデータ読み込み、トレーニング、予測の関数に置き換える必要があります。log_mode=MUTABLE) よりも計算効率が高くなります。ただし、多数の増分をログすると、W&B アプリ が表のすべての行をレンダリングしない場合があります。run の実行中に表のデータを更新して表示し、すべてのデータを分析に利用できるようにしたい場合は、2 つの表の使用を検討してください。一方のログモードを INCREMENTAL に、もう一方を IMMUTABLE に設定します。
次の例では、INCREMENTAL と IMMUTABLE のログモードを組み合わせて、これを実現する方法を示します。
incr_table を段階的にログします (log_mode="INCREMENTAL" を使用) 。これにより、新しいデータが処理されるたびに、表の更新をログして表示できます。トレーニングの終了時に、段階的な表のすべてのデータを含む不変の表 (final_table) が作成されます。不変の表をログすることで、完全なデータセットを追加の分析用に保存し、W&B アプリ ですべての行を表示できます。
サンプル
MUTABLE を使用して評価結果を拡充する
段階的な表を使用した run の再開
run を再開すると、段階的な表にログし続けることができます。wandb.Run.define_metric("<table_key>", summary="none") または wandb.Run.define_metric("*", summary="none") を使用して、段階的な表に使用するキーのサマリーを無効にすると、増分は新しい表にログされます。