nouvelles (1)

Newsletter

GPU occupés : la méthode d’échantillonnage et de mise en pipeline accélère l’apprentissage en profondeur sur les grands graphiques | Nouvelles du MIT

Les graphes, un réseau potentiellement étendu de nœuds connectés par des bords, peuvent être utilisés pour exprimer et interroger les relations entre les données, telles que les connexions sociales, les transactions financières, le trafic, les réseaux énergétiques et les interactions moléculaires. Au fur et à mesure que les chercheurs collectent plus de données et construisent ces images graphiques, les chercheurs auront besoin de méthodes plus rapides et plus efficaces, ainsi que de plus de puissance de calcul, pour effectuer un apprentissage en profondeur sur celles-ci, à la manière des réseaux de neurones graphiques (GNN).

Désormais, une nouvelle méthode, appelée SALIENT (Sampling, sLIcing, and data movemeNT), développée par des chercheurs du MIT et d’IBM Research, améliore les performances de formation et d’inférence en s’attaquant à trois goulots d’étranglement clés dans le calcul. Cela réduit considérablement le temps d’exécution des GNN sur de grands ensembles de données, qui, par exemple, contiennent à l’échelle de 100 millions de nœuds et 1 milliard d’arêtes. De plus, l’équipe a constaté que la technique s’adapte bien lorsque la puissance de calcul est ajoutée d’une à 16 unités de traitement graphique (GPU). Les travaux ont été présentés à la cinquième conférence sur l’apprentissage automatique et les systèmes.

“Nous avons commencé à examiner les défis rencontrés par les systèmes actuels lors de la mise à l’échelle des techniques d’apprentissage automatique de pointe pour les graphes vers de très grands ensembles de données. Il s’est avéré qu’il y avait beaucoup de travail à faire, car de nombreux systèmes existants obtenaient de bonnes performances, principalement sur des ensembles de données plus petits qui s’intègrent dans la mémoire GPU », explique Tim Kaler, l’auteur principal et post-doctorant au MIT Computer Science. et Laboratoire d’Intelligence Artificielle (CSAIL).

Par vastes ensembles de données, les experts entendent des échelles comme l’ensemble du réseau Bitcoin, où certains modèles et relations de données pourraient énoncer des tendances ou un jeu déloyal. “Il y a près d’un milliard de transactions Bitcoin sur la blockchain, et si nous voulons identifier les activités illicites au sein d’un tel réseau commun, alors nous sommes confrontés à un graphique d’une telle ampleur”, déclare le co-auteur Jie Chen, chercheur principal et directeur. d’IBM Research et du MIT-IBM Watson AI Lab. “Nous voulons construire un système capable de gérer ce type de graphique et permettant un traitement aussi efficace que possible, car chaque jour, nous voulons suivre le rythme des nouvelles données générées.”

Les co-auteurs de Kaler et Chen incluent Nickolas Stathas MEng ’21 de Jump Trading, qui a développé SALIENT dans le cadre de ses études supérieures ; Anne Ouyang, ancienne stagiaire du MIT-IBM Watson AI Lab et étudiante diplômée du MIT; Alexandros-Stavros Iliopoulos, post-doctorant au MIT CSAIL ; Tao B. Schardl, chercheur au MIT CSAIL ; et Charles E. Leiserson, professeur Edwin Sibley Webster de génie électrique au MIT et chercheur au MIT-IBM Watson AI Lab.

Pour ce problème, l’équipe a adopté une approche orientée système pour développer sa méthode : SALIENT, explique Kaler. Pour ce faire, les chercheurs ont mis en œuvre ce qu’ils considéraient comme des optimisations de base importantes des composants qui s’intègrent dans les cadres d’apprentissage automatique existants, tels que PyTorch Geometric et la bibliothèque de graphes profonds (DGL), qui sont des interfaces pour créer un modèle d’apprentissage automatique. Stathas dit que le processus revient à échanger des moteurs pour construire une voiture plus rapide. Leur méthode a été conçue pour s’adapter aux architectures GNN existantes, afin que les experts du domaine puissent facilement appliquer ce travail à leurs domaines spécifiques pour accélérer la formation du modèle et dégager plus rapidement les informations lors de l’inférence. L’astuce, a déterminé l’équipe, était de garder tout le matériel (processeurs, liaisons de données et GPU) occupé à tout moment : pendant que le processeur échantillonne le graphique et prépare des mini-lots de données qui seront ensuite transférés via la liaison de données. , le GPU le plus critique travaille à former le modèle d’apprentissage automatique ou à effectuer des inférences.

Les chercheurs ont commencé par analyser les performances d’une bibliothèque d’apprentissage automatique couramment utilisée pour les GNN (PyTorch Geometric), qui a montré une utilisation étonnamment faible des ressources GPU disponibles. En appliquant des optimisations simples, les chercheurs ont amélioré l’utilisation du GPU de 10 à 30 %, ce qui a entraîné une amélioration des performances de 1,4 à deux fois par rapport aux codes de référence publics. Ce code de base rapide pourrait exécuter une passe complète sur un grand ensemble de données d’apprentissage via l’algorithme (une époque) en 50,4 secondes.

À la recherche d’améliorations supplémentaires des performances, les chercheurs ont entrepris d’examiner les goulots d’étranglement qui se produisent au début du pipeline de données : les algorithmes d’échantillonnage de graphes et de préparation de mini-lots. Contrairement à d’autres réseaux de neurones, les GNN effectuent une opération d’agrégation de voisinage, qui calcule des informations sur un nœud à l’aide d’informations présentes dans d’autres nœuds à proximité du graphique – par exemple, dans un graphique de réseau social, des informations provenant d’amis d’amis d’un utilisateur. À mesure que le nombre de couches du GNN augmente, le nombre de nœuds que le réseau doit atteindre pour obtenir des informations peut exploser, dépassant les limites d’un ordinateur. Les algorithmes d’échantillonnage de voisinage aident en sélectionnant un sous-ensemble aléatoire plus petit de nœuds à rassembler ; cependant, les chercheurs ont constaté que les implémentations actuelles de cela étaient trop lentes pour suivre la vitesse de traitement des GPU modernes. En réponse, ils ont identifié un mélange de structures de données, d’optimisations algorithmiques, etc. qui amélioraient la vitesse d’échantillonnage, améliorant finalement l’opération d’échantillonnage seule d’environ trois fois, faisant passer le temps d’exécution par époque de 50,4 à 34,6 secondes. Ils ont également constaté que l’échantillonnage, à un taux approprié, peut être effectué lors de l’inférence, améliorant ainsi l’efficacité énergétique et les performances globales, un point qui avait été négligé dans la littérature, note l’équipe.

Dans les systèmes précédents, cette étape d’échantillonnage était une approche multi-processus, créant des données supplémentaires et des mouvements de données inutiles entre les processus. Les chercheurs ont rendu leur méthode SALIENT plus agile en créant un processus unique avec des threads légers qui conservaient les données sur le CPU dans une mémoire partagée. En outre, SALIENT tire parti d’un cache de processeurs modernes, explique Stathas, en parallélisant le découpage des fonctionnalités, qui extrait les informations pertinentes des nœuds d’intérêt et de leurs voisins et bords environnants, dans la mémoire partagée du cache central du processeur. Cela a de nouveau réduit le temps d’exécution global par époque de 34,6 à 27,8 secondes.

Le dernier goulot d’étranglement auquel les chercheurs se sont attaqués était de canaliser les transferts de données par mini-lots entre le CPU et le GPU à l’aide d’une étape de prélecture, qui préparerait les données juste avant qu’elles ne soient nécessaires. L’équipe a calculé que cela maximiserait l’utilisation de la bande passante dans la liaison de données et amènerait la méthode à une utilisation parfaite ; cependant, ils n’en ont vu qu’environ 90 %. Ils ont identifié et corrigé un bogue de performances dans une bibliothèque PyTorch populaire qui provoquait des communications aller-retour inutiles entre le CPU et le GPU. Une fois ce bogue corrigé, l’équipe a atteint une durée d’exécution de 16,5 secondes par époque avec SALIENT.

« Notre travail a montré, je pense, que le diable se cache dans les détails », déclare Kaler. “Lorsque vous portez une attention particulière aux détails qui ont un impact sur les performances lors de la formation d’un réseau de neurones graphiques, vous pouvez résoudre un grand nombre de problèmes de performances. Avec nos solutions, nous nous sommes retrouvés complètement bloqués par le calcul GPU, ce qui est l’objectif idéal d’un tel système.

La vitesse de SALIENT a été évaluée sur trois ensembles de données standard ogbn-arxiv, ogbn-products et ogbn-papers100M, ainsi que dans des configurations multi-machines, avec différents niveaux de diffusion (quantité de données que le CPU préparerait pour le GPU), et sur plusieurs architectures, dont la plus récente à la pointe de la technologie, GraphSAGE-RI. Dans chaque configuration, SALIENT a surpassé PyTorch Geometric, notamment sur le grand ensemble de données ogbn-papers100M, contenant 100 millions de nœuds et plus d’un milliard d’arêtes. Ici, il était trois fois plus rapide, fonctionnant sur un GPU, que la ligne de base optimisée créée à l’origine pour ce travail; avec 16 GPU, SALIENT était huit fois plus rapide.

Alors que d’autres systèmes avaient des configurations matérielles et expérimentales légèrement différentes, il ne s’agissait donc pas toujours d’une comparaison directe, SALIENT les surpassait toujours. Parmi les systèmes qui ont atteint une précision similaire, les performances représentatives incluent 99 secondes avec un GPU et 32 ​​CPU, et 13 secondes avec 1 536 CPU. En revanche, le temps d’exécution de SALIENT avec un GPU et 20 CPU était de 16,5 secondes et de seulement deux secondes avec 16 GPU et 320 CPU. “Si vous regardez les chiffres de base que les travaux antérieurs rapportent, notre temps d’exécution de 16 GPU (deux secondes) est un ordre de grandeur plus rapide que les autres chiffres qui ont été rapportés précédemment sur cet ensemble de données”, déclare Kaler. Les chercheurs ont attribué leurs améliorations de performances, en partie, à leur approche d’optimisation de leur code pour une seule machine avant de passer à la configuration distribuée. Stathas dit que la leçon ici est que pour votre argent, “il est plus logique d’utiliser le matériel dont vous disposez efficacement, et à son extrême, avant de commencer à passer à plusieurs ordinateurs”, ce qui peut permettre des économies importantes sur les coûts et les émissions de carbone. cela peut venir avec une formation de modèle.

Cette nouvelle capacité permettra désormais aux chercheurs d’aborder et d’approfondir des graphiques de plus en plus gros. Par exemple, le réseau Bitcoin mentionné précédemment contenait 100 000 nœuds ; le système SALIENT peut gérer avec compétence un graphique 1 000 fois (ou trois ordres de grandeur) plus grand.

«À l’avenir, nous envisagerons non seulement d’exécuter ce système de formation de réseau neuronal graphique sur les algorithmes existants que nous avons mis en œuvre pour classer ou prédire les propriétés de chaque nœud, mais nous voulons également effectuer des tâches plus approfondies, telles que identifier des modèles communs dans un graphe (modèles de sous-graphes), [which] peut être en fait intéressant pour indiquer les crimes financiers », explique Chen. «Nous voulons également identifier les nœuds d’un graphique qui sont similaires dans le sens où ils correspondraient peut-être au même mauvais acteur dans un crime financier. Ces tâches nécessiteraient de développer des algorithmes supplémentaires, et peut-être aussi des architectures de réseaux neuronaux.

Cette recherche a été soutenue par le MIT-IBM Watson AI Lab et en partie par le US Air Force Research Laboratory et l’US Air Force Artificial Intelligence Accelerator.

Facebook
Twitter
LinkedIn
Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ADVERTISEMENT