Introduction
Weights & Biases (W&B) est devenu l'outil de référence pour le suivi d'expériences en machine learning. Au-delà du logging basique, sa puissance réside dans la gestion d'artefacts versionnés, les sweeps distribués et l'intégration avec les pipelines CI/CD. Ce tutoriel vous guide à travers une configuration experte pour un environnement de production réel, incluant la gestion des runs parallèles, le versionnement des modèles et la création de rapports automatisés. Vous apprendrez à structurer vos expériences de manière reproductible et scalable.
Prérequis
- Python 3.10+
- PyTorch ou TensorFlow
- Compte W&B avec équipe (team) configurée
- Connaissances avancées en MLOps et gestion de métadonnées
- Accès à un cluster GPU ou Kubernetes
Initialisation avancée du projet
import wandb
import os
os.environ["WANDB_PROJECT"] = "production-ml"
os.environ["WANDB_ENTITY"] = "learni-ml-team"
run = wandb.init(
project="production-ml",
entity="learni-ml-team",
config={
"learning_rate": 0.001,
"batch_size": 64,
"architecture": "resnet50",
"dataset": "imagenet-subset"
},
tags=["production", "resnet", "2026"],
notes="Run de référence pour benchmark production"
)Cette initialisation configure le projet au niveau équipe, ajoute des métadonnées structurées et prépare le run pour le versionnement automatique des hyperparamètres et des artefacts.
Logging de métriques et gradients
import wandb
for epoch in range(10):
train_loss = model.train_step()
val_acc = model.validate()
wandb.log({
"train/loss": train_loss,
"val/accuracy": val_acc,
"epoch": epoch,
"gradients": wandb.Histogram(model.get_gradients())
}, step=epoch)
if epoch % 5 == 0:
wandb.log({"examples": wandb.Image(model.generate_sample())})Le logging inclut des histogrammes de gradients et des images générées. Utilisez step explicite pour synchroniser les runs parallèles et éviter les collisions de métriques.
Configuration des sweeps distribués
program: train.py
method: bayes
metric:
name: val/accuracy
goal: maximize
parameters:
learning_rate:
distribution: log_uniform_values
min: 1e-5
max: 1e-1
batch_size:
values: [32, 64, 128]
optimizer:
values: ["adam", "sgd"]
command:
- ${env}
- python
- ${program}
- "--sweep_id=${wandb:sweep_id}"Le fichier YAML définit une optimisation bayésienne. Exécutez-le avec wandb sweep sweep.yaml puis lancez des agents sur plusieurs machines pour une recherche distribuée efficace.
Gestion des artefacts versionnés
import wandb
artifact = wandb.Artifact(
name="resnet50-weights",
type="model",
metadata={"epoch": 50, "val_acc": 0.94}
)
artifact.add_file("model.pth")
run.log_artifact(artifact)
# Utilisation dans un autre run
model_artifact = run.use_artifact("resnet50-weights:latest")
model_path = model_artifact.download()Les artefacts permettent le versionnement complet des modèles et datasets. Le lineage automatique relie les runs entre eux pour une traçabilité totale en production.
Intégration avec PyTorch Lightning
from pytorch_lightning.loggers import WandbLogger
from pytorch_lightning import Trainer
wandb_logger = WandbLogger(
project="production-ml",
log_model=True,
save_dir="./wandb"
)
trainer = Trainer(
logger=wandb_logger,
max_epochs=100,
callbacks=[wandb_logger.watch(model, log_freq=100)]
)
trainer.fit(model, datamodule)L'intégration native avec PyTorch Lightning simplifie le logging des métriques et sauvegarde automatique des checkpoints comme artefacts W&B.
Bonnes pratiques
- Toujours utiliser des tags et notes structurées pour faciliter la recherche dans les gros projets
- Versionner systématiquement les datasets et modèles via les artifacts
- Configurer des alertes Slack/Email sur les métriques critiques
- Nettoyer régulièrement les runs avec wandb sweep --delete
- Documenter les configurations via des fichiers YAML versionnés dans Git
Erreurs courantes à éviter
- Oublier d'appeler wandb.finish() dans les scripts batch, ce qui laisse des runs inachevés
- Logger des tenseurs trop volumineux sans utiliser step ou reduce_fx
- Ne pas configurer correctement les permissions d'équipe, exposant des données sensibles
- Lancer des sweeps sans fixer de seed, rendant les expériences non reproductibles
Pour aller plus loin
Approfondissez vos compétences MLOps avec nos formations avancées Learni sur Weights & Biases et les pipelines ML en production.