用途
Weights & Biases(W&B)用于机器学习实验跟踪与 MLOps。当你需要跟踪 ML 实验并自动记录指标、在实时仪表盘中可视化训练、跨超参数与配置对比运行结果、使用自动化 sweeps 优化超参数、通过版本与血缘管理模型注册表、在团队工作区中协作 ML 项目,或跟踪数据集、模型、代码等工件及其血缘时,可以使用该技能。
主要能力
- 实验跟踪:通过 wandb.init 初始化运行,使用 wandb.log 记录标量、媒体(图像、音频、视频)、直方图和表格等指标。
- 配置跟踪:在 wandb.init 的 config 中记录超参数,并在训练中通过 wandb.config 访问。
- 模型检查点:使用 wandb.save 上传检查点,或使用 Artifacts 记录模型。
- 超参数 Sweeps:支持 grid、random、bayes 三种搜索方法,通过 sweep_config 定义指标目标与参数分布,使用 wandb.sweep 初始化、wandb.agent 运行试验。
- Artifacts:创建并记录数据集、模型等工件,支持 add_file、add_dir、use_artifact、download 等操作,并保留血缘。
- 模型注册表:将模型工件记录并链接到模型注册表,支持别名(如 best、production)。
- 集成:提供 HuggingFace Transformers、PyTorch Lightning、Keras/TensorFlow 等框架的集成示例。
- 可视化与分析:支持自定义图表、混淆矩阵,以及在 W&B UI 中创建可分享报告。
- 团队协作:运行结果可通过 URL 分享,支持团队项目、团队级工件与模型注册表。
使用方式
安装:
pip install wandb
登录(创建 API key):
wandb login
或以编程方式设置 API key:
export WANDB_API_KEY=your_api_key_here
基础实验跟踪示例:
import wandb
run = wandb.init(
project="my-project",
config={
"learning_rate": 0.001,
"epochs": 10,
"batch_size": 32,
"architecture": "ResNet50"
}
)
for epoch in range(run.config.epochs):
train_loss = train_epoch()
val_loss = validate()
wandb.log({
"epoch": epoch,
"train/loss": train_loss,
"val/loss": val_loss,
"train/accuracy": train_acc,
"val/accuracy": val_acc
})
wandb.finish()
Sweep 配置示例:
sweep_config = {
'method': 'bayes',
'metric': {
'name': 'val/accuracy',
'goal': 'maximize'
},
'parameters': {
'learning_rate': {
'distribution': 'log_uniform',
'min': 1e-5,
'max': 1e-1
},
'batch_size': {
'values': [16, 32, 64, 128]
},
'optimizer': {
'values': ['adam', 'sgd', 'rmsprop']
},
'dropout': {
'distribution': 'uniform',
'min': 0.1,
'max': 0.5
}
}
}
sweep_id = wandb.sweep(sweep_config, project="my-project")
运行 sweep:
wandb.agent(sweep_id, function=train, count=50)
Artifacts 记录示例:
artifact = wandb.Artifact(
name='training-dataset',
type='dataset',
description='ImageNet training split',
metadata={'size': '1.2M images', 'split': 'train'}
)
artifact.add_file('data/train.csv')
artifact.add_dir('data/images/')
wandb.log_artifact(artifact)
模型注册表示例:
model_artifact = wandb.Artifact(
name='resnet50-model',
type='model',
metadata={'architecture': 'ResNet50', 'accuracy': 0.95}
)
model_artifact.add_file('model.pth')
wandb.log_artifact(model_artifact, aliases=['best', 'production'])
run.link_artifact(model_artifact, 'model-registry/production-models')
离线模式:
import os
os.environ["WANDB_MODE"] = "offline"
wandb.init(project="my-project")
# 之后同步:wandb sync <run_directory>
适用场景
- 需要自动记录训练指标并实时可视化训练过程的 ML 实验。
- 需要跨不同超参数与配置对比多次运行结果。
- 需要自动化超参数搜索(grid、random、bayes)。
- 需要管理数据集、模型、代码等工件的版本与血缘。
- 需要模型注册表与别名管理(如 best、production)。
- 需要团队协作、共享运行结果与报告。
- 使用 HuggingFace Transformers、PyTorch Lightning、Keras/TensorFlow 等框架并希望集成实验跟踪。
限制
资料未提供关于该技能在具体平台、运行环境或性能方面的限制说明。资料中提及的定价信息为:Free 版提供无限公开项目与 100GB 存储;Academic 版对学生/研究者免费;Teams 版为 $50/seat/month,含私有项目与无限存储;Enterprise 版为定制定价并支持本地部署选项。