Formation Python, programmation parallèle et calcul distribué

La programmation en Python est l'une des compétences les plus demandées aujourd'hui sur le marché du travail, puisque la croissance du secteur des développeurs ne cessent de croître.

À l’issue de la formation, le participant sera en mesure de comprendre les concepts de la programmation parallèle, et de savoir identifier les portions d’un programme qui sont parallélisables.

La formation permet d'avoir une maîtrise certaine de l'écosystème de calcul parallèle pour Python, et ainsi de développer des applications parallélisées.

Pour cela, le participant apprendra à exécuter des calculs sur les GPU des cartes graphiques, et à exécuter un workflow de tâches dans le Cloud, outil essentiel du numérique.

Formation Python, programmation parallèle et calcul distribué

À l’issue de la formation, le participant sera en mesure de :

  • Acquérir les concepts de la programmation parallèle
  • Savoir identifier les portions d’un programme qui sont parallélisables
  • Posséder une vision claire de l’écosystème de calcul parallèle pour Python
  • Développer des applications parallélisées (programmation asynchrone, multithreading, multiprocessing, calcul distribué)
  • Savoir exécuter des calculs sur les GPU des cartes graphiques
  • Savoir exécuter un workflow de tâches dans le Cloud

Evaluation de la formation et de votre progression vers vos objectifs

Avant le début de la formation, un questionnaire vous permettra d’exprimer vos objectifs personnels et d’évaluer votre degré de maîtrise des principales thématiques abordées dans la formation.

Pendant la formation, le formateur observera vos pratiques afin de pouvoir vous donner des conseils personnalisés quant aux points forts sur lesquels vous pourrez vous appuyer et aux points de vigilance sur lesquels il doit axer ses efforts.

À la fin de la formation, vous aurez à remplir un questionnaire (QCM et/ou des ateliers et des exercices pratiques) pour évaluer vos nouvelles compétences et votre progression vers vos objectifs. Un questionnaire supplémentaire vous permettra d'indiquer votre niveau de satisfaction à l'égard de la formation.

Un questionnaire d’auto-évaluation à froid vous sera proposé 6 à 9 mois après la fin de formation. Celui-ci vous permettra de prendre du recul sur 

les bénéfices acquis, les efforts restant à déployer et votre degré de satisfaction vis à vis de la formation. 

Cette formation s'adresse aux développeurs, data scientists, data analysts et chefs de projets.

4 JOURS

Le parallélisme et son écosystème Python

  • Les différentes formes du parallélisme et ses architectures (CPU, GPU, ASIC, FPGA, NUMA, OpenMP, MPI... ).
  • Contraintes et limites.
  • L’écosystème de calcul parallèle pour Python.


Travaux pratiques

Profiling d’un programme (cProfile, Kcachegrind et pyprof2calltree). Compiler un programme C avec les instructions SIMD. Bien installer Numpy : comment obtenir un gain de vitesse x40.

Les bases : programmation asynchrone, multithreading et multiprocessing

  •     Programmation asynchrone : générateurs et asyncio.
  •     Multithreading : accès concurrents, verrous…
  •     Limites du multithreading en Python.
  •     Multiprocessing : mémoire partagée, pools de process, conditions...
  •     Premier cluster de calcul distribué avec les Managers et Proxy.


Travaux pratiques

Réalisation d'une même chaîne de traitement de données avec chaque modèle et d’un cluster de calcul distribué entre les machines des participants.

Calcul distribué : Celery, Dask et PySpark

  • Concepts et configuration.
  • Mise en œuvre de chaque librairie.


Travaux pratiques

Plusieurs exercices seront abordés (calcul matriciel, traitement d’image/texte, Bitcoin, Machine Learning...). Utilisation des notebooks Zeppelin.

Calculer sur GPU

  • Les architectures GPU : kernels, mémoire, threads...
  • Les librairies OpenCL et CUDA.
  • Mise en œuvre des librairies Scikit-cuda, PyCUDA et Numba.


Travaux pratiques

Calcul matriciel et traitement d’images. Machine Learning avec la librairie mxnet : Neural Art. Compilation Just In Time.

Autres librairies de programmation parallèle

  • Message Passing Interface avec MPI4py.
  • PyOpenCL : implémenter un code avec des systèmes hétérogènes.
  • Joblib : Les pipelines légers.
  • Greenlets : vers un meilleur multithreading.
  • Pythran : Compiler vos programmes Python sur architectures multicœurs et vectorisées.


Travaux pratiques

Exercices de base avec chaque librairie.

Créer des workflows de tâches

  • Les primitives disponibles avec Celery, Dask et PySpark.
  • Créer et superviser des workflows avec les librairies Luigi et Airflow.


Travaux pratiques

Création de pipelines de traitements de données avec chaque librairie.

Exécuter des calculs dans le Cloud

  • Panorama de l’offre Internet pour le Cloud.
  • Administrer un cluster avec Ansible.


Travaux pratiques

Effectuer des calculs dans le Cloud.

 

Méthodes et moyens

Cette formation repose sur une combinaison de constructions participatives, de mises en perspectives par des apports théoriques et méthodologiques, et de mises en situation (simulation et jeux de rôle) permettant de mettre en évidence les difficultés et de découvrir progressivement les méthodes et techniques appropriées. 

Bonnes connaissances du langage Python et si possible de ses librairies scientifiques Numpy, Scipy et Pandas.

  • Rugosité
  • Consciencieux
REF:
NUM_DEV_07
Durée:
4 jours
Modalité Pédagogique:
Nombre de participants:
Prix:
2 400,00 €
Prochaine date de formation : Le délai moyen de mise en œuvre est de 3 semaines à la suite de votre demande.
Modifié le 19-10-2023
REF:
NUM_DEV_07
Durée:
4 jours
Modalité Pédagogique:
Nombre de participants:
Prix:
2 400,00 €
Prochaine date de formation : Le délai moyen de mise en œuvre est de 3 semaines à la suite de votre demande.
Modifié le 19-10-2023