Trackio documentation
Migration vers Trackio
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
- Initialisation : Remplacez
neptune.init_run()partrackio.init() - Journalisation : utilisez
trackio.log()avec des dictionnaires plutôt que des affectations de métriques individuelles - Nettoyage : Remplacez
run.stop()partrackio.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é