使用WandB及SwanLab
在深度学习与机器学习项目中,模型训练过程的可视化、实验管理和结果追踪非常重要。WandB (Weights & Biases) 和 SwanLab 是两个常用工具,可以帮助开发者更高效地管理实验和模型。
WandB (Weights & Biases): WandB 是一个实验追踪和可视化平台,支持训练过程监控、超参数调优、模型版本管理等功能。开发者可以方便地记录训练日志、查看损失曲线、对比不同实验结果。
SwanLab: SwanLab 是一个面向深度学习和视觉任务的实验平台,支持自动化训练管理、数据集管理和模型部署。它可以快速组织实验,支持多人协作,并提供图形化界面查看训练进度和结果。
本篇文档将分别用实例展示 WandB 和 SwanLab 的基本使用方法。
WandB
官方快速开始文档:wandb/quickstart
说明:直接访问 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_key
W&B 实验流程包括:使用 init
初始化实验,config
配置超参数,log
分组记录指标,必要时通过 alert
发送告警,最终在 summary
汇总结果并以 finish
结束实验。
以下是一个随机数模拟的可直接运行的 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快速开始
安装 SwanLab 并登录
pip install swanlab
如果还没有SwanLab账号,请在 官网 免费注册。
打开命令行,输入:
swanlab login
在 用户设置 页面复制您的 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 可视化界面。