SuperCalculateur

Formation SuperCalculateur : programmer sur supercalculateur avec Python Formation Initiation à la programmation sur supercalculateur avec Python

Python a été initialement conçu pour répondre à des besoins d’administration système. Mais il est aujourd’hui un langage plébiscité pour de nombreux autres domaines dont le développement Web, la data science et le machine-learning.
Nous vous proposons dans cette formation d’apprendre à paralléliser vos projets les plus exigeants sur supercalculateur pour gagner en performances, que ce soit pour des besoins en data science ou intelligence artificielle. Les besoins en calcul parallèle n’ont jamais été aussi grands pour l’humanité. Les défis d’aujourd’hui : climat, énergie, IA, et plus généralement, la recherche scientifique sont très exigeants en capacité de traitements. Le classement des supercalculateurs (https://top500.org) compte aujourd’hui 4 supercalculateurs exaflopiques, dont un en Europe. Le coût d’utilisation de ces monstres de puissance peut s’avérer plus avantageux que la location de machines dans le cloud et toute société peut louer ce type de service qui n’est plus réservé aux multinationales ou grands centres de recherche.
La programmation pour supercaclulateur peut faire peur, mais avec Python, elle n’est pas plus compliquée que de déployer des machines dans le cloud. Nous vous proposons une initiation à la programmation sur supercalculateur - avec Python - pour faire passer vos codes de calculs, traitement de données et machine learning à l’échelle supérieure...

Résumé

Outils : Python dans une version récente, le serveur Jupyter, un supercalculateur (le votre ou le notre)
Durée : 5 jours, 35 heures
Objectifs :
A l’issue du stage, les participants seront capables paralléliser leurs tâches sur diverses architectures. Ils auront une connaissance claire des concepts et limites du parallélisme, sauront profiler leur code source et utiliser différentes techniques pour optimiser leur code python : compilation just in time, utiliser des cpu et gpu, distribuer ses traitements sur une ou plusieurs machines... Ils auront acquis les connaissances suivantes :
 Utiliser un supercalculateur au quotidien
 Développer des programmes avec MPI
 Utiliser dask et son ecosystème xarray, datashader, prefect...
 Utiliser des GPU pour accélérer vos traitements de données
 Déployer vos pipelines de machine learning sur plusieurs noeuds de calculs
 Mettre en œuvre la compilation Just In Time sur CPU et GPU
Public & Pré-requis : Cette formation s’adresse aux personnes possédant une première expérience du langage Python et des librairies numpy et pandas, scikit-learn et tensorflow/keras.
Méthodes mobilisées : La formation sera essentiellement pratique, chaque concept théorique étant suivi d’exemples et exercices ce qui permet aux participants d’assimiler immédiatement les notions enseignées. Le pourcentage d’exercices varie entre 60 et 80 % de la durée de la formation. Les supports sont exhaustifs et peuvent être ré-utilisés après la formation pour la reprendre entièrement seul(e). L’utilisation de notebooks Jupyter facilite la prise en main du langage et les échanges interactifs avec le formateur.
La formation peut se dérouler à distance, dans vos locaux ou nos locaux.
Il est aussi envisageable de réaliser la formation sur vos données ou avec des exercices proches de vos tâches quotidiennes utilisant des données open source.
Ceci fera l’objet d’une discussion en préparation de la formation afin de définir son cadre d’exécution et de valider les moyens techniques utilisés. L’idéal étant d’adapter les exercices au plus proche de vos besoins métiers.
Modalités et délais d’accès : sur inscription préalable au minimum 1 semaine avant le début de la formation selon disponibilité du formateur.
Modalités d’évaluations : une évaluation du niveau des stagiaires est réalisée avant l’entrée en formation par téléphone ou au moyen d’un questionnaire. Évaluation des acquis et de la satisfaction en fin de formation.
Accessibilité aux personnes en situation de handicap ou présentant des difficultés d’apprentissage : nous pouvons proposer des solutions de compensation de nos prestations en adaptant les moyens pédagogiques, techniques et d’encadrement (les précisions).
Taux de satisfaction 2i2L : 96 % des stagiaires sont satisfaits à l’issue de leur formation.
Tarif : pour une demande de formation interne, nous consulter.

Programme

Les concepts de la programmation parallèle et des supercalculateurs (0,5 jour)
 Comprendre les changements du paradigme de programmation induits par la parallélisation
 Panorama des architectures matérielles et logicielles, CPU, GPU, TPU
 Terminologie : multithreading, multiprocessing, processeur, coeur, hyperthreading, NUMA/SMP...
 Profiler votre programme
 Identifier et configurer son matériel pour en tirer les meilleures performances
 Panorama des différentes librairies Python de calcul/traitement parallèle

Utiliser un supercalculateur (1 jour)
 Connexion, noeuds de login et calcul
 Utiliser un ordonnanceur (Slurm, PBS...)
 Comprendre l’architecture d’un supercalculateur, noeuds, processeurs, mémoire distribuée, réseau, stockage...
 Exécuter et superviser des jobs avec un ordonnanceur

Message Passing Interface - MPI (0,5 jour)
 Présentation des librairies open source MPI
 Les concepts MPI, COMM World, les différents types de messages
 Lancer son programme sur plusieurs noeuds de calculs
 Présentation de différents patrons de conception pour vos pipelines de traitements de données

L’écosystème Dask sur CPU et GPU (1,5 jour)
 Présentation de dask
 Dask array et dataframes sur CPU et GPU
 Créer un cluster dask CPU et GPU
 Panorama des différentes librairies de l’écosystème Dask
 Visualiser des données avec xarray, Geovista/Pyvista et datashader
 Créer des pipelines de traitement de données

Paralléliser vos pipelines de machine learning (1 jour)
 Rappels sur le machine-learning
 Dask et scikit-learn, sur CPU et GPU
 Paralléliser vos réseaux de neurones Tensorflow et Pytorch sur plusieurs noeuds de calculs

Pour aller plus loin (0,5 jour)
 Utiliser des outils graphiques comme Paraview
 Compulation Just In Time sur CPU et GPU

Application à vos données
 dans le cas d’une formation en Intra-Entreprise, nous vous proposons de réaliser des exercices sur vos propres données afin de vous offrir des exemples concrets si cela ne présente pas de problèmes techniques ou de confidentialité.
 les exercices réalisés pendant la session de formation seront alors adaptés en fonction des données que vous pourrez mettre à disposition et de vos centres d’intérêts.