Weights & Biases (简称 wandb) 是一个强大的实验跟踪工具,广泛用于机器学习和深度学习项目中。它可以帮助你跟踪实验指标、可视化结果、比较不同模型性能,并与团队成员轻松共享你的工作。
什么是 wandb?
wandb 提供了一套工具,帮助开发者管理机器学习实验,包括:
实验指标跟踪(损失、准确率等)
超参数记录与比较
模型权重保存与版本控制
实验结果可视化与分享
团队协作功能
安装 wandb
首先,你需要安装 wandb 库:
pip install wandb
基本使用流程
- 初始化与登录
第一次使用时,需要登录你的 wandb 账号:
import wandb
# 登录(第一次运行会提示你在浏览器中授权)
wandb.login()
运行后,会出现一个链接,点击后在浏览器中登录或创建账号,然后返回终端完成授权。
2. 初始化实验
每次实验开始时,使用 wandb.init() 初始化:
# 初始化一个新的实验
wandb.init(
project="我的第一个项目", # 项目名称
name="实验1", # 实验名称(可选)
config={ # 超参数配置(可选)
"learning_rate": 0.01,
"epochs": 10,
"batch_size": 32
}
)
# 可以通过 wandb.config 访问配置
config = wandb.config
- 跟踪指标
在训练过程中,使用 wandb.log() 记录关键指标:
import wandb
import random
import time
# 登录wandb
wandb.login()
# 初始化实验
wandb.init(
project="wandb-tutorial",
name="example-training",
config={
"learning_rate": 0.001,
"epochs": 50,
"batch_size": 64,
"model_architecture": "CNN"
}
)
config = wandb.config
# 模拟训练过程
for epoch in range(config.epochs):
# 模拟训练指标
loss = 0.5 * (1.0 / (epoch + 1)) + random.uniform(-0.01, 0.01)
accuracy = 0.5 + 0.4 * (epoch / config.epochs) + random.uniform(-0.01, 0.01)
# 记录指标
wandb.log({
"训练损失": loss,
"训练准确率": accuracy,
"学习率": config.learning_rate * (0.95 ** epoch) # 模拟学习率衰减
}, step=epoch)
# 打印进度
if (epoch + 1) % 10 == 0:
print(f"Epoch {epoch+1}/{config.epochs} - 损失: {loss:.4f} - 准确率: {accuracy:.4f}")
time.sleep(0.1) # 模拟训练耗时
# 训练结束
print("训练完成!")
# 可以保存模型文件
# wandb.save("model.h5")
# 结束实验
wandb.finish()
- 查看实验结果
运行代码后,会自动生成一个链接,点击即可在浏览器中查看实验面板:
wandb: View run example-training at: https://wandb.ai/your-username/wandb-tutorial/runs/xxxxxx
在面板中,你可以看到:
指标随时间变化的图表
超参数配置
系统资源使用情况
实验比较工具
5. 跟踪更多内容
除了基本指标,wandb 还可以跟踪:
图像
# 跟踪图像(例如模型生成的图像或混淆矩阵)
wandb.log({"示例图像": wandb.Image(your_image_array)})
模型文件
# 保存并跟踪模型文件
torch.save(model.state_dict(), "model.pt")
wandb.save("model.pt")
表格数据
# 跟踪表格数据
data = [[1, 2], [3, 4]]
table = wandb.Table(data=data, columns=["x", "y"])
wandb.log({"示例表格": table})
使用命令行工具
wandb 还提供了命令行工具,方便管理实验:
# 查看项目中的实验
wandb runs list
# 恢复一个中断的实验
wandb resume
# 同步本地实验到云端
wandb sync
高级功能
实验比较:在网页界面中选择多个实验,比较它们的指标和超参数
Sweeps:自动超参数优化
Reports:创建交互式报告分享实验结果
Artifacts:跟踪数据集、模型等大型文件
总结
wandb 是机器学习项目中非常实用的工具,它能帮助你:
系统化地记录实验过程
直观地比较不同实验结果
轻松分享你的工作
避免 “我上次是怎么得到这个结果的?” 这样的问题
通过本文的介绍,你已经掌握了 wandb 的基本用法。要了解更多高级功能,可以查看 官方文档。