メインコンテンツへスキップ
学習中に時間とともに変化する値に加えて、モデルや前処理ステップ全体を要約する単一の値を追跡することが重要な場合がよくあります。この情報は W&B Run の summary 辞書にログします。Run の summary 辞書は、numpy 配列、PyTorch テンソル、TensorFlow テンソルを扱うことができます。値がこれらの型のいずれかである場合、テンソル全体をバイナリファイルとして保持し、summary オブジェクトには min、mean、variance、percentiles などの高レベルなメトリクスを保存します。 wandb.Run.log() で最後にログされた値は、自動的に W&B Run の summary 辞書に設定されます。summary 辞書内のメトリクスを変更すると、以前の値は失われます。 次のコードスニペットは、W&B にカスタムのサマリーメトリクスを提供する方法を示しています。
import wandb
import argparse

with wandb.init(config=args) as run:
  best_accuracy = 0
  for epoch in range(1, args.epochs + 1):
      test_loss, test_accuracy = test()
      if test_accuracy > best_accuracy:
          run.summary["best_accuracy"] = test_accuracy
          best_accuracy = test_accuracy
学習完了後でも、既存の W&B run の summary 属性を更新できます。W&B Public API を使用して summary 属性を更新します:
api = wandb.Api()
run = api.run("username/project/run_id")
run.summary["tensor"] = np.random.random(1000)
run.summary.update()

サマリーメトリクスをカスタマイズする

カスタムサマリーメトリクスは、run.summary に学習中の最良ステップにおけるモデル性能を記録するのに役立ちます。たとえば、最終値ではなく、最大の accuracy や最小の loss の値を記録したい場合に利用できます。 デフォルトでは、サマリーには履歴の最終値が使用されます。サマリーメトリクスをカスタマイズするには、define_metricsummary 引数を渡します。指定できる値は次のとおりです。
  • "min"
  • "max"
  • "mean"
  • "best"
  • "last"
  • "none"
"best" は、オプション引数 objective"minimize" または "maximize" に設定した場合にのみ使用できます。 次の例では、loss と accuracy の最小値と最大値をサマリーに追加しています。
import wandb
import random

random.seed(1)

with wandb.init() as run:
    # lossの最小値と最大値のサマリー
    run.define_metric("loss", summary="min")
    run.define_metric("loss", summary="max")

    # accuracyの最小値と最大値のサマリー
    run.define_metric("acc", summary="min")
    run.define_metric("acc", summary="max")

    for i in range(10):
        log_dict = {
            "loss": random.uniform(0, 1 / (i + 1)),
            "acc": random.uniform(1 / (i + 1), 1),
        }
        run.log(log_dict)

サマリーメトリクスを表示する

run の Overview ページまたはプロジェクトの Runs テーブルでサマリー値を確認できます。
  1. W&B App を開きます。
  2. プロジェクトのサイドバーから Workspace タブを選択します。
  3. サマリー値をログした run をクリックします。run ページが開き、デフォルトで Overview タブが表示されます。
  4. Summary セクションでサマリー値を確認します。
Run overview