Trackio documentation

Migration vers Trackio

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Migration vers Trackio

Il est facile de migrer vers Trackio depuis d’autres bibliothèques de suivi d’expériences avec un minimum de modifications de code. Ce guide vous montre comment migrer depuis des outils de suivi d’expériences populaires.

Weights & Biases ( wandb )

La migration de Weights & Biases vers Trackio est extrêmement simple car Trackio utilise exactement la même syntaxe d’API que wandb. Dans la plupart des cas, il suffit de modifier l’énoncé d’importation !

Migration simple

La migration la plus basique ne nécessite que de modifier votre import :

- import wandb
+ import trackio as wandb

wandb.init(project="my-project")
wandb.log({"loss": 0.5, "accuracy": 0.8})
wandb.finish()

Exemple complet

Voici un exemple plus complet montrant que le reste de votre code reste exactement le même !

- import wandb
+ import trackio as wandb
import numpy as np

wandb.init(
    project="image-classification",
    name="experiment-1",
    config={
        "learning_rate": 0.01,
        "batch_size": 32,
        "epochs": 10
    }
)

for epoch in range(10):
    loss = np.random.random()
    accuracy = np.random.random()
    
    wandb.log({
        "epoch": epoch,
        "loss": loss,
        "accuracy": accuracy,
        "learning_rate": wandb.config.learning_rate
    })

wandb.finish()

Fonctions avancées

Trackio prend en charge l'enregistrement de Tables, Images, Audio, objets 3D, etc. - même API que wandb :

- import wandb
+ import trackio as wandb
import numpy as np

wandb.init(project="data-analysis")

image_array = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
wandb.log({
    "sample_image": wandb.Image(image_array, caption="Generated sample"),
    "model_diagram": wandb.Image("architecture.png")
})

columns = ["epoch", "train_loss", "val_loss", "accuracy"]
data = [
    [1, 0.8, 0.6, 0.75],
    [2, 0.6, 0.5, 0.82],
    [3, 0.4, 0.45, 0.89]
]
table = wandb.Table(data=data, columns=columns)
wandb.log({"training_results": table})

wandb.finish()

Neptune (neptune)

La migration depuis Neptune nécessite quelques modifications supplémentaires, car Neptune possède une structure d’API différente, mais la migration reste simple.

Migration de la journalisation de base

- import neptune

+ import trackio

- run = neptune.init_run(
-     project="my-workspace/my-project",
-     api_token="your-token"
- )

+ trackio.init(project="my-project")

- run["parameters"] = {"learning_rate": 0.01, "batch_size": 32}
- run["metrics/loss"].log(0.5)
- run["metrics/accuracy"].log(0.8)

+ trackio.config.update({"learning_rate": 0.01, "batch_size": 32})
+ trackio.log({"loss": 0.5, "accuracy": 0.8})

- run.stop()

+ trackio.finish()

Migration complète de la boucle d'entraînement

- import neptune
+ import trackio
import numpy as np

- run = neptune.init_run(
-     project="my-workspace/classification-project",
-     name="experiment-1",
-     tags=["pytorch", "cnn"]
- )

+ trackio.init(
+     project="classification-project",
+     name="experiment-1",
+     tags=["pytorch", "cnn"]
+ )

config = {"learning_rate": 0.01, "epochs": 10, "batch_size": 32}

- run["parameters"] = config
+ trackio.config.update(config)

for epoch in range(config["epochs"]):
    # Simulate training
    train_loss = np.random.random()
    val_accuracy = np.random.random()
    
    # Neptune logging
-     run["metrics/train/loss"].log(train_loss)
-     run["metrics/val/accuracy"].log(val_accuracy)
-     run["metrics/epoch"].log(epoch)

    # Trackio logging
+     trackio.log({
+         "train/loss": train_loss,
+         "val/accuracy": val_accuracy,
+         "epoch": epoch
+     })

- run["model/weights"].upload("model.pth")
+ trackio.save("model.pth")

- run.stop()
+ trackio.finish()

Points clés de la migration

  1. Initialisation : Remplacez neptune.init_run() par trackio.init()
  2. Journalisation : utilisez trackio.log() avec des dictionnaires plutôt que des affectations de métriques individuelles
  3. Nettoyage : Remplacez run.stop() par trackio.finish()

Avantages de la migration

  • API plus simple : journalisation via dictionnaire plat plutôt que par accès à des attributs imbriqués
  • Développement local : Travaillez hors ligne par défaut
  • Hébergement gratuit : Déployez des tableaux de bord sur Hugging Face Spaces sans frais
  • Interface familière : si vous avez déjà utilisé wandb, en particulier, l’API n’a pas changé
Update on GitHub