Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
トレーニング中に時間とともに変化する値に加えて、モデルや前処理 step を要約する単一の値をトラッキングすることが重要になる場合がよくあります。この情報は、W&B Run の summary 辞書にログします。Run の summary 辞書では、numpy 配列、PyTorch テンソル、TensorFlow テンソルを扱えます。値がこれらのタイプのいずれかである場合、テンソル全体をバイナリファイルとして永続化し、min、mean、variance、percentiles などの高レベルなメトリクスを summary オブジェクトに保存します。
wandb.Run.log() で最後にログされた値は、自動的に W&B Run の summary 辞書に設定されます。summary メトリクスの辞書を変更すると、以前の値は失われます。
次のコードスニペットは、W&B にカスタム summary メトリクスを提供する方法を示しています。
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 属性は、トレーニング完了後に更新できます。summary 属性を更新するには、W&B Public API を使用します。
api = wandb.Api()
run = api.run("username/project/run_id")
run.summary["tensor"] = np.random.random(1000)
run.summary.update()
カスタムサマリーメトリクスを使用すると、トレーニング中の最良のstepにおけるモデル性能を run.summary に記録できます。たとえば、最終値ではなく、精度の最大値や損失の最小値を記録したい場合があります。
デフォルトでは、summary は履歴の最後の値を使用します。サマリーメトリクスをカスタマイズするには、define_metric に summary 引数を渡します。指定できる値は次のとおりです。
"min"
"max"
"mean"
"best"
"last"
"none"
"best" を使用できるのは、省略可能な objective 引数も "minimize" または "maximize" に設定した場合のみです。
次の例では、損失と精度の最小値および最大値を summary に追加します。
import wandb
import random
random.seed(1)
with wandb.init() as run:
# 損失のsummaryの最小値と最大値
run.define_metric("loss", summary="min")
run.define_metric("loss", summary="max")
# accuracyのsummaryの最小値と最大値
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 表で summary 値を表示します。
Run Overview
Run Table
W&B Public API
- W&B App にアクセスします。
- プロジェクトのサイドバーから Workspace タブを選択します。
- summary 値をログした run をクリックします。run ページが開き、デフォルトで Overview タブが表示されます。
- Summary セクションで summary 値を確認します。
- W&B App にアクセスします。
- Runs タブを選択します。
- Runs 表では、summary 値の名に対応する列で summary 値を確認できます。
W&B Public API を使用して、run の summary 値を取得できます。次のコード例は、W&B Public API と pandas を使用して、特定の run にログされた summary 値を取得する方法の 1 つを示しています。import wandb
import pandas
entity = "<your-entity>"
project = "<your-project>"
run_name = "<your-run-name>" # summary 値を持つ run の名
all_runs = []
for run in api.runs(f"{entity}/{project_name}"):
print("Fetching details for run: ", run.id, run.name)
run_data = {
"id": run.id,
"name": run.name,
"url": run.url,
"state": run.state,
"tags": run.tags,
"config": run.config,
"created_at": run.created_at,
"system_metrics": run.system_metrics,
"summary": run.summary,
"project": run.project,
"entity": run.entity,
"user": run.user,
"path": run.path,
"notes": run.notes,
"read_only": run.read_only,
"history_keys": run.history_keys,
"metadata": run.metadata,
}
all_runs.append(run_data)
# DataFrame に変換
df = pd.DataFrame(all_runs)
# 列名 (run) に基づいて行を取得し、辞書に変換
df[df['name']==run_name].summary.reset_index(drop=True).to_dict()