La possibilité de forker un run est en cours de développement actif et en aperçu privé. Contactez l’assistance W&B à support@wandb.com pour demander l’accès à cette fonctionnalité.
Vous pouvez explorer différents hyperparamètres ou modèles à partir d’un point précis d’une expérience sans affecter le run original. Pour cela, forkez à partir d’un run W&B existant.
Lorsque vous forkez un run, W&B crée un nouveau run en utilisant l’ID unique du run source et une étape spécifiée. Les métriques récapitulatives du run source sont copiées dans le run forké. Le run forké partage l’ensemble de l’historique et des fichiers du run source jusqu’à l’étape spécifiée.
Après l’étape de fork, vous pouvez journaliser de nouvelles données dans le run forké indépendamment du run original.
Consultez une démo en direct d’un run forké généré par le code ci-dessous.
- Forker un run nécessite la version du SDK
wandb >= 0.16.5
- Forker un run nécessite des étapes monotones croissantes. Vous ne pouvez pas forker à partir d’un run qui utilise des étapes non monotones définies avec
define_metric(). Les étapes non monotones rompent l’ordre chronologique de l’historique du run et des métriques système.
Indiquez l’ID unique du run source ainsi que la step à partir de laquelle vous souhaitez démarrer le run forké comme arguments de fork_from dans wandb.init().
Fork à partir d’un run précédemment enregistré
L’extrait de code suivant montre comment créer un fork à partir d’un run précédemment enregistré dans W&B.
Commencez par obtenir l’ID du run du run à partir duquel vous souhaitez créer le fork. Indiquez ensuite l’ID du run et l’étape à partir de laquelle vous souhaitez fork en arguments de fork_from dans wandb.init().
Copiez-collez le code suivant dans un script Python ou une cellule de notebook. Remplacez <source-run-id>, <project> et <entity> par vos propres valeurs :
import wandb
# L'ID unique du run source à partir duquel effectuer le fork
source_run_id = "<source-run-id>"
# Spécifier l'étape à partir de laquelle effectuer le fork
fork_step = 200
# Effectuer le fork du run
with wandb.init(
project="<project>",
entity="<entity>",
fork_from=f"{source_run_id}?_step={fork_step}",
) as forked_run:
pass
Créer un fork à partir d’un run dans le même script
L’extrait de code suivant montre comment créer un run et créer un fork à partir de celui-ci dans le même script. Cela peut être utile si vous voulez créer un fork à partir d’un run que vous venez de créer, sans avoir à rechercher l’ID du run dans l’application W&B.
Commencez par initialiser un run et journaliser quelques données. Ensuite, utilisez la propriété id de l’objet run original pour obtenir l’ID du run correspondant. Enfin, initialisez un nouveau run et transmettez l’ID du run original ainsi que l’étape à partir de laquelle vous voulez créer le fork comme arguments à fork_from dans wandb.init().
import wandb
# Initialiser un run
with wandb.init(
project="<project>",
entity="<entity>"
) as original_run:
# ...la logique d'entraînement se place ici ...
pass
# Spécifier l'étape à partir de laquelle effectuer le fork
fork_step = int("<num>")
# Utiliser l'ID du run original et spécifier l'étape à partir de laquelle effectuer le fork
with wandb.init(
project="<project>",
entity="<entity>",
fork_from=f"{original_run.id}?_step={fork_step}",
) as forked_run:
# ...la logique d'entraînement se place ici ...
pass
Utilisez la propriété original_run.id pour obtenir l’ID unique du run d’origine.
Par exemple, le code ci-dessous montre comment d’abord forker un run, puis journaliser des métriques dans le run forké à partir de l’étape d’entraînement 200.
Copiez-collez le code suivant dans un script Python ou une cellule de notebook. Remplacez <project> et <entity> par vos propres valeurs.
import wandb
import math
# Initialiser le premier run et enregistrer quelques métriques
with wandb.init(
project="<project>",
entity="<entity>"
) as run1:
for i in range(300):
run1.log({"metric": i})
# Créer un fork à partir du premier run à une étape spécifique et enregistrer
# la métrique à partir de l'étape 200
with wandb.init(
project="<project>",
entity="<entity>",
fork_from=f"{run1.id}?_step=200"
) as run2:
# Continuer l'enregistrement dans le nouveau run
# Pour les premières étapes, enregistrer la métrique telle quelle depuis run1
# Après l'étape 250, commencer à enregistrer le motif en pics
for i in range(200, 300):
if i < 250:
# Continuer l'enregistrement depuis run1 sans pics
metric_value = i
else:
# Introduire le comportement en pics à partir de l'étape 250
metric_value = i + (2 * math.sin(i / 3.0)) # Appliquer un motif en pics subtil
# Enregistrer les deux métriques en un seul appel pour s'assurer qu'elles sont
# enregistrées à la même étape
run2.log({
"metric": metric_value,
"additional_metric": i * 1.1
})
Compatibilité entre rembobinage et forkLe fork complète un rewind en offrant plus de flexibilité pour gérer vos Runs et expérimenter avec eux.Lorsque vous créez un fork à partir d’un run, W&B crée une nouvelle branche depuis ce run à un point précis afin d’essayer différents paramètres ou modèles.Lorsque vous rembobinez un run, W&B vous permet de corriger ou de modifier l’historique du run lui-même.