Skip to main content
Créez une nouvelle version d’artifact avec un seul run ou de manière collaborative avec des runs distribués. Vous pouvez aussi créer une nouvelle version d’artifact à partir d’une version précédente : on parle alors d’artifact incrémentiel.
Nous vous recommandons de créer un artifact incrémentiel lorsque vous devez modifier un sous-ensemble de fichiers d’un artifact dont la taille totale est nettement plus importante.

Créer de nouvelles versions d’artifact à partir de zéro

Il existe deux façons de créer une nouvelle version d’artifact : à partir d’un run unique ou à partir de runs distribués. Elles se définissent comme suit :
  • Run unique : un seul run fournit toutes les données d’une nouvelle version. Il s’agit du cas le plus courant, particulièrement adapté lorsque le run recrée entièrement les données nécessaires. Par exemple : générer des modèles enregistrés ou des prédictions de modèle dans un tableau à des fins d’analyse.
  • Runs distribués : un ensemble de runs fournit collectivement toutes les données d’une nouvelle version. Ce cas convient particulièrement aux jobs distribués dans lesquels plusieurs runs génèrent des données, souvent en parallèle. Par exemple : évaluer un modèle de manière distribuée et générer les prédictions.
Si vous transmettez à l’API wandb.Artifact un nom qui n’existe pas dans votre projet, W&B crée un nouvel artifact et lui attribue l’alias v0. Lorsque vous journalisez à nouveau dans le même artifact, W&B calcule une somme de contrôle de son contenu. Si l’artifact a été modifié, W&B enregistre une nouvelle version v1. Si vous transmettez à l’API wandb.Artifact un nom et un type d’artifact correspondant à un artifact existant dans votre projet, W&B récupère cet artifact. L’artifact récupéré aura une version supérieure à 1.
Comparaison des flux de travail d'artifact

Run unique

Journalisez une nouvelle version d’un artifact avec un seul run qui produit tous les fichiers de l’artifact. C’est le cas lorsqu’un seul run génère l’ensemble des fichiers de l’artifact. Selon votre cas d’usage, sélectionnez l’un des onglets ci-dessous pour créer une nouvelle version d’artifact :
Utilisez wandb.Run.log_artifact() pour marquer explicitement un artifact comme sortie d’un run.Utilisez Artifact.save() comme méthode de commodité. Si un run est actif, W&B journalise l’artifact dans ce run. Sinon, W&B crée automatiquement un run et y journalise l’artifact.
Utilisez wandb.Run.log_artifact() pour associer explicitement l’artifact à un run :
  1. Créez un run avec wandb.init().
  2. Créez un nouvel artifact ou récupérez un artifact existant avec wandb.Artifact.
  3. Ajoutez des fichiers à l’artifact avec wandb.Artifact.add_file().
  4. Journalisez l’artifact dans le run avec wandb.Run.log_artifact().

Runs distribués

Permettez à un ensemble de runs de collaborer sur une version avant de la valider. Contrairement au mode run unique décrit ci-dessus, où un seul run fournit toutes les données d’une nouvelle version.
  1. Chaque run de l’ensemble doit connaître le même ID unique (appelé distributed_id) pour collaborer sur la même version. Par défaut, s’il est défini, W&B utilise comme distributed_id le group du run, tel que défini par wandb.init(group=GROUP).
  2. Un run final doit « valider » la version, ce qui verrouille définitivement son état.
  3. Utilisez upsert_artifact pour ajouter du contenu à l’artifact collaboratif et finish_artifact pour finaliser la validation.
Prenons l’exemple suivant. Différents runs (désignés ci-dessous par Run 1, Run 2 et Run 3) ajoutent chacun un fichier image différent au même artifact avec upsert_artifact.

Run 1

Run 2

Run 3

Doit être exécuté une fois les runs 1 et 2 terminés. Le run qui appelle wandb.Run.finish_artifact() peut ajouter des fichiers à l’artifact, mais ce n’est pas obligatoire.

Créer une nouvelle version d’artifact à partir d’une version existante

Créez une nouvelle version d’artifact en ajoutant, en modifiant ou en supprimant des fichiers dans une version d’artifact existante. W&B ne réindexe que les fichiers modifiés. La version obtenue est appelée artifact incrémentiel.
Gestion des versions d’artifacts incrémentiels
Pour créer un artifact incrémentiel, créez un brouillon à partir de n’importe quelle version d’artifact déjà validée. Vous pouvez ensuite modifier ce brouillon à l’aide de méthodes telles que Artifact.add_file(), Artifact.add_dir() et Artifact.remove(). Pour obtenir la liste complète des méthodes, consultez la documentation de référence de Artifact. Une fois vos modifications terminées, journalisez ou enregistrez le brouillon pour créer une nouvelle version d’artifact.
Au lieu de créer un artifact incrémentiel, vous pouvez créer un nouvel artifact de zéro. Cette approche exige toutefois que tous les fichiers de l’artifact soient disponibles sur votre disque local. Avec un artifact incrémentiel, vous pouvez ajouter, supprimer ou modifier des fichiers individuellement tout en réutilisant les fichiers inchangés de la version précédente de l’artifact.
Vous pouvez créer un artifact incrémentiel au sein d’un seul run ou à partir de plusieurs runs qui contribuent à la nouvelle version. Les sections suivantes décrivent la marche à suivre dans chacun de ces cas.

Run unique

Utilisez wandb.Run.use_artifact() lorsque le run actuel consomme l’artifact. W&B enregistre alors l’artifact comme entrée du run.
  1. Récupérez la version de l’artifact avec wandb.Run.use_artifact().
  2. Créez un brouillon avec Artifact.new_draft().
  3. Ajoutez, supprimez ou modifiez des entrées dans le brouillon.
  4. Journalisez le brouillon avec wandb.Run.log_artifact() pour créer une nouvelle version de l’artifact.

Runs distribués

Utilisez Artifact.upsert_artifact() et Artifact.finish_artifact() lorsque plusieurs runs ajoutent des fichiers à une même version d’artifact. L’exemple suivant montre comment créer une nouvelle version d’artifact à partir de runs distribués, lorsque l’artifact sert d’entrée aux runs. La même approche s’applique lorsque l’artifact est récupéré directement avec l’API publique.
Utilisez Artifact.new_draft() lorsque vous modifiez une version d’artifact déjà validée.Utilisez Artifact.upsert_artifact() et Artifact.finish_artifact() lorsque plusieurs runs doivent contribuer à une même version d’artifact avant sa finalisation.
Dernière modification le 30 septembre 2026