Skip to content
Learni
View all tutorials
Machine Learning

Comment maîtriser Weights & Biases en production en 2026

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

wandb_init.py
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

train.py
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

sweep.yaml
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

artifacts.py
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

lightning_trainer.py
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.