Téléchargez et utilisez un artefact déjà stocké sur le serveur W&B, ou créez un objet artefact et passez-le pour la déduplication si nécessaire.
Les membres de l’équipe disposant d’une licence en lecture seule ne peuvent pas télécharger d’artefacts.
Télécharger et utiliser un artefact stocké sur W&B
Téléchargez et utilisez un artefact stocké dans W&B, à l’intérieur ou à l’extérieur d’un W&B Run. Utilisez l’API publique (wandb.Api) pour exporter des données déjà enregistrées dans W&B (ou les mettre à jour).
Pendant un run
En dehors d'un run
W&B CLI
Commencez par importer le SDK Python W&B. 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’artefact 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, l’artefact nommé 'bike-dataset' avec l’alias 'latest' est spécifié :# Indiquer l'artefact à utiliser. Le format est "name:alias"
artifact = run.use_artifact("bike-dataset:latest")
Utilisez l’objet renvoyé pour télécharger tout le contenu de l’artefact :# Télécharger l'artefact complet
datadir = artifact.download()
Vous pouvez également passer un chemin au paramètre root pour télécharger le contenu de l’artefact 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 réunissant tous ces éléments, l’exemple de code complet ressemble à ceci :import wandb
with wandb.init(project="<example>", job_type="<job-type>") as run:
# Indiquer l'artefact à utiliser. Le format est "name:alias"
artifact = run.use_artifact("bike-dataset:latest")
# Télécharger l'artefact complet
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 depuis l’artefact 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 artefact à partir de la classe API publique. Fournissez l’entité, le projet, l’artefact et l’alias associé à cet artefact :import wandb
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
Utilisez l’objet renvoyé pour télécharger le contenu de l’artefact :Vous pouvez également passer un chemin au paramètre root pour télécharger le contenu de l’artefact 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 artefact depuis le serveur W&B.$ wandb artifact get project/artifact:alias --root mnist/
Télécharger partiellement un artefact
Vous pouvez, si vous le souhaitez, télécharger une partie d’un artefact en fonction 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:
# Indiquez l'artefact à utiliser. Le format est "name:alias"
artifact = run.use_artifact("bike-dataset:latest")
# Téléchargez un fichier spécifique ou un sous-dossier
artifact.download(path_prefix="bike.png") # télécharge uniquement bike.png
Vous pouvez également télécharger des fichiers à partir d’un répertoire donné. Pour ce faire, indiquez le répertoire dans le paramètre path_prefix=. En reprenant l’extrait de code précédent :
# télécharge les fichiers du répertoire images/bikes
artifact.download(path_prefix="images/bikes/")
Utiliser un artefact d’un autre projet
Spécifiez le nom de l’artefact ainsi que le nom du projet pour faire référence à un artefact. Vous pouvez également faire référence à des artefacts d’une entité à l’autre en indiquant le nom de l’artefact avec le nom de son entité.
L’exemple de code suivant montre comment interroger un artefact d’un autre projet en entrée du run W&B actuel.
with wandb.init(project="<example>", job_type="<job-type>") as run:
# Récupérer depuis W&B un artefact d'un autre projet et le marquer
# comme entrée de ce run.
artifact = run.use_artifact("my-project/artifact:alias")
# Utiliser un artefact 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 artefact simultanément
Construisez et utilisez un artefact simultanément. Créez un objet artefact et passez-le à use_artifact. Cela crée un artefact 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 artefact, voir Créer un artefact.