[ PROMPT_NODE_22692 ]
weights-and-biases
[ SKILL_DOCUMENTATION ]
# Weights & Biases:机器学习实验跟踪与 MLOps
## 何时使用此技能
当您需要执行以下操作时,请使用 Weights & Biases (W&B):
- **跟踪机器学习实验**,通过自动指标记录
- **实时可视化训练**,在仪表板中查看
- **比较运行结果**,跨超参数和配置
- **优化超参数**,通过自动化的扫描(Sweeps)
- **管理模型注册表**,通过版本控制和血缘关系
- **协作机器学习项目**,通过团队工作区
- **跟踪工件**(数据集、模型、代码),通过血缘关系
**用户量**:20万+ 机器学习从业者 | **GitHub 星标**:1.05万+ | **集成**:100+
## 安装
bash
# 安装 W&B
pip install wandb
# 登录 (创建 API 密钥)
wandb login
# 或以编程方式设置 API 密钥
export WANDB_API_KEY=your_api_key_here
## 快速入门
### 基础实验跟踪
python
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()
### 与 PyTorch 集成
python
import torch
import wandb
# 初始化
wandb.init(project="pytorch-demo", config={
"lr": 0.001,
"epochs": 10
})
# 访问配置
config = wandb.config
# 训练循环
for epoch in range(config.epochs):
for batch_idx, (data, target) in enumerate(train_loader):
# 前向传播
output = model(data)
loss = criterion(output, target)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 每 100 个批次记录一次
if batch_idx % 100 == 0:
wandb.log({
"loss": loss.item(),
"epoch": epoch,
"batch": batch_idx
})
# 保存模型
torch.save(model.state_dict(), "model.pth")
wandb.save("model.pth") # 上传到 W&B
wandb.finish()
## 核心概念
### 1. 项目 (Projects) 和 运行 (Runs)
**项目 (Project)**:相关实验的集合
**运行 (Run)**:训练脚本的单次执行
python
# 创建/使用项目
run = wandb.init(
project="image-classification",
name="resnet50-e