Version améliorée le 30 sept. 2022

NOTE : Après plusieurs mois de fonctionnement et d’expérimentation, le projet a été arrêté, faute d’implémentation possible. Un bilan a été proposé en ligne sur ce _Log : Arrêt de Callisto : bilan et réflexions.

Cet article, qui a vocation à évoluer au fil des avancées de la réalisation, présente la preuve de concept « Callisto » mise en œuvre par le HN Lab au sein de la TGIR Huma-Num.

Le démonstrateur Callisto, du nom de l’une des lunes de Jupiter, est une preuve de concept proposant la mise en œuvre du logiciel en ligne Jupyter et plus particulièrement sa version JupyterLab pour des pratiques de recherche en SHS et en lien avec l’écosystème de la TGIR Huma-Num. Ainsi, Callisto repose sur plusieurs briques disponibles au sein des services numériques de l’offre de la TGIR Huma-Num et fonctionne ainsi comme « hub » les interconnectant :

  • JupyterLab
  • JupyterHub
  • HumanID (de dispositif de la TGIR Huma-Num pour l’authentification)
  • Gitlab (forge de dépôt permettant le versionnage de document)

Qu’est-ce que JupyterLab ?

JupyterLab et son dispositif d’authentification sur serveur JupyterHub, sont des logiciels en ligne qui permettent d’écrire des documents (des notebooks ou carnets) contenant à la fois du texte (à lire, écrit en markdown) et du code informatique exécutable au sein du carnet. Ce code peut être en Python, R, Perl, Julia, etc. suivant les configurations installées dans le JupyterLab.

Les carnets Jupyter offrent aux chercheurs la possibilité d’étayer dans un même document : un propos, une démonstration en publiant à la fois les données, les traitements opérés sur les données, le ou les programme(s) exécuté(s), les résultats (données interprétées par exemple) et l’argumentaire/conclusion sous la forme d’un texte académique.

Callisto

Environnement de travail sous JupyterLab, callisto au 16 janv. 2022 avec une première offre de kernels Python dédiés

Callisto

Environnement de travail sous JupyterLab, le callisto initial de mai 2021

Un établi pour faire de la recherche ?

Très utilisé pour l’enseignement et l’apprentissage du codage, JupyterLab, quand il est placé dans un écosystème permettant le travail collaboratif et la publication en ligne, offre un dispositif complet permettant de travailler les données, de les analyser et de les publier. L’exposition, didactique et argumentée, du ou des processus de recherche offre aux chercheur·e·s la possibilité de partager leur savoir-faire et de présenter ensemble leurs méthodes de travail et les résultats sous la forme de publication réutilisable. Il s’agit de favoriser d’une part la réflexivité et la discussion partagée des méthodes, d’autre part d’en assurer la reproductibilité, conformément aux principes FAIR. Une fois stabilisé, un carnet peut être publié en ligne sous une forme statique, citable et versionnée. L’exemple ci-dessous présente un carnet Jupyter déposé dans NAKALA qui n’offre pas encore de visionneuse pour ce type de contenu.

Nakala

Publication dans NAKALA d’un carnet Jupyter, dont la visualisation reste à construire

Objectifs de notre preuve de concept : Jupyter dans l’écosystème de la TGIR Huma-num

Il s’agit pour le HN Lab de faire une première proposition aux chercheur·e·s souhaitant utiliser ce type de dispositifs afin de définir avec eux ce que serait un environnement JupyterLab interconnecté aux autres briques de la TGIR Huma-Num : Gitlab, HumanID (ci-dessous), NAKALA, et à terme sans doute du calcul sur CPU et/ou GPU (en association avec des centres de calcul).

Callisto

HumanID : l’interface commune aux services Web de la TGIR Huma-Num

Dans un premier temps, des interconnexions de Callisto ont été installées pour cette preuve de concept avec HumanID via le protocole Oauth2, ainsi qu’avec l’instance Huma-Num de la plateforme GitLab mise à disposition des programmes de recherche. Il est ainsi possible, pour une communauté de chercheur·e·s et d’ingénieur·e·s, de synchroniser et de versionner les carnets Jupyter produits dans Callisto dans un répertoire GitLab.

La publication d’un carnet JupyterLab dans un environnement Gitlab permet d’un côté une gestion versionnée et itérative (collective), ouvrant de nouvelles opportunités en terme de collaboration (co-développement, tickets et attribution de tâches). D’un autre côté, un répertoire Gitlab contenant des carnets Jupyter peut être couplé à des outils de traitements et de calcul tel que MyBinder, permettant au carnet d’être publiquement accessible dans une version exécutable.

Dans un second temps, une interconnexion avec NAKALA pourrait être imaginée facilitant le dépôt académique, la publication dans une revue ou un ouvrage, ou encore la préservation à long terme. L’inclusion dans NAKALA d’un service d’exécution de carnets, tel que MyBinder serait l’ultime aboutissement d’un tel dispositif. Cette configuration d’écriture collective, exécutable et réexécutable, peut être schématisée tel que ci-dessous :

Callisto

Schéma conceptuel de l’inclusion de Callisto dans l’écosystème de la TGIR Huma-Num

Démarche de conception

Dans la démarche du HN Lab, il s’agit aussi de créer une communauté d’utilisateurs afin d’échanger sur les besoins1.

Callisto

Premières propositions de kernels dédiés à des méthodes de travail donnée : ici un kernel préparé pour le Deep Learning proposant Tensorflow Keras, SKLearn…

Enfin, outre la preuve de concept évolutive, il s’agit de proposer une expérimentation d’instance JupyterLab conçue spécifiquement pour les besoins SHS. La preuve de concept Callisto a ainsi vocation à intégrer des éléments pertinents sur le plan scientifique pour la communauté SHS :

  • Des modèles de carnets par disciplines (ou par familles de projets)2
  • Des librairies correspondant aux pratiques et aux méthodes de traitements scientifiques en SHS, et facilitant l’interconnexion aux services de la TGIR Huma-Num
  • Des environnements Python (ou autres) dédiés à une pratique SHS particulière et en lien avec les axes de l’HN Lab3
  • Un dispositif de deploiement de JupyterHub+Lab à la demande, adosé à un configurateur d’instance JupyterHub+Lab et utilisable par des projets ayant des objectifs différents
  • Un adossement a des moyens de stockage important (rsync, gitlab, etc.) permettant de stocker les données à traiter et les résultats des traitements
  • Un accès au sein de l’espace de travail à des moyens de calcul GPU

Fin de l’expérience

Après plusieurs mois de fonctionnement et d’expérimentation, le projet a été arrêté, faute d’implémentation possible. Un bilan a été proposé en ligne sur ce _Log : Arrêt de Callisto : bilan et réflexions.

Ressources

  1. Un groupe de travail Jupyter s’est constitué autour d’une liste de diffusion

  2. Voir le projet Modoap de Julien Schuh qui propose une boite-à-outil de carnets génériques à prendre en main et à adapter selon les projets. 

  3. Lire les axes du HN Lab sur le site Web d’Huma-Num