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. Il s’agit du 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, telles que l’ETag et la taille de l’objet. Si la gestion des versions des 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 au chemin du bucket avec 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 le répertoire d’images datasets/mnist/ en tant qu’artifact de jeu de données, spécifiez :
- Donnez un nom à l’artifact, par exemple
"mnist". - Définissez le paramètre
typesur"dataset"lorsque vous créez l’objet artifact (wandb.Artifact(type="dataset")). - Indiquez le chemin du répertoire
datasets/mnist/sous forme d’URI Amazon S3 (s3://my-bucket/datasets/mnist/) lorsque vous appelezwandb.Artifact.add_reference(). - Journalisez l’artifact avec
run.log_artifact().
mnist:latest :
Les W&B Artifacts prennent en charge toute interface compatible avec Amazon S3, y compris CoreWeave Storage, Backblaze B2 Cloud Storage et MinIO. Les scripts décrits ci-dessous fonctionnent tels quels avec ces fournisseurs lorsque vous définissez la variable d’environnement
AWS_S3_ENDPOINT_URL de sorte 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
W&B récupère les fichiers du bucket sous-jacent lorsqu’il télécharge un artifact de référence à l’aide des métadonnées enregistrées au moment où l’artifact est enregistré. Si la gestion des versions des objets est activée sur votre bucket, W&B récupère la version de l’objet correspondant à l’état du fichier au moment où l’artifact a été enregistré. À mesure que le contenu de votre bucket évolue, vous pouvez toujours pointer vers la version exacte de vos données sur laquelle un modèle a été entraîné, car l’artifact sert d’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 des artifacts sont les mêmes pour les artifacts de référence et les autres artifacts :W&B recommande d’activer la ‘gestion des versions des objets’ sur vos buckets de stockage si vous écrasez des fichiers dans le cadre de votre flux de travail.Si 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 le fichier a été écrasé après l’enregistrement de l’artifact.Selon votre cas d’utilisation, lisez les instructions pour activer la gestion des versions des objets : AWS, Google Cloud, Azure.
Ajouter puis télécharger un élément externe depuis un bucket
L’exemple de code suivant téléverse un jeu de données dans un bucket Amazon S3, en assure le suivi à l’aide d’un artifact de référence, puis le télécharge :Voir les Reports suivants pour un guide pas à pas complet expliquant comment suivre des Artifacts par référence avec Google Cloud ou Azure :
Identifiants pour le stockage cloud
W&B utilise le mécanisme par défaut pour rechercher les identifiants correspondant au fournisseur cloud que vous utilisez. Consultez la documentation de votre fournisseur cloud pour en savoir plus sur les identifiants utilisés :
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 pour qu’elle corresponde à la région du bucket.
Suivre un artifact dans un système de fichiers
Une pratique courante pour accéder aux jeux de données consiste à exposer un point de montage NFS vers un système de fichiers distant sur toutes les machines exécutant des tâches d’entraînement. Cela peut constituer une alternative à un bucket de stockage cloud, car du point de vue du script d’entraînement, les fichiers apparaissent comme des fichiers locaux dans votre système de fichiers. 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 vers le chemin du système de fichiers à l’aide de la méthode
wandb.Artifact.add_reference()de l’objet artifact. - Enregistrez les métadonnées de l’artifact dans le journal avec
run.log_artifact().
< >) par vos propres valeurs.
file://, qui indique l’utilisation de références au système de fichiers. Le deuxième composant est la racine / du système de fichiers. Les composants restants correspondent au chemin vers le répertoire ou le fichier que vous souhaitez suivre.
Par exemple, supposons que vous ayez 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 spécifier l’artifact que vous souhaitez 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() renvoie une erreur s’il ne peut pas reconstruire l’artifact. Par exemple, si un artifact contient une référence à un fichier qui a été remplacé, Artifact.download() renvoie une erreur, car l’artifact ne peut plus être reconstruit.