Trackio - Suivi d'expériences pour l'entraînement ML
Trackio est une bibliothèque de suivi d'expériences pour journaliser et visualiser les métriques d'entraînement ML. Elle se synchronise avec Hugging Face Spaces pour des tableaux de bord de surveillance en temps réel.
Trois interfaces
| Tâche | Interface | Référence |
|---|---|---|
| Journaliser les métriques pendant l'entraînement | Python API | references/logging_metrics.md |
| Déclencher des alertes pour les diagnostics d'entraînement | Python API | references/alerts.md |
| Récupérer les métriques et alertes après/pendant l'entraînement | CLI | references/retrieving_metrics.md |
Quand utiliser chaque interface
Python API → Journalisation
Utilisez import trackio dans vos scripts d'entraînement pour journaliser les métriques :
- Initialisez le suivi avec
trackio.init() - Journalisez les métriques avec
trackio.log()ou utilisezreport_to="trackio"de TRL - Finalisez avec
trackio.finish()
Concept clé : Pour l'entraînement à distance/cloud, passez space_id — les métriques se synchronisent avec un tableau de bord Space afin qu'elles persistent après la fin de l'instance.
→ Consultez references/logging_metrics.md pour la configuration, l'intégration TRL et les options de configuration.
Python API → Alertes
Insérez des appels trackio.alert() dans le code d'entraînement pour signaler des événements importants — comme insérer des instructions print pour le débogage, mais structuré et interrogeable :
trackio.alert(title="...", level=trackio.AlertLevel.WARN)— déclenche une alerte- Trois niveaux de sévérité :
INFO,WARN,ERROR - Les alertes sont imprimées sur le terminal, stockées dans la base de données, affichées dans le tableau de bord et optionnellement envoyées aux webhooks (Slack/Discord)
Concept clé pour les agents LLM : Les alertes sont le mécanisme principal pour l'itération autonome d'expériences. Un agent doit insérer des alertes dans le code d'entraînement pour les conditions de diagnostic (pics de perte, gradients NaN, faible précision, blocages d'entraînement). Puisque les alertes sont imprimées sur le terminal, un agent qui surveille la sortie du script d'entraînement les verra automatiquement. Pour les exécutions en arrière-plan ou détachées, l'agent peut interroger via CLI à la place.
→ Consultez references/alerts.md pour l'API complète des alertes, la configuration des webhooks et les flux de travail des agents autonomes.
CLI → Récupération
Utilisez la commande trackio pour interroger les métriques et alertes journalisées :
trackio list projects/runs/metrics— découvrez ce qui est disponibletrackio get project/run/metric— récupérez les résumés et valeurstrackio list alerts --project <name> --json— récupérez les alertestrackio show— lancez le tableau de bordtrackio sync— synchronisez avec HF Space
Concept clé : Ajoutez --json pour une sortie programmatique appropriée à l'automatisation et aux agents LLM.
→ Consultez references/retrieving_metrics.md pour toutes les commandes, flux de travail et formats de sortie JSON.
Configuration minimale de journalisation
import trackio
trackio.init(project="my-project", space_id="username/trackio")
trackio.log({"loss": 0.1, "accuracy": 0.9})
trackio.log({"loss": 0.09, "accuracy": 0.91})
trackio.finish()
Récupération minimale
trackio list projects --json
trackio get metric --project my-project --run my-run --metric loss --json
Flux de travail autonome d'expériences ML
Lors de l'exécution d'expériences de manière autonome en tant qu'agent LLM, le flux de travail recommandé est :
- Configurer l'entraînement avec des alertes — insérez des appels
trackio.alert()pour les conditions de diagnostic - Lancer l'entraînement — exécutez le script en arrière-plan
- Interroger les alertes — utilisez
trackio list alerts --project <name> --json --since <timestamp>pour vérifier les nouvelles alertes - Lire les métriques — utilisez
trackio get metric ...pour inspecter des valeurs spécifiques - Itérer — en fonction des alertes et métriques, arrêtez l'exécution, ajustez les hyperparamètres et lancez une nouvelle exécution
import trackio
trackio.init(project="my-project", config={"lr": 1e-4})
for step in range(num_steps):
loss = train_step()
trackio.log({"loss": loss, "step": step})
if step > 100 and loss > 5.0:
trackio.alert(
title="Loss divergence",
text=f"Loss {loss:.4f} still high after {step} steps",
level=trackio.AlertLevel.ERROR,
)
if step > 0 and abs(loss) < 1e-8:
trackio.alert(
title="Vanishing loss",
text="Loss near zero — possible gradient collapse",
level=trackio.AlertLevel.WARN,
)
trackio.finish()
Puis interrogez depuis un terminal/processus séparé :
trackio list alerts --project my-project --json --since "2025-01-01T00:00:00"