Datalab SSPCloud
Introduction
Le Datalab permet aux statisticiens de découvrir, d’expérimenter, d’apprendre, de se former aux outils de la data.
Pourquoi un Datalab ?
Dans le monde professionnel, plusieurs problèmes se posent au statisticien :
- 🐢 sa machine n’est pas assez puissante
- ⛔ installer certains logiciels est parfois interdit et bloqué par le système
- 🔒 il doit analyser des données sensibles en toute sécurité
À l’INSEE, un projet est né pour pallier à ce besoin : Onyxia porté par le lab de l’INSEE.
La première étape fut de créer une infrastructure Cloud avec des CPUs, des GPUs, de la RAM et du stockage.
Ensuite, avoir plein de ressources c’est très bien, mais encore faut-il savoir les utiliser. Or lancer des services dans le cloud nécessite quelques compétences spécifiques (Docker, Kubernetes, Helm, S3…) qui ne sont pas à la portée de tous.
D’où l’idée de créer une interface graphique pour pouvoir lancer des services en quelques clics. Onyxia s’appuie sur des technologies sous-jacentes (Kubernetes, Helm, S3…) pour proposer une IHM agréable pour le datascientist. Cependant, la philosophie du projet Onyxia est d’être une brique qui facilite le travail sans se rendre indispensable. L’idée est d’éviter que les utilisateurs ne s’enferment dans un choix technologique et qu’il soit couteux d’en sortir.
À l’INSEE, une instance de ce logiciel a été installée sur le Datalab SSP Cloud, ouverte à tous les agents publics. Vous pouvez y créer un compte car c’est également ouvert à tous les élèves de l’ENSAI (en utilisant votre mail ENSAI).
Ne déposez pas de données sensibles sur cette instance, ni sur celle du GENES.
Pour celles et ceux qui iront à l’INSEE, une autre instance nommée LS3 n’est accessible qu’en interne et autorise l’utilisation de données sensibles.
Onyxia est un logiciel Libre et Open Source. Chacun peut installer sa propre instance sur son infra. C’est ce qu’ont fait de nombreux organismes, ainsi que le GENES.
Les services
Le principe est d’offrir aux utilisateurs la possibilité de lancer de nombreux services à la demande (Jupyter, Rstudio, VSCode, PostgreSQL…) avec une puissance de calcul adaptée aux besoins.
Ces services sont éphémères, car si les ressources sont importantes, il faut savoir les partager !
Le principe général est le suivant :
- Vous lancez votre service en réservant des ressources (CPU, GPU, RAM, Stockage)
- Vous effectuez votre travail
- Vous sauvegardez votre code (git) et vos résultats (MinIO)
- Vous supprimez votre service et libérez les ressources
Pour plus de détails, vous pouvez consulter la vidéo en bas de la page.
Prenons l’exemple de ce qu’il se passe en arrière plan lorsque vous lancez un service Vscode-python :
0.0.1 Construction de l’image Docker
Une image Docker est un paquet léger et autonome qui contient tout le nécessaire pour exécuter une application : le code, les bibliothèques, les dépendances, les variables d’environnement et les fichiers de configuration.
Les images Docker permettent de créer des environnements isolés et cohérents, garantissant ainsi la portabilité et la reproductibilité des applications.
- Nous partons de l’image de base d’Onyxia
- ubuntu:22.04 et quelques éléments de config
- Nous ajoutons la couche python-minimal
- installation de python et quelques packages classiques
- Nous ajoutons la couche python-datascience
- Julia, Quarto et des packages de datascience (numpy, pandas…)
- Nous ajoutons la couche vscode
- Installation de Visual Studio Code et configuration
Vous avez maintenant une image Docker avec tout ce qu’il faut pour bien travailler.
0.0.2 DockerHub
Cette image est construite et déposée sur DockerHub onyxia-vscode-python.
Nous allons ensuite lancer une instance de cette image : un conteneur.
Une image est comme un moule, et un conteneur est un objet fabriqué à partir de ce moule. L’image contient les instructions, et le conteneur est l’instance concrète créée à partir de ce modèle. Vous verrez le même principe dans le cours de POO avec les classes (modèles) et les objets (instances)
Pour gérer tous les conteneurs lancés sur le datalab, nous avons besoin d’un orchestrateur : Kubernetes.
0.0.3 Chart Helm
Cependant, nous allons d’abord utiliser Helm pour faciliter le déploiement.
Helm simplifie le processus de déploiement d’applications sur Kubernetes en automatisant les tâches répétitives et en fournissant une gestion centralisée des configurations.
Le chart Helm vscode-python est un ensemble de fichiers de configuration qui facilite le déploiement d’application dans un envrionnement Kubernetes.
0.0.4 Déploiement sur Kube
Kubernetes (K8s) est un système open-source qui automatise le déploiement, la mise à l’échelle et la gestion d’applications conteneurisées. C’est un orchestrateur de conteneurs.
K8s récupére via le chart Helm toutes les infos nécessaires et déploie le conteneur (créé à partir de l’image Docker) sur l’infra du datalab.