JCAD 2024 , Bordeaux 6 nov. 2024
Marc BUFFAT département-composante mécanique, Université Lyon 1
Enseignant en mécanique, modélisation numérique, calcul scientifique avec une expertise en mécanique des fluides et HPC
Besoins | Méthode |
---|---|
Besoin d'outils numériques adaptés à mes enseignements et mes étudiants | Développement basé sur les besoins pédagogiques |
Outils comme Matlab et Maple trop contraignants | Utilisation de notebook Jupyter des 2015 |
Choix du langage Python | Utilisation de Python dans ma recherche (HPC) dès 2010 |
Problématique environnementale | Solution mutualisée éco-éfficiente |
Formation à l'utilisation "intelligente" des outils de l'IA en Sciences/Santé
Formation au "Machine Learning (ML)" pour les étudiants de Master2 en "Modélisation et Applications en Mécanique" (MAM)
Approche basée sur le calcul scientifique (méthode d'optimisation) et l'utilisation de Python
En cours/TP traitement d'applications concrètes nécessitant des ressources de calcul importantes
$\leadsto$ nécessité d'accès à des GPU et des bibliothèques optimisées
Mais la partie HPC ne représente qu'une partie des besoins (apprentissage)
utilisation de VM sur des infra mutualisées avec un système de gestion de cours
problématique : utilisation et partage des ressources pour l'IA computationnelle (en particulier les GPU)
Basée sur Logiciels libres que l'on peut étendre, adapter aux besoins et faire communiquer
Python | Jupyter | Flask | Debian linux | GitLab |
---|---|---|---|---|
Basé sur l' EcoSystème Jupyter (pour l'éducation)
Ensemble d'outils open source pour l'informatique interactive et exploratoire, et une plate-forme interactive pour créer des récits informatiques
Large communauté internationale
Développement sur des serveurs virtualisées Debian + JupyterHub au dpt méca depuis 2015,
Dans le cadre du projet AMI INCLUDE, déploiement à Lyon 1 depuis 2022 puis à l'INSA en 2024
Infrastructure actuelle au CISR : gestion des VM avec KVM
site du projet https://jupyter.univ-lyon1.fr
à l'UCB Lyon 1 un serveur par année de formation
(L1 ~ 1500 étudiants, L2 ~ 470 étudiants, L3 ~280 étudiants, M1 ~ 230 étudiants, M2 170 étudiants)
7 portails (Méca, Physique, Chimie, Maths, Génie-électrique, Science de la terre, Info.)+ 1 transversal ($\leadsto$ ~3000 étudiants)
31 cours (UE) ouverts avec ~ 90 enseignants dans les équipes pédagogiques
en 2024 1ere et 2nd année INSA de Lyon
Exemples sur https://perso.univ-lyon1.fr/marc.buffat/
en CM (cours) avec des notebooks de cours ( à trous)
en TP à l'aide de notebooks de TP (avec de la programmation) avec des tests de validations
TP virtuels (en mécanique des fluides: tube à choc, aérodynamique d'une aile
évaluation des étudiants
formation en IA avec GPU
valorisation des ressources pédagogiques (notebook) avec l'écriture de livres de cours sous Jupyter-Book
infrastructure matérielle serveurs AMD EPYC bisockets 256 coeurs / 796 Go mem avec ou sans GPU A40 ou A100
machine virtuelle sans GPU
machine virtuelle avec GPU gpu1-nbgrader
nvidia-smi
Mon Oct 28 15:42:48 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.256.02 Driver Version: 470.256.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 0 NVIDIA A40 On | 00000000:05:00.0 Off | 0 |
| 0% 30C P8 25W / 300W | 56MiB / 45634MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A40 On | 00000000:06:00.0 Off | 0 |
| 0% 31C P8 17W / 300W | 4MiB / 45634MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
objectif: prédiction par Machine Learning du mouvement de système complexe
Modélisation du mouvement (chaotique) d'un pendule double
Notebook Ipython: prediction IApendule_double
Test sur une VM 2 x AMD EPYC 64 coeurs avec hyperthreading
limitation des ressources par utilisateur (serveur jupyter)
Exécution du notebook (phase apprentissage avec 100 iter. au lieu de 1000 )
VM avec AMD EPYC-Milan Processor 2. Ghz et 28 coeurs
un seul utilisateur: 5 minutes
2 utilisateurs : 12 h
3 utilisateurs : 25 h
Bilan
Les bibliothèques d'IA sont optimisées pour utiliser par défaut toutes les ressources disponibles de la machine.
Jupyterhub avec systemd-spawner ne permet pas de limiter les ressources utilisées par ces bibliothèques.
$\Rightarrow$ Impossible d'utiliser telle quelle cette solution pour des cours "d'IA computationnelle" sur des serveurs de cours JupyterHub
On sort la phase d'apprentissage du notebook Python
num_threads
exécution hors du notebook de la phase d'apprentissage, -i.e. dans une cellule du notebook
!python3 apprentissageCPU.py $model_file $nb_epochs $num_threads
avec pytorch 2.0 et num_thread = 2
Bilan :
dans un contexte multi-utilisateur (cours), pour des formations en IA Computationnelle sur un serveur de cours JupyterHub , il faut :
Cette approche plus formatrice qu'une approche sur des machines individuelles
utilisation de bibliothèques d'IA PyTorch ou PyCuda pour GPU
création d'un script apprentissage.py (avec paramètre)
Utilisation de la fonction python exec():
pble pas de changement d'interpréteur (donc pas de libération mémoire)
Exécution du script dans un nouvel interpréteur
!python3 apprentissage.py $model_file $nb_epochs $num_threads
c'est la solution retenue
Système de gestion de cours avec Jupyter Nbgrader
site officiel : https://jupyter.org
plateforme Lyon 1 : https://jupyter.univ-lyon1.fr
Exemples de Notebook : https://perso.univ-lyon1.fr/marc.buffat