Passer au contenu principal
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).
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

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.