Thèse en cours

Calcul réparti et parallèle multi-niveaux pour les graphes de réseaux de neurones de très grandes tailles

FR  |  
EN
Auteur / Autrice : Quentin Petit
Direction : Nahid Emad petiton
Type : Projet de thèse
Discipline(s) : Informatique mathématique
Date : Inscription en doctorat le 01/07/2021
Etablissement(s) : université Paris-Saclay
Ecole(s) doctorale(s) : École doctorale Sciences et technologies de l'information et de la communication
Partenaire(s) de recherche : Laboratoire : Mdls - Maison de la Simulation
référent : Faculté des sciences d'Orsay

Résumé

FR  |  
EN

CONTEXTE SCIENTIFIQUE ET MOTIVATION Le domaine de l'intelligence artificielle (IA) a connu un essor sans précédent ces dernières années avec des succès spectaculaires très médiatisés comme en 2016 quand AlphaGo fut la première IA à battre le meilleur joueur de Go au monde. En réalité, l'IA est utilisée dans de nombreux domaines allant de la vision par ordinateur au traitement automatique des langues afin d'obtenir des systèmes performants résolvant des problèmes complexes (diagnostique en médecine, systèmes autonomes en robotique etc.). Parmi les nombreuses techniques de l'intelligence artificielle, l'apprentissage profond à base de réseaux de neurones a montré de très bonnes capacités d'apprentissage et des bonnes performances dans de nombreux domaines. Pour améliorer la qualité des résultats obtenus, une des premières techniques est d'augmenter la profondeur d'un réseau. Par exemple dans le domaine de la vision par ordinateur, ResNet proposé en CVPR 2016 a plus de 100 couches et qui peut être étendu avec plus de 1000 couches ; à comparer avec VGG proposé en ILSVRC 2014 qui n'a que 19 couches. Une deuxième technique est d'augmenter le nombre des paramètres d'un réseau. Par exemple dans le domaine de traitement de langue naturelle, le modèle BERT-Large proposé en NAACL-HLT 2019 possède 24 couches, 1024 états cachés, 16 têtes d'Attention et un total de 340M paramètres. Cependant dans les domaines tels que les réseaux sociaux et la relation entre produits et consommateurs, des données ne sont pas structurées mais plutôt sous forme de graphes. Pour pourvoir traiter des données sous forme de graphes, Wide&Deep proposé en DLRS 2016 converti d'abord les données de graphes en format structuré par la fonction Embedding Lookup. Cette solution demande beaucoup de travail en ingénierie pour générer des résultats de qualité. Kipf et al [1] ont pris une autre approche en proposant des Graph Convolutional Neural Network (GCN) qui traite directement des données sous forme de graphes. Cette approche Graph Neural Network (GNN) est aujourd'hui de plus en plus utilisée et reconnue. GraphSAGE [2], GAT [3], PinSAGE [4] sont des exemples, parmi bien d'autres, de GNN proposés récemment. Les données sont alors manipulées sous forme de matrices creuses et des méthodes d'algèbre linéaire doivent être optimisées pour efficacement utiliser ces GNN. Entre-temps, nombreuses solutions matérielles ont été proposées pour accélérer le calcul tensoriel/matriciel, par exemple : • Google a annoncé le TPU (Tensor Processing Unit), une puce spécialement conçue pour sa plateforme logicielle TensorFlow, • Nvidia a proposé le Tensor Core dans ses architecture Volta et Turing, • Huawei a également introduit des machines Atlas équipées des accélérateurs Ascend. Par ailleurs, de tels accélérateurs ont toujours des mémoires assez limitées. Pour entrainer des réseaux et graphes de neurones sur de vraies données industrielles, souvent de très grandes tailles, un cluster d'accélérateurs est donc indispensable. Programmer sur une telle machine multi-niveau n'est pas toujours facile. Chaque niveau a souvent besoin d'un paradigme de programmation parallèle différent. Par ailleurs, les données associées aux graphes sont irrégulières, ce qui complique encore considérablement la complexité. Les scientifiques essaient alors souvent d'adapter des algorithmes parallèles et distribués « classiques » en proposant une solution plus « locale ». Cependant, la qualité des résultats de ces calculs et leurs performances ne peuvent pas être garanties avec cette approche pour des problèmes plus complexes. Trouver des « bons » algorithmes pour entrainer efficacement les GNN sur des architectures multi-niveau, réparties et parallèles, de grandes tailles sur de très grandes données irrégulières est donc un objectif important et ambitieux. VERROUS TECHNOLOGIQUES ET OBJECTIFS Des données irrégulières de type graphes peuvent être converties en matrices « creuses » et traitées avec des méthodes d'algèbre linaire. Les BLAS, qui sont des ensembles de fonctions standardisées, ont été proposés depuis de nombreuses années pour réaliser des opérations de base de l'algèbre linéaire comme, par exemple, des additions de vecteurs, des produits scalaires ou des multiplications de matrices. Néanmoins, les implémentations de BLAS sont souvent optimisées pour des très grandes matrices pleines uniquement. Cependant, un calcul de convolution est au contraire une composition de calculs de petites matrices et un réseau de graphe est plutôt représenté par des matrices creuses. Les algorithmes répartis et parallèles multi-niveaux d'algèbre linéaire numérique performant pour des cas de matrices creuses sont encore très difficiles à optimiser dans le cas des CNN. En particulier la répartition des données irrégulières sur des clusters d'accélérateurs est difficile à optimiser pour minimiser les communications couteuses. Le choix des formats de compression de ces matrices est crucial sur les performances et doit être fait en prenant en considérations les divers niveaux de programmation. Les choix actuels de ces formats faits par Nvidia et TensorFlow par exemple ne sont pas identiques bien que le second utilise des logiciels du premier. L'un venant des usages du calcul numérique haute performance et l'autre du domaine du « Big Data ». La convergence actuelle entre le calcul haute performance et le Big Data vers l'IA demande une nouvelle pratique pour choisir ces formats pour les nouveaux clusters. Petiton et al [5, 6] ont introduit le format de compression SGP (Sparse General Pattern) pour généraliser le calcul réparti et parallèle de BLAS2 d'une matrice creuse par un vecteur, qui est bien adapté pour les architectures à mémoires réparties et fortement hiérarchisées. Le format SGP pourra être une bonne base pour concevoir des algorithmes répartis et parallèles multi-niveaux de GNN. L'adaptation de SGP et de formats hybrides pour une machine répartie et parallèle multi-niveaux équipée d'accélérateurs est un sujet à étudier dans le cadre des GNN pour les méthodes d'algèbre linéaire requises. Les nouvelles machines développées pour l'IA possédant de plus en plus des arithmétiques flottantes diverses, l'impact d'arithmétiques mixtes sur ces méthodes doit aussi être considéré lors de ces recherches. Le choix des arithmétiques est très important pour la qualité des résultats mais aussi sur l'énergie consommée et l'optimisation des communications. Dans ce cadre, les systèmes de recommandation sont un domaine d'application important des GNN. Les papiers sur les GNN ne traitent pour l'instant que de graphes relativement petits, à cause des problèmes liés à l'efficacité de ces calculs. Klicpera et al [7] utilisent la relation entre les GCN et le PageRank [8] pour dériver un schéma de propagation amélioré basé sur le PageRank Personnalisé (PRP). Cette méthode est efficace sur le calcul et a des performances supérieures à l'état de l'art. L'utilisation de la méthode PRP permet aussi d'éviter un « lissage » trop rapide. HITS [9] et SALSA [10] sont des algorithmes de classement de nœuds de graphe plus locaux, et donc plus légers, que PageRank. En effet, les méthodes HITS et SALSA travaillent sur des sous-graphes plus locaux et sont donc plus rapides, bien que la méthode SALSA utilise elle-même une méthode PageRank localement. Cependant, la sélection du sous-graphe est sujet-dépendant selon des requêtes demandées. Peut-on appliquer HITS ou SALSA sur les GNN pour obtenir une solution efficace ? C'est un sujet de recherche ouvert très important pour pourvoir utiliser les GNN dans de vrais systèmes qui traitent de graphes massifs. SUJET DE LA THÈSE Ce projet de thèse vise à contribuer à la création d'outils logiciels haute performance pour la conception efficace des GNN pour des applications telles que système de recommandation [11], traitement de langue naturel [12]. Cela par la conception des méthodes et solutions algorithmiques afin d'optimiser le traitement des graphes de réseaux de neurones sur des nouvelles architectures parallèles et/ou distribuées multi-niveaux. Des solutions réparties et parallèles seront donc proposées pour distribuer et représenter les graphes efficacement sur les machines ciblées pour les méthodes d'algèbre linéaire nécessaires au GCN. Cela en considérant diverses arithmétiques et divers types d'accélérateurs tensoriel/matriciel. La détermination des techniques de compression des structures de données creuses intervenant dans ces méthodes pourra constituer une première étape. Une librairie numérique parallèle réutilisable pour la résolution des méthodes devra être conçue et réalisée. La stratégie de conception de celle-ci devra être basée sur une approche par composant et permettre une réutilisation maximale du code dans divers contextes parallèles tout en permettant l'optimisation des performances. La corrélation entre les paramètres algorithmiques et architecturaux et les métriques de performances des algorithmes/programmes ciblés devra être prise en compte. La recherche de telles corrélations devra conduire à la définition de nouvelles approches du type 'unite & conquer' pour le traitement du GCN. Cette technique est proposée dans le domaine du calcul numérique haute performance [13] et adaptée au domaine d'apprentissage automatique dans [14] et [15]. Le programme de travail proposé pour atteindre ces objectifs est le suivant: • Étude de l'état de l'art sur les graphes de réseaux de neurones, les architecture de machine multi-niveau et d'accélérateurs, les arithmétiques proposées, les outils de calcul parallèle, • Concevoir, analyser, expérimenter et évaluer des structures multi-niveaux de données réparties de très grandes tailles pour les graphes de réseaux de neurones sur de grands clusters d'accélérateurs, adaptées aux calculs matriciels « creux », • Identifier et analyser des algorithmes haute performance de traitement de graphes parallèles et répartis, pour les graphes de réseaux de neurones. Les optimiser et proposer des évolutions pour les plateformes ciblées, prenant en compte les arithmétiques mixtes, • Concevoir des méthodes et des algorithmes haute performance et arithmétiquement précis pour le traitement parallèle et distribué de graphes de réseaux de neurones. Expérimenter sur des données de très grandes tailles. Analyser les résultats et proposer des solutions au problème traité dans la thèse. Les résultats auront pour objectif d'intégrer l'environnement MindSpore de Huawei et de contribuer aux produits et solutions IA de Huawei, afin d'explorer toute la puissance potentielle de ses machines ou d'accélérateurs plus généraux comme des GPGPU. Les résultats seront disponibles en open-source avec MindSpore sur https://gitee.com/mindspore/mindspore et https://github.com/mindspore-ai/ Proposition du déroulement de la thèse de doctorat : 1ere année : • Bibliographie sur les graphes de réseaux de neurones, les architectures de machine multi-niveaux avec les accélérateurs, et les outils de calcul parallèle, • Concevoir des structures de données multi-niveaux réparties pour les graphes, • Identifier et analyser des algorithmes haute performance de traitement de graphe parallèles et répartis pour les graphes de réseaux de neurones, • Trouver, ou définir, des jeux de données de très grandes tailles. Expérimenter sur des clusters d'accélérateurs sur certaines d'entre elles. 2eme année : • Concevoir des algorithmes pour la répartition de données de type graphes, • Concevoir des algorithmes pour le calcul de graphes de réseaux de neurones sur des machines multi-niveaux, en considérant l'utilisation de méthodes de type PageRank, HITS ou SALSA, • Expérimenter sur des clusters d'accélérateurs, pour des jeux de données proposés, en considérant les diverses arithmétiques proposées, • Publication des résultats obtenus sur les GNN. 3eme année : • Concevoir des optimisations sur des systèmes de recommandation basés sur les GNN, • Proposer une méthode parallèle et répartie multi-niveau pour GCN incluant l'utilisation d'algorithme de type PageRank ou autres, utilisant au mieux les arithmétiques classiques, et synthétisant les recherches menées les deux premières années, • Expérimenter sur des clusters d'accélérateurs tels qu'ATLAS ou machine lancée cette année-là, • Publication des résultats obtenus, • Soutenance de la thèse.