Téléchargez et utilisez un artifact déjà stocké sur le serveur W&B, ou créez un objet artifact et transmettez-le pour déduplication si nécessaire.
Les membres de l’équipe disposant de licences View-Only ne peuvent pas télécharger d’artifacts.
Télécharger et utiliser un artifact stocké dans W&B
Téléchargez et utilisez un artifact stocké dans W&B, à l’intérieur ou à l’extérieur d’un W&B Run. Utilisez l’API publique (wandb.Api) pour exporter (ou mettre à jour) des données déjà enregistrées dans W&B.
Pendant un run
En dehors d’un run
W&B CLI
Commencez par importer le W&B Python SDK. Ensuite, créez un W&B Run :import wandb
with wandb.init(project="<example>", job_type="<job-type>") as run:
# Voir l'étape suivante
Indiquez l’artifact que vous souhaitez utiliser avec la méthode wandb.Run.use_artifact(). Cette méthode renvoie un objet run. Dans l’extrait de code suivant, un artifact nommé 'bike-dataset' avec l’alias 'latest' est spécifié :# Indiquer l'artifact à utiliser. Le format est "name:alias"
artifact = run.use_artifact("bike-dataset:latest")
Utilisez l’objet renvoyé pour télécharger l’intégralité du contenu de l’artifact :# Télécharger l'artifact entier
datadir = artifact.download()
Vous pouvez également passer un chemin au paramètre root pour télécharger le contenu de l’artifact dans un répertoire spécifique.Utilisez la méthode wandb.Artifact.get_entry() pour télécharger uniquement un sous-ensemble de fichiers :# Télécharger un fichier spécifique
entry = artifact.get_entry(name)
En regroupant le tout, l’exemple de code complet ressemble à ceci :import wandb
with wandb.init(project="<example>", job_type="<job-type>") as run:
# Indiquer l'artifact à utiliser. Le format est "name:alias"
artifact = run.use_artifact("bike-dataset:latest")
# Télécharger l'artifact entier
datadir = artifact.download()
# Télécharger un fichier spécifique
entry = artifact.get_entry("bike.png")
Cela récupère uniquement le fichier situé au chemin name. Cette méthode renvoie un objet Entry avec les méthodes suivantes :
Entry.download : télécharge le fichier de l’artifact au chemin name
Entry.ref : si add_reference a stocké l’entrée comme référence, renvoie l’URI
Commencez par importer le SDK W&B. Ensuite, créez un objet artifact à partir de la classe API publique. Fournissez l’entité, le projet, l’artifact et l’alias associés à cet artifact :import wandb
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
Utilisez l’objet renvoyé pour télécharger le contenu de l’artifact :Vous pouvez également passer un chemin au paramètre root pour télécharger le contenu de l’artifact dans un répertoire spécifique. Pour plus d’informations, voir le Guide de référence du SDK Python. Utilisez la commande wandb artifact get pour télécharger un artifact depuis le serveur W&B.$ wandb artifact get project/artifact:alias --root mnist/
Télécharger partiellement un artifact
Vous pouvez télécharger, si vous le souhaitez, une partie d’un artifact à l’aide d’un préfixe. Utilisez le paramètre path_prefix= (wandb.Artifact.download(path_prefix=)) pour télécharger un seul fichier ou le contenu d’un sous-dossier.
with wandb.init(project="<example>", job_type="<job-type>") as run:
# Indiquer l'artifact à utiliser. Le format est "nom:alias"
artifact = run.use_artifact("bike-dataset:latest")
# Télécharger un fichier spécifique ou un sous-dossier
artifact.download(path_prefix="bike.png") # télécharge uniquement bike.png
Vous pouvez aussi télécharger des fichiers depuis un répertoire donné. Pour ce faire, indiquez ce répertoire à l’aide du paramètre path_prefix=. En reprenant à partir de l’extrait de code précédent :
# télécharge les fichiers dans le répertoire images/bikes
artifact.download(path_prefix="images/bikes/")
Utiliser un artifact d’un autre projet
Spécifiez le nom de l’artifact ainsi que celui du projet pour faire référence à un artifact. Vous pouvez également faire référence à des artifacts d’autres entités en indiquant le nom de l’artifact avec le nom de l’entité.
L’exemple de code suivant montre comment récupérer un artifact d’un autre projet comme entrée pour le run W&B en cours.
with wandb.init(project="<example>", job_type="<job-type>") as run:
# Récupérer depuis W&B un artifact d'un autre projet et le marquer
# comme entrée de ce run.
artifact = run.use_artifact("my-project/artifact:alias")
# Utiliser un artifact d'une autre entité et le marquer comme entrée
# de ce run.
artifact = run.use_artifact("my-entity/my-project/artifact:alias")
Construire et utiliser un artifact en même temps
Construisez et utilisez un artifact en même temps. Créez un objet artifact et passez-le à use_artifact. Cela crée un artifact dans W&B s’il n’existe pas encore. L’API wandb.Run.use_artifact() est idempotente, vous pouvez donc l’appeler autant de fois que vous le souhaitez.
import wandb
with wandb.init(project="<example>", job_type="<job-type>") as run:
artifact = wandb.Artifact("reference model")
artifact.add_file("model.h5")
run.use_artifact(artifact)
Pour en savoir plus sur la création d’un artifact, voir Construire un artifact.