Weights & Biases (wandb) 是机器学习实验管理平台,支持自动记录实验配置、可视化训练过程、超参数搜索。

快速开始

pip install wandb
wandb login
import wandb
 
wandb.init(project="my_project", config={
    "batch_size": 32,
    "learning_rate": 0.001,
    "epochs": 10,
})

记录训练指标

for epoch in range(epochs):
    train_loss = train_one_epoch()
    val_loss, val_acc = validate_model()
 
    wandb.log({
        "epoch": epoch,
        "train_loss": train_loss,
        "val_loss": val_loss,
        "val_accuracy": val_acc
    })

超参数搜索 (Sweep)

定义搜索空间

sweep_config = {
    'method': 'bayes',  # grid/random/bayes
    'metric': {'name': 'val_accuracy', 'goal': 'maximize'},
    'parameters': {
        'batch_size': {'values': [16, 32, 64, 128]},
        'learning_rate': {'min': 1e-5, 'max': 1e-1},
        'epochs': {'value': 10}
    }
}

启动 Sweep

sweep_id = wandb.sweep(sweep_config, project="my_project")
wandb.agent(sweep_id, function=train, count=10)

训练函数模板

def train():
    wandb.init()
    config = wandb.config
 
    for epoch in range(config.epochs):
        loss = train_one_epoch(config.batch_size, config.learning_rate)
        wandb.log({"loss": loss})

早停机制

wandb.init(
    project="my_project",
    early_stopping_metric="val_loss",
    early_stopping_threshold=0.01
)

核心功能

功能说明
实验记录自动记录配置、指标、输出
可视化训练曲线、参数重要性、并行坐标图
Sweep自动超参数搜索(Grid/Random/Bayes)
Artifacts模型版本管理、数据集追踪
Reports实验报告生成与分享

Web 界面分析

  • Sweep Overview:查看不同超参数组合性能
  • Hyperparameter Importance:分析参数对性能的影响
  • Parallel Coordinates Plot:多维度性能对比