Passer au contenu principal
Un run est une unité de calcul unique enregistrée par W&B. Vous pouvez considérer un W&B Run comme l’élément atomique de l’ensemble de votre projet. En d’autres termes, chaque run est l’enregistrement d’un calcul précis, comme l’entraînement d’un modèle et la consignation des résultats, des Sweeps d’hyperparamètres, etc. Les cas d’usage courants de l’initialisation d’un run et de la consignation d’informations dans celui-ci incluent :
  • Entraîner un modèle et consigner des métriques telles que la précision et la perte
  • Effectuer un réglage des hyperparamètres et lancer de nouvelles expériences
  • Mener une nouvelle expérience de machine learning avec un modèle différent
  • Suivre et enregistrer des jeux de données et des modèles sous forme de W&B Artifacts
  • Télécharger et utiliser des jeux de données ou des modèles utilisés par d’autres membres de votre équipe comme W&B Artifacts
Pour initialiser un run W&B, appelez la méthode wandb.init() du SDK Python W&B. Cela démarre un nouveau run et renvoie un objet wandb.Run que vous pouvez utiliser pour consigner des métriques, des Artifacts et d’autres informations dans le run. Pour en savoir plus sur l’initialisation d’un run, voir Initialize runs. Chaque objet run possède un identifiant unique appelé run ID. Vous pouvez spécifier un ID unique ou laisser W&B en générer un aléatoirement pour vous. Chaque objet run possède également un nom de l’exécution compréhensible par l’humain et non unique. Vous pouvez attribuer un nom à votre run ou laisser W&B en générer un aléatoirement pour vous. Vous pouvez renommer un run après l’avoir initialisé. W&B enregistre votre run dans un projet. Vous spécifiez le projet lorsque vous initialisez le run avec wandb.init(project=""). W&B crée un nouveau projet si le projet n’existe pas. Si le projet existe déjà, W&B enregistre le run dans le projet que vous avez spécifié.
Si vous ne spécifiez pas de nom de projet, W&B stocke le run dans un projet appelé Uncategorized.
wandb.init() renvoie un objet wandb.Run qui contient des propriétés du run, telles que son ID, son nom, sa configuration et son état. Utilisez l’objet run pour consigner des métriques, des Artifacts et d’autres informations dans le run avec des méthodes telles que wandb.Run.log(), wandb.Run.log_code() et wandb.Run.use_artifact(). Chaque run possède un état qui décrit son statut actuel. Voir Run states pour obtenir la liste complète des états possibles d’un run. Affichez les runs et leurs propriétés dans l’espace de travail du projet du run sur l’application W&B. Vous pouvez également accéder par programmation aux propriétés du run avec l’objet wandb.Api.Run. À titre d’exemple, considérez l’extrait de code suivant, qui initialise un run W&B et y consigne quelques métriques :
Renseignez votre entité W&B dans la variable entity des extraits de code ci-dessous si vous souhaitez suivre l’exemple. Votre entité correspond à votre nom d’utilisateur W&B ou au nom de votre équipe. Vous pouvez la trouver dans l’URL de votre espace de travail dans l’application W&B. Par exemple, si l’URL de votre espace de travail est https://wandb.ai/nico/awesome-project, alors votre entité est nico.
import wandb

entity = "nico"  # Remplacez par votre entité W&B
project = "awesome-project"

with wandb.init(entity=entity, project=project) as run:
    run.log({"accuracy": 0.9, "loss": 0.1})
La première ligne importe le SDK Python de W&B. La deuxième ligne initialise un run dans le projet awesome-project sous l’entité nico. La troisième ligne enregistre la précision et la perte du modèle pour ce run. Dans le terminal, W&B renvoie :
wandb: Syncing run earnest-sunset-1
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb:                                                                                
wandb: 
wandb: Run history:
wandb: accuracy
wandb:     loss
wandb: 
wandb: Run summary:
wandb: accuracy 0.9
wandb:     loss 0.5
wandb: 
wandb: 🚀 View run earnest-sunset-1 at: https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb: ⭐️ View project at: https://wandb.ai/nico/awesome-project
wandb: Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb: Find logs at: ./wandb/run-20241105_111006-1jx1ud12/logs
W&B renvoie deux URL dans la sortie du terminal. La première URL mène au Workspace de ce run, et la seconde mène à la page du projet.
Workspace d’un run
Consigner une métrique à un instant donné n’est pas forcément très utile. Un exemple plus réaliste, dans le cas de l’entraînement de modèles discriminatifs, consiste à consigner des métriques à intervalles réguliers. Par exemple, prenez l’extrait de code suivant :
import wandb
import random

config = {
    "epochs": 10,
    "learning_rate": 0.01,
}

with wandb.init(project="awesome-project", config=config) as run:
    print(f"lr: {config['learning_rate']}")
      
    # Simulation d’un run d’entraînement
    for epoch in range(config['epochs']):
      offset = random.random() / 5
      acc = 1 - 2**-epoch - random.random() / (epoch + 1) - offset
      loss = 2**-epoch + random.random() / (epoch + 1) + offset
      print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
      run.log({"accuracy": acc, "loss": loss})
Le script d’entraînement appelle wandb.Run.log() 10 fois. Chaque fois que le script appelle wandb.Run.log(), W&B consigne la précision et la perte pour cette époque. Dans votre terminal, vous devriez voir une sortie semblable à la suivante :
wandb: Syncing run jolly-haze-4
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/pdo5110r
lr: 0.01
epoch=0, accuracy=-0.10070974957523078, loss=1.985328507123956
epoch=1, accuracy=0.2884687745057535, loss=0.7374362314407752
epoch=2, accuracy=0.7347387967382066, loss=0.4402409835486663
epoch=3, accuracy=0.7667969248039795, loss=0.26176963846423457
epoch=4, accuracy=0.7446848791003173, loss=0.24808611724405083
epoch=5, accuracy=0.8035095836268268, loss=0.16169791827329466
epoch=6, accuracy=0.861349032371624, loss=0.03432578493587426
epoch=7, accuracy=0.8794926436276016, loss=0.10331872172219471
epoch=8, accuracy=0.9424839917077272, loss=0.07767793473500445
epoch=9, accuracy=0.9584880427028566, loss=0.10531971149250456
wandb: 🚀 View run jolly-haze-4 at: https://wandb.ai/nico/awesome-project/runs/pdo5110r
wandb: Find logs at: wandb/run-20241105_111816-pdo5110r/logs
W&B enregistre la boucle d’entraînement simulée dans un seul run appelé jolly-haze-4. Cela s’explique par le fait que le script n’appelle la méthode wandb.init() qu’une seule fois. Copiez-collez dans votre navigateur l’URL que W&B a affichée dans la sortie précédente. Cette URL vous mène au Workspace du run dans l’interface de l’application W&B. Par exemple, l’image suivante montre le Workspace du run jolly-haze-4 :
Run d’entraînement avec métriques enregistrées