Si vous journalisez un artifact qui ne suit pas de fichiers externes, W&B enregistre les fichiers de l’artifact sur les serveurs W&B. C’est le comportement par défaut lorsque vous journalisez des artifacts avec le SDK Python W&B.Si vous journalisez un artifact qui suit des fichiers externes, W&B journalise des métadonnées sur l’objet, comme son ETag et sa taille. Si la gestion des versions d’objets est activée sur le bucket, l’ID de version est également journalisé.
Suivre un artifact dans un bucket externe
Utilisez le SDK Python W&B pour suivre des références vers des fichiers stockés en dehors de W&B.- Initialisez un run avec
wandb.init(). - Créez un objet artifact avec
wandb.Artifact(). - Indiquez la référence vers le chemin du bucket à l’aide de la méthode
wandb.Artifact.add_reference()de l’objet artifact. - Journalisez les métadonnées de l’artifact avec
run.log_artifact().
datasets/mnist/ contient une collection d’images. Pour suivre ce répertoire d’images datasets/mnist/ en tant qu’artifact de jeu de données, procédez comme suit :
- Fournissez un nom pour l’artifact, par exemple
"mnist". - Définissez le paramètre
typesur"dataset"lors de la construction de l’objet artifact (wandb.Artifact(type="dataset")). - Fournissez le chemin du répertoire
datasets/mnist/sous la forme d’un URI Amazon S3 (s3://my-bucket/datasets/mnist/) lorsque vous appelezwandb.Artifact.add_reference(). - Journalisez l’artifact avec
run.log_artifact().
mnist:latest :
W&B Artifacts prend en charge toute interface compatible avec Amazon S3, notamment CoreWeave Storage, Backblaze B2 Cloud Storage et MinIO. Les scripts décrits ci-dessous fonctionnent tels quels avec ces fournisseurs, à condition de définir la variable d’environnement
AWS_S3_ENDPOINT_URL pour qu’elle pointe vers votre serveur compatible S3 (par exemple, https://s3.us-west-001.backblazeb2.com pour Backblaze B2).Télécharger un artifact depuis un bucket externe
Lorsque W&B télécharge un artifact de référence, il récupère les fichiers depuis le bucket sous-jacent à l’aide des métadonnées enregistrées au moment où l’artifact a été journalisé. Si la gestion des versions des objets est activée sur votre bucket, W&B récupère la version de l’objet qui correspond à l’état du fichier au moment où l’artifact a été journalisé. À mesure que le contenu de votre bucket évolue, vous pouvez donc toujours retrouver la version exacte des données sur lesquelles un modèle donné a été entraîné, car l’artifact constitue un instantané de votre bucket pendant le run d’entraînement. L’exemple de code suivant montre comment télécharger un artifact de référence. Les API de téléchargement sont les mêmes pour les artifacts de référence et les artifacts non référencés :Si votre flux de travail implique d’écraser des fichiers, W&B vous recommande d’activer la « gestion des versions des objets » (Object Versioning) sur vos buckets de stockage.Lorsque la gestion des versions est activée, W&B peut toujours récupérer la bonne version du fichier lorsque vous téléchargez un artifact, même si ce fichier a été écrasé après la journalisation de l’artifact.Selon votre fournisseur, consultez les instructions pour activer la gestion des versions des objets : AWS, Google Cloud, Azure.
Ajouter et télécharger une référence externe depuis un bucket
L’exemple de code suivant téléverse un jeu de données dans un bucket Amazon S3, le suit à l’aide d’un artifact de référence, puis le télécharge :Consultez les rapports suivants pour un guide pas à pas complet expliquant comment suivre des artifacts par référence avec Google Cloud ou Azure :
Identifiants de stockage cloud
W&B utilise le mécanisme par défaut de votre fournisseur de cloud pour rechercher les identifiants d’authentification. Pour en savoir plus sur les identifiants utilisés, consultez la documentation de votre fournisseur de cloud :
Pour AWS, si le bucket ne se trouve pas dans la région par défaut de l’utilisateur configuré, vous devez définir la variable d’environnement
AWS_REGION sur la région du bucket.
Suivre un artifact dans un système de fichiers
Pour accéder aux jeux de données, une approche courante consiste à exposer un point de montage NFS vers un système de fichiers distant sur toutes les machines qui exécutent des tâches d’entraînement. Cette solution peut remplacer un bucket de stockage cloud, car, du point de vue du script d’entraînement, les fichiers semblent se trouver sur votre système de fichiers local. Pour suivre un artifact dans un système de fichiers :- Initialisez un run avec
wandb.init(). - Créez un objet artifact avec
wandb.Artifact(). - Indiquez la référence au chemin du système de fichiers à l’aide de la méthode
wandb.Artifact.add_reference()de l’objet artifact. - Journalisez les métadonnées de l’artifact avec
run.log_artifact().
< >) par vos propres valeurs.
file://, qui indique que vous utilisez des références de système de fichiers. Le deuxième composant est la racine / du système de fichiers. Les composants suivants forment le chemin du répertoire ou du fichier que vous souhaitez suivre.
Par exemple, supposons que vous disposiez d’un système de fichiers monté sur /mount avec la structure suivante :
datasets/mnist/ en tant qu’artifact de jeu de données. Pour ce faire, vous pouvez utiliser l’extrait de code suivant.
mnist:latest qui pointe vers les fichiers stockés dans /mount/datasets/mnist/.
De même, pour suivre un modèle stocké dans models/cnn/my_model.h5, vous pouvez utiliser l’extrait de code suivant :
Télécharger un artifact depuis un système de fichiers externe
Téléchargez des fichiers depuis un système de fichiers référencé à l’aide des mêmes API que pour les artifacts non référencés :- Initialisez un run avec
wandb.init(). - Utilisez la méthode
wandb.Run.use_artifact()pour indiquer l’artifact à télécharger. - Appelez la méthode
wandb.Artifact.download()de l’artifact pour télécharger les fichiers depuis le système de fichiers référencé
/mount/datasets/mnist dans le répertoire artifacts/mnist:v0/.
Artifact.download() lève une erreur s’il ne parvient pas à reconstruire l’artifact. Par exemple, si un artifact contient une référence à un fichier qui a été écrasé, Artifact.download() lève une erreur, car l’artifact ne peut plus être reconstruit.