Weights & Biases
WandB / W&B
ML 실험 추적 및 시각화 플랫폼. 하이퍼파라미터 최적화, 모델 버전 관리 지원.
WandB / W&B
ML 실험 추적 및 시각화 플랫폼. 하이퍼파라미터 최적화, 모델 버전 관리 지원.
Weights & Biases(W&B, WandB)는 2017년 설립된 MLOps 플랫폼으로, 머신러닝 실험 추적, 모델 버전 관리, 하이퍼파라미터 최적화를 제공합니다. 이름은 신경망의 핵심 구성요소인 '가중치(Weights)'와 '편향(Biases)'에서 유래했습니다. OpenAI, NVIDIA, DeepMind 등 수천 개 AI 연구팀이 사용하는 업계 표준 도구입니다.
W&B가 등장하기 전, ML 엔지니어들은 실험 결과를 스프레드시트나 텍스트 파일로 관리했습니다. 이는 재현성 문제와 팀 협업의 어려움을 야기했습니다. W&B는 코드 한 줄만 추가하면 모든 실험 메트릭, 하이퍼파라미터, 코드 버전, 시스템 정보를 자동으로 기록하고 시각화합니다.
핵심 기능은 4가지입니다. Experiments(실험 추적)로 학습 손실, 정확도 등 메트릭을 실시간 대시보드로 확인합니다. Sweeps(하이퍼파라미터 튜닝)로 베이지안 최적화, 그리드 서치를 자동화합니다. Artifacts로 데이터셋과 모델 버전을 관리하고, Tables로 예측 결과를 인터랙티브하게 분석합니다.
실무에서 W&B는 PyTorch, TensorFlow, Hugging Face, LangChain 등 주요 프레임워크와 네이티브 통합됩니다. 2025년에는 LLM 추적(Weave), 프롬프트 엔지니어링 도구, 오픈소스 LLM 추론 서비스(W&B Inference)를 추가하여 생성형 AI 시대에 맞게 진화하고 있습니다.
import wandb
import torch
import torch.nn as nn
# 1. W&B 초기화
wandb.init(
project="my-ml-project",
config={
"learning_rate": 0.001,
"epochs": 10,
"batch_size": 32,
"architecture": "ResNet18"
}
)
config = wandb.config
# 2. 모델 정의
model = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 10)
)
# 3. 학습 루프 with W&B 로깅
optimizer = torch.optim.Adam(model.parameters(), lr=config.learning_rate)
criterion = nn.CrossEntropyLoss()
for epoch in range(config.epochs):
# 더미 학습 (실제로는 DataLoader 사용)
x = torch.randn(config.batch_size, 784)
y = torch.randint(0, 10, (config.batch_size,))
optimizer.zero_grad()
output = model(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()
accuracy = (output.argmax(dim=1) == y).float().mean()
# 메트릭 로깅
wandb.log({
"epoch": epoch,
"train_loss": loss.item(),
"train_accuracy": accuracy.item(),
"learning_rate": optimizer.param_groups[0]["lr"]
})
print(f"Epoch {epoch}: loss={loss.item():.4f}, acc={accuracy.item():.4f}")
# 4. 모델 저장 (Artifact)
artifact = wandb.Artifact("model", type="model")
torch.save(model.state_dict(), "model.pt")
artifact.add_file("model.pt")
wandb.log_artifact(artifact)
# 5. 하이퍼파라미터 스윕 설정 예시
sweep_config = {
"method": "bayes", # bayes, grid, random
"metric": {"name": "val_loss", "goal": "minimize"},
"parameters": {
"learning_rate": {"min": 0.0001, "max": 0.1},
"batch_size": {"values": [16, 32, 64]},
"epochs": {"value": 10}
}
}
# sweep_id = wandb.sweep(sweep_config, project="my-ml-project")
# wandb.agent(sweep_id, train_function, count=20)
# 6. Hugging Face Transformers 통합
# from transformers import Trainer, TrainingArguments
#
# training_args = TrainingArguments(
# output_dir="./results",
# report_to="wandb", # W&B 자동 통합
# run_name="bert-finetune"
# )
wandb.finish()
2025년 1월 기준 Weights & Biases 요금제
| 플랜 | 가격 | 특징 | 저장소 |
|---|---|---|---|
| Free (개인) | $0 | 5 모델 시트, 개인 프로젝트 전용 | 5GB |
| Pro (Teams) | $50/user/월 | 500 추적 시간, 팀 협업 | 100GB |
| Enterprise | ~$315-400/seat/월 | 무제한 추적, SSO, HIPAA | 커스텀 |
추가 과금 (Pro 플랜)
2025년 신규 기능
"W&B로 실험 추적하면 좋을 것 같아요. 지금 학습 결과를 노션에 수기로 기록하는데, wandb.init() 한 줄이면 메트릭, 하이퍼파라미터, 코드 버전까지 자동으로 기록됩니다. 나중에 재현도 쉽고요."
"실험 관리 어떻게 하세요?" - "W&B를 주로 씁니다. Sweeps로 하이퍼파라미터 튜닝 자동화하고, Artifacts로 모델 버전 관리해요. 팀원들이 대시보드에서 실시간으로 학습 상황을 확인할 수 있어서 협업이 편합니다."
"W&B Weave로 LLM 파이프라인 추적하면 프롬프트 버전, 토큰 사용량, 레이턴시까지 다 보여요. LangSmith랑 비슷한데 기존 W&B 사용자면 통합이 더 편합니다."
Free 플랜은 개인 프로젝트 전용이며 기업 사용이 금지되어 있습니다. 회사에서 사용하려면 Pro 이상 플랜이 필요합니다. 학술 연구는 무료 Pro 라이선스를 신청할 수 있습니다.
wandb.log()에 고객 데이터나 API 키를 포함하면 클라우드에 업로드됩니다. 민감 정보는 필터링하거나, 엔터프라이즈 플랜의 셀프호스팅을 고려하세요. config에 API 키를 넣지 마세요.
인터넷 없이 학습할 때는 WANDB_MODE=offline으로 설정하면 로컬에 저장됩니다. 나중에 wandb sync 명령으로 업로드할 수 있어요. GPU 서버에서 유용합니다.