[[Category:AI and Machine Learning]]
[https://wandb.ai Weights & Biases (wandb)] est une plateforme de méta-apprentissage machine qui permet de construire des modèles pour des applications concrètes. La plateforme permet de suivre, comparer, décrire et reproduire les expériences d'apprentissage machine.
== Utilisation sur nos grappes ==
=== Disponibilité sur les nœuds de calcul ===
Puisque wandb exige une connexion à l'internet, sa disponibilité sur les nœuds de calcul dépend de la grappe.
{| class="wikitable"
|-
! Grappe !! Disponibilité de wandb !!
|-
| Béluga || rowspan="3"| limitée ❌ || rowspan="3"| uniquement pour les membres de MILA et autres groupes admissibles, via httpproxy
|-
| Narval
|-
| TamIA
|-
| Cedar || oui ✅ || httpproxy n'est pas requis
|-
| Graham || non ❌ || accès internet désactivé sur les nœuds de calcul
|-
| Vulcan || oui ✅ || httpproxy n'est pas requis
|}
== Membres de MILA et autres groupes admissibles ==
Members of the MILA Québec AI Institute may use wandb on any of our clusters with internet access, provided that they use a valid '''Mila-org''' Weights & Biases account to log into wandb. Please see the table above for more information on modules required for using wandb on each cluster.
Other groups are known to have made arrangements with Weights & Biases to bypass calls to the Google Cloud Storage API. Please contact your PI to find out if your group has made such arrangements.
== Béluga, Narval et TamIA ==
S'il est possible de téléverser des métriques de base pour Weights&Biases par une tâche sur Béluga, le paquet wandb téléverse automatiquement de l'information sur l'environnement utilisé vers un compartiment (bucket) Google Cloud Storage, ce qui cause un plantage (crash) au cours d'un entraînement ou à sa toute fin; présentement, il est impossible de désactiver ce comportement. Le téléversement d'artefacts avec wandb.save()
nécessite aussi l'accès au Google Cloud Storage, ce qui n'est pas disponible sur les nœuds de calcul de Béluga.
Vous pouvez quand même utiliser wandb en activant les modes [https://docs.wandb.ai/library/cli#wandb-offline offline
] ou [https://docs.wandb.ai/library/init#save-logs-offline dryrun
]. Avec ces modes, wandb écrit tous les métriques, journalisations et artefacts sur le disque local, sans synchronisation avec le service internet Weights&Biases. Une fois les tâches terminées, vous pouvez faire la synchronisation avec la commande [https://docs.wandb.ai/ref/cli#wandb-sync wandb sync
] sur le nœud de connexion.
Remarquez que le produit [[Comet.ml/fr|Comet.ml]] est très semblable à Weights & Biases et qu'il fonctionne sur Béluga, Narval et TamIA.
== Exemple ==
L'exemple suivant montre comment utiliser wandb pour le suivi de l'expérimentation sur Béluga. Pour reproduire ceci sur Cedar, il n'est pas nécessaire d'activer le mode hors ligne.
{{File
|name=wandb-test.sh
|lang="bash"
|contents=
#!/bin/bash
#SBATCH --account=YOUR_ACCOUNT
#SBATCH --cpus-per-task=2 # Nous recommandons au moins 2 CPU (un pour le processus principal et un autre pour le processus wandB)
#SBATCH --mem=4G
#SBATCH --time=0-03:00
#SBATCH --output=%N-%j.out
module load python
virtualenv --no-download $SLURM_TMPDIR/env
source $SLURM_TMPDIR/env/bin/activate
pip install --no-index wandb
### sauvegardez votre clé wandb API dans votre .bash_profile ou remplacez $API_KEY par votre propre clé API. Supprimez la ligne ci-dessous et identifiez wandb offline en commentaire si vous exécutez en mode en ligne. ###
#wandb login $API_KEY
wandb offline
python wandb-test.py
}}
Le script wandb-test.py est un exemple simple de journalisation des métriques. Pour d'autres options, voyez [https://docs.wandb.ai la documentation complète de W&B].
{{File
|name=wandb-test.py
|lang="python"
|contents=
import wandb
wandb.init(project="wandb-pytorch-test", settings=wandb.Settings(start_method="fork"))
for my_metric in range(10):
wandb.log({'my_metric': my_metric})
}}
Après que l'entraînement a été effectué en mode hors ligne, vous aurez le nouveau répertoire ./wandb/offline-run*
. Pour envoyer les métriques au serveur, utilisez la commande wandb sync ./wandb/offline-run*
où l'astérisque synchronise toutes les exécutions.