Weights & Biases(W&B)는 ML 실험 추적, 모델 최적화, 데이터셋 버전 관리를 위한 MLOps 플랫폼이다. 학습 메트릭, 하이퍼파라미터, 모델 아티팩트를 실시간으로 시각화하고 팀 협업을 지원한다.
핵심 기능
| 기능 | 설명 |
|---|
| Runs | 실험 추적 (메트릭, 하이퍼파라미터) |
| Sweeps | 자동 하이퍼파라미터 탐색 |
| Artifacts | 데이터셋·모델 버전 관리 |
| Reports | 실험 결과 공유 문서 |
| Tables | 예측 결과 비교·분석 |
| Model Registry | 모델 라이프사이클 관리 |
기본 통합
python
import wandb
import torch
wandb.init(
project="image-classification",
name="resnet50-experiment-1",
config={
"learning_rate": 1e-3,
"batch_size": 32,
"epochs": 50,
"optimizer": "adam",
"architecture": "ResNet50",
}
)
model = ResNet50()
optimizer = torch.optim.Adam(model.parameters(), lr=wandb.config.learning_rate)
for epoch in range(wandb.config.epochs):
train_loss = train_one_epoch(model, train_loader, optimizer)
val_loss, val_acc = evaluate(model, val_loader)
wandb.log({
"epoch": epoch,
"train/loss": train_loss,
"val/loss": val_loss,
"val/accuracy": val_acc,
})
wandb.finish()
하이퍼파라미터 Sweep
python
sweep_config = {
"method": "bayes",
"metric": {"name": "val/accuracy", "goal": "maximize"},
"parameters": {
"learning_rate": {"min": 1e-5, "max": 1e-2, "distribution": "log_uniform_values"},
"batch_size": {"values": [16, 32, 64, 128]},
"optimizer": {"values": ["adam", "sgd", "adamw"]},
},
}
sweep_id = wandb.sweep(sweep_config, project="image-classification")
def train():
wandb.init()
config = wandb.config
# 학습 코드...
wandb.agent(sweep_id, function=train, count=20)
관련 문서