Parallel Computing with R and Python
- Enseignant(s)
- Emmmanuel PILLIAT, Aymeric STAMM
- Type de matière
- STATISTIQUE
- Correspondant
- François PORTIER
- Module
-
UE-MSD04 : Advanced Tools for Data Analysis & Computing
- Nombre d'ECTS
- 2
- Code matière
- MSD 04-2
- Répartition des enseignements
-
Heures de cours : 18
- Langue d'enseignement
- Anglais
Objectifs
R-Julia-Python : Détecter les parties lentes d’un script à l’aide d’outils de profilage et de benchmarking. Les étudiants seront capables d’identifier les parties d’un script où le code doit être optimisé et où les allocations de mémoire doivent être réduites.rn- Julia : Comprendre pourquoi un langage compilé « juste à temps » peut spécialiser le code en fonction des types, et comment cela réduit la surcharge par opération, en prenant Python comme point de comparaison familier.rn- Julia : Comprendre le dispatch multiple en tant que mécanisme du langage, en le comparant au style orienté objet de Python.rn- R-Julia-Python : Connaître les différentes façons de mettre en œuvre des calculs parallèles.rn- Julia & Python : Mettre en œuvre des calculs multithread sur le processeur et reconnaître les pièges classiques, tels que les conditions de concurrence et les limites imposées par certains moteurs d’exécution aux threads.rn- Julia & Python : Distinguer la concurrence du parallélisme et utiliser des tâches asynchrones pour superposer les temps d’attente sur un seul cœur.rn- Julia : Acquérir une compréhension de la hiérarchie mémoire et de la localité des données et, si le temps le permet, avoir un aperçu de la manière dont un calcul peut être déchargé vers un GPU.rn- R : Découverte et utilisation de l’écosystème de packages « futureverse », un cadre de parallélisation unifié sous R permettant de paralléliser des tâches en local ou sur des clusters.rn- R : Découverte et utilisation des packages « mirai » et « mori », qui offrent les mêmes fonctionnalités avec des compromis différents et prennent en charge l’accès à la mémoire partagée.rn- R : Utilisation du calcul parallèle pour l’analyse exploratoire des données au sein de l’écosystème « tidyverse ».rn- R : Utilisation du calcul parallèle pour l’optimisation des modèles d’apprentissage automatique au sein de l’écosystème « tidymodels ».rn- Amélioration des performances du code grâce au calcul parallèle sur le processeur (CPU) et, si le temps le permet, sur le processeur graphique (GPU).
Plan
Dans la section consacrée à R, nous apprendrons à profiler le code afin d’identifier les parties lentes ou gourmandes en mémoire. Nous découvrirons ensuite quelques astuces pour nous assurer que le code R de base est optimisé avant d’envisager la parallélisation. Nous présenterons ensuite différentes méthodes de mise en œuvre des calculs parallèles sous R, ainsi que leurs avantages et leurs inconvénients. Enfin, nous nous intéresserons au framework Futureverse, qui constitue un cadre unificateur pour le calcul parallèle sous R.rnNous aborderons en détail les concepts fondamentaux des futurs et présenterons les récents packages « futurize » et « progressify », qui permettent de transformer sans difficulté du code séquentiel en code parallèle. Nous découvrirons également les packages « mirai » et « mori » dédiés à la parallélisation, qui proposent différents types et prennent en charge l’accès à la mémoire partagée. Le cours s’attachera ensuite à montrer à quel point il est simple d’utiliser la parallélisation au sein de l’écosystème « tidyverse » pour l’analyse exploratoire des données, et au sein de l’écosystème « tidymodels » pour l’apprentissage automatique, grâce aux packages « futureverse » et « mirai ».rnDans la section consacrée à Julia et Python, l’idée directrice est que la vitesse ne provient pas d’un langage « magique », mais de la compréhension de ce que fait réellement la machine. Python sert de référence familière et Julia de banc d’essai. À travers une série de petits exemples, nous examinons en quoi le code spécialisé par type diffère du code interprété, comment le dispatch par type se compare au style orienté objet, et en quoi la concurrence diffère du parallélisme : d’abord le chevauchement des temps d’attente avec des tâches asynchrones sur un seul cœur, puis le multithreading et ses pièges classiques, tels que les conditions de course. Les temps d’exécution sont comparés au fur et à mesure, afin que les étudiants puissent voir d’où proviennent réellement les gains de vitesse. En fonction du temps disponible, cette section peut également proposer un aperçu des outils Python courants pour le calcul numérique et parallèle, ainsi que du transfert d’un calcul vers un GPU. Le choix précis des thèmes et des bibliothèques peut varier d’une année à l’autre.rn
Prérequis
Connaissances de base en R et Python. Aucune connaissance préalable de Julia n’est requise : le langage est présenté à partir de zéro, en prenant Python comme point de comparaison.