Modèle / jeu de données
SwanHubX/SwanLab avatar
SwanHubX/SwanLab

SwanLab : ce que le suivi d'entraînement auto-hébergé impose vraiment

⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / verl / LLaMA Factory / ms-swift / Ultralytics / MMEngine / Keras etc.

4 215 étoiles222 forksPythonApache-2.0

En bref

De quoi s’agit-il ?
SwanLab est une bibliothèque Python de suivi et de visualisation d'entraînement, publiée sous Apache-2.0, avec un mode cloud et un mode auto-hébergé. Le point à trancher n'est pas la richesse des intégrations, mais ce que l'auto-hébergement vous coûte en exploitation.
À qui s’adresse-t-il ?
Adoptez SwanLab si vous entraînez en PyTorch, Transformers ou via un framework déjà listé et que vous voulez un tableau de bord accessible sans écrire de visualiseur. Évitez-le si votre équipe est déjà outillée en TensorBoard et n'a aucun besoin de collaboration ni de comparaison inter-experts.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème visé : retrouver la bonne courbe parmi des centaines

Un entraînement produit des métriques, des logs, des images, parfois des vidéos et des matrices de confusion. TensorBoard affiche ces séries, mais il ne sait pas grand-chose de la comparaison entre expériences, du partage d'un tableau de bord avec un collègue, ni du regroupement de dizaines de runs lancés par un même balayage d'hyperparamètres. SwanLab se positionne exactement là. Le README le décrit comme une plateforme d'analyse d'entraînement destinée aux équipes, avec plus de 50 intégrations de frameworks et un mode cloud ou auto-hébergé. Le public visé est donc l'équipe d'entraînement de modèles, celle qui relance des expériences en série et doit ensuite décider laquelle garder. Le journal des versions est instructif sur la cible réelle : les entrées récentes parlent de groupes d'expériences, d'épinglage de projets et d'expériences, de comparaison à une baseline et de vue tableau avec tri et filtrage global. Ce sont des fonctions de gestion de volume, pas de tracé de courbes. Un chercheur isolé qui suit trois runs n'y gagnera rien de décisif.

Ce qui circule entre votre script et le tableau de bord

Le mécanisme central tient dans un appel à swanlab.init, qui ouvre un run et renvoie un objet sur lequel on enregistre des métriques au fil de l'entraînement. Le SDK transmet ces données vers le serveur, cloud ou auto-hébergé, qui les stocke et les rend dans une interface web. Le README mentionne un SDK refondu en v0.8.0 avec, selon les notes de version, une performance de journalisation de métriques nettement améliorée pour les entraînements à grande échelle. Il mentionne aussi un mode parallel permettant à plusieurs processus d'écrire des métriques dans la même expérience, et un mécanisme de heartbeat ajouté début 2026 pour rendre la connexion client-serveur plus robuste. Deux points d'architecture méritent l'attention. D'abord, le SDK écrit un journal d'expérience complet en local, que swanlab sync peut ensuite téléverser vers le cloud ou une instance privée. Ensuite, l'interface s'appuie sur un composant nommé LightningBoard, dont une V2 a été publiée en janvier 2026 et qui est présenté comme conçu pour les scénarios à très grand nombre de graphiques. Autrement dit, le projet a fait un choix explicite : le rendu du tableau de bord est un problème à part entière, traité séparément de la collecte.

Mise en route : l'appel minimal et le point de bascule

Le README renvoie à une section de démarrage rapide et à la documentation pour les commandes exactes, donc je ne les reconstituerai pas ici. Ce qui est confirmé, c'est l'API côté Python : un appel à swanlab.init pour créer l'expérience, puis des enregistrements de métriques, avec des paramètres documentés comme group et job_type pour ranger les runs, et la possibilité de définir soi-même l'identifiant d'expérience. Le point de bascule entre cloud et auto-hébergement se joue à l'initialisation : on vise soit le service swanlab.cn, soit une instance que vous exploitez. Le README documente une version Kubernetes, publiée en décembre 2025, avec sa page de déploiement, ainsi qu'une pile de supervision Prometheus et Grafana pour l'exploitation. Il existe aussi des images publiées sur Docker Hub. Le mode auto-hébergé n'est donc pas un simple binaire à lancer : la documentation elle-même le traite comme un déploiement d'infrastructure, avec ce que cela suppose de supervision. C'est le vrai coût d'entrée du projet, et il est plus élevé que celui d'un TensorBoard lancé en local.

Les limites que la documentation laisse voir

La première limite est structurelle : en mode auto-hébergé, vous devenez responsable d'un service. Le fait que le README consacre une page à Prometheus et Grafana pour Kubernetes indique que la supervision de SwanLab lui-même est un sujet à part entière. Une équipe sans compétence d'exploitation Kubernetes se retrouvera à maintenir une pile pour observer des courbes de loss. La deuxième concerne le mode cloud : les runs transitent par un service tiers, ce qui est un critère d'exclusion dans certains contextes industriels ou de recherche sous contrainte. La troisième est une question de périmètre. SwanLab n'est pas un orchestrateur de balayages d'hyperparamètres, ni un registre de modèles au sens strict, même si les topics du dépôt incluent model-versioning. Le README décrit un outil de suivi et de visualisation, et les fonctions de comparaison à une baseline ou d'épinglage d'expériences relèvent de l'analyse après coup, pas de la recherche automatique de paramètres. Enfin, la journalisation locale complète des expériences, présentée comme une fonctionnalité, implique du stockage disque à gérer sur les machines d'entraînement. Sur un cluster partagé, cela se planifie.

Face à TensorBoard, la différence n'est pas le tracé

L'alternative la plus évidente reste TensorBoard, cité dans les topics du dépôt. La différence d'approche est nette. TensorBoard lit des fichiers d'événements écrits par le framework et les affiche ; il n'y a pas de notion de compte, de projet partagé, de comparaison structurée entre runs appartenant à des personnes différentes. SwanLab ajoute une couche serveur avec des utilisateurs, des organisations, des groupes d'expériences et une API objet documentée sous le nom swanlab.Api. Le prix de cette couche est précisément ce qui manque à TensorBoard : un service à déployer, une connexion réseau à maintenir depuis les nœuds d'entraînement, et une gestion de clés d'API (le README mentionne une gestion multi-clés et le masquage automatique des clés dans les commandes enregistrées). Si votre besoin s'arrête à regarder une courbe pendant l'entraînement, TensorBoard fait le travail sans rien exploiter. Si votre besoin est de retrouver, trois semaines plus tard, quel run parmi deux cents a produit le meilleur score sur une métrique donnée, l'écart de conception se justifie.

Maintenance, rythme de publication et licence

Le dépôt n'est pas archivé et le dernier push est daté du 9 septembre 2026. Les versions publiées s'enchaînent à un rythme soutenu : v0.9.7 le 21 août 2026, v0.9.8 le 25 août, v0.10.0 le 1er septembre. Le journal des modifications couvre presque chaque mois de 2025 et 2026 avec des fonctionnalités d'interface, des types de données et des intégrations supplémentaires. Ce rythme a deux conséquences pratiques. Côté positif, les correctifs arrivent vite. Côté négatif, une instance auto-hébergée devra suivre les montées de version du serveur et du SDK, et l'écart entre les deux peut casser la compatibilité d'affichage ou d'envoi. La refonte du SDK en v0.8.0 est un exemple de changement qui n'est pas anodin pour du code existant. Sur la licence, Apache-2.0 s'applique au dépôt tel que listé. Elle autorise l'usage commercial et la modification, avec conservation des mentions de licence et d'un fichier de changements en cas de redistribution. Elle comporte une clause de brevets. Cela ne dit rien du service hébergé swanlab.cn, qui est un produit distinct du code publié, et rien non plus des conditions d'utilisation de ce service. Si vous comptez sur le mode auto-hébergé, la licence du code est le seul cadre qui vous concerne ; si vous utilisez le cloud, lisez les conditions du service, pas la licence du dépôt. Ce texte n'est pas un avis juridique.

Conclusion éditoriale

Adoptez SwanLab si vous entraînez en PyTorch, Transformers ou via un framework déjà listé et que vous voulez un tableau de bord accessible sans écrire de visualiseur. Évitez-le si votre équipe est déjà outillée en TensorBoard et n'a aucun besoin de collaboration ni de comparaison inter-experts. Avant de vous engager, vérifiez deux choses concrètes : le comportement de swanlab sync sur un run interrompu, et la procédure de déploiement auto-hébergé (Docker ou Kubernetes) dans la documentation.

Sources officielles

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. SwanHubX/SwanLab on GitHub
Notes de la communauté

Notes de la communauté