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.
