Настройка Weights & Biases для трекинга экспериментов
W&B (Weights & Biases) — наиболее популярный коммерческий трекер экспериментов. Сильные стороны: визуализация обучения в реальном времени, Sweeps (гиперпараметрический поиск), Artifacts (версионирование данных и моделей), Reports (документация экспериментов).
Базовая настройка
pip install wandb
wandb login # или WANDB_API_KEY env variable
import wandb
# Инициализация run
run = wandb.init(
project="fraud-detection",
name="lgbm-experiment-42",
config={
"learning_rate": 0.05,
"n_estimators": 500,
"max_depth": 6,
"dataset": "v2.3",
},
tags=["lgbm", "production-candidate"],
notes="Testing new feature engineering"
)
# Логирование метрик
for epoch in range(config.epochs):
train_loss, val_loss = train_step(epoch)
wandb.log({"train/loss": train_loss, "val/loss": val_loss, "epoch": epoch})
# Логирование артефактов
artifact = wandb.Artifact("fraud-model", type="model")
artifact.add_file("model.pkl")
run.log_artifact(artifact)
wandb.finish()
W&B Sweeps для гиперпараметрического поиска
sweep_config = {
"method": "bayes", # bayes / random / grid
"metric": {"name": "val/f1", "goal": "maximize"},
"parameters": {
"learning_rate": {"distribution": "log_uniform_values", "min": 1e-4, "max": 1e-1},
"n_estimators": {"values": [100, 200, 500, 1000]},
"max_depth": {"min": 3, "max": 10},
"num_leaves": {"min": 20, "max": 100},
}
}
sweep_id = wandb.sweep(sweep_config, project="fraud-detection")
def train_sweep():
with wandb.init() as run:
config = run.config
model = LGBMClassifier(**config)
model.fit(X_train, y_train)
f1 = f1_score(y_test, model.predict(X_test))
wandb.log({"val/f1": f1})
wandb.agent(sweep_id, function=train_sweep, count=50)
W&B Tables для анализа данных
# Логирование примеров с предсказаниями
table = wandb.Table(columns=["text", "true_label", "predicted", "confidence", "is_correct"])
for text, true, pred, conf in test_samples[:100]:
table.add_data(text, true, pred, conf, true == pred)
wandb.log({"predictions": table})
W&B хранит все версии таблиц — можно сравнивать предсказания разных моделей на одних данных.
Self-hosted W&B Server
# Для on-premise деплоя
docker run -d --name wandb-server \
-p 8080:8080 \
-v wandb-data:/vol \
-e LICENSE=xxx \
wandb/local:latest







