使用WandB及SwanLab

在深度学习与机器学习项目中,模型训练过程的可视化、实验管理和结果追踪非常重要。WandB (Weights & Biases)SwanLab 是两个常用工具,可以帮助开发者更高效地管理实验和模型。

  • WandB (Weights & Biases): WandB 是一个实验追踪和可视化平台,支持训练过程监控、超参数调优、模型版本管理等功能。开发者可以方便地记录训练日志、查看损失曲线、对比不同实验结果。

  • SwanLab: SwanLab 是一个面向深度学习和视觉任务的实验平台,支持自动化训练管理、数据集管理和模型部署。它可以快速组织实验,支持多人协作,并提供图形化界面查看训练进度和结果。

本篇文档将分别用实例展示 WandB 和 SwanLab 的基本使用方法。

WandB

官方快速开始文档:wandb/quickstartopen in new window

说明:直接访问 WandB 的云端 API 可能出现网络超时、连接失败等问题。建议使用英博云学术加速服务。参考:学术加速

安装 wandb 并登录

pip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simple
wandb login

如果希望每次都免密登录,全局设置 WANDB_API_KEY 环境变量,即 wandb 登录密钥。

export WANDB_API_KEY=<your_api_key>

API key 的位置在:wandb/api_keyopen in new window

W&B 实验流程包括:使用 init 初始化实验,config 配置超参数,log 分组记录指标,必要时通过 alert 发送告警,最终在 summary 汇总结果并以 finish 结束实验。

参考:wandb/create-an-experimentopen in new window

以下是一个随机数模拟的可直接运行的 WandB 示例,将其保存为 test.py,并运行 python test.py

import random
import wandb

# Launch 5 simulated experiments
total_runs = 5
for run in range(total_runs):
  # Start a new run to track this script
  wandb.init(
      # Set the project where this run will be logged
      project="wandbexample1",
      # We pass a run name (otherwise it’ll be randomly assigned, like sunshine-lollypop-10)
      name=f"experiment_{run}",
      # Track hyperparameters and run metadata
      config={
      "learning_rate": 0.02,
      "architecture": "CNN",
      "dataset": "CIFAR-100",
      "epochs": 10,
      })

  # This simple block simulates a training loop logging metrics
  epochs = 10
  offset = random.random() / 5
  for epoch in range(2, epochs):
      acc = 1 - 2 ** -epoch - random.random() / epoch - offset
      loss = 2 ** -epoch + random.random() / epoch + offset

      # Log metrics from your script to W&B
      wandb.log({"acc": acc, "loss": loss})

  # Mark the run as finished
  wandb.finish()

运行之后会出现以下选择

wandb: (1) Create a W&B account
wandb: (2) Use an existing W&B account
wandb: (3) Don't visualize my results

如果是初次使用 wandb,选择 1,创建新的界面,后续可以按需选择。

成功运行后会在终端打印浏览器链接,点击可直达 WandB 可视化界面。

SwanLab

官方快速开始文档:swanlab快速开始open in new window

安装 SwanLab 并登录

pip install swanlab

如果还没有SwanLab账号,请在 官网open in new window 免费注册。

打开命令行,输入:

swanlab login

用户设置open in new window 页面复制您的 API Key,粘贴后按下回车(你不会看到粘贴后的API Key,请放心这是正常的),即可完成登录。之后无需再次登录。

以下是一个随机数模拟的可直接运行的 SwanLab 示例,将其保存为 test.py,并运行 python test.py

import swanlab
import random

# 初始化SwanLab
run = swanlab.init(
    # 设置项目
    project="my-project",
    # 跟踪超参数与实验元数据
    config={
        "learning_rate": 0.01,
        "epochs": 10,
    },
)

print(f"学习率为{run.config.learning_rate}")

offset = random.random() / 5

# 模拟训练过程
for epoch in range(2, run.config.epochs):
    acc = 1 - 2**-epoch - random.random() / epoch - offset
    loss = 2**-epoch + random.random() / epoch + offset
    print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
    # 记录指标
    swanlab.log({"accuracy": acc, "loss": loss})

成功运行后会在终端打印浏览器链接,点击可直达 SwanLab 可视化界面。

本章目录