Améliorer les opérations éparses avec la bibliothèque PopSparse
PopSparse améliore la vitesse des opérations sur les matrices creuses sur les IPUs de Graphcore.
― 7 min lire
Table des matières
L'utilisation de modèles épars dans l'apprentissage profond a suscité beaucoup d'intérêt. Les modèles épars peuvent être utiles parce qu'ils réduisent la quantité de mémoire et de puissance de calcul nécessaires. C'est particulièrement important quand on veut faire fonctionner des réseaux de neurones à grande échelle de manière efficace. Les modèles épars fonctionnent en réduisant le nombre de poids non nuls dans le modèle, ce qui peut réduire les coûts de stockage et de calcul. Cependant, même si c'est facile de voir les avantages en termes de taille, il est plus difficile d'atteindre des améliorations de vitesse pendant le calcul. C'est surtout le cas sur du matériel courant comme les GPU NVIDIA quand on utilise des formats de précision inférieure.
Dans ce document, on vous présente PopSparse, une bibliothèque conçue pour effectuer des opérations éparses rapides sur les IPUs de Graphcore. PopSparse tire parti des caractéristiques uniques des IPUs et de toute structure de bloc présente dans les données. On se concentre sur deux types de sparsité : statique, où le modèle de sparsité est fixe pendant la configuration ; et dynamique, où le modèle peut changer à chaque exécution du modèle. On fournit des résultats montrant que PopSparse peut réaliser des multiplications de matrices plus rapidement que les opérations denses traditionnelles sur les IPUs.
Comprendre la Sparsité
La sparsité dans l'apprentissage profond fait référence à la méthode de réduction des poids dans un modèle. Par exemple, grâce à des techniques comme l'élagage, on peut réduire le nombre de poids dans le modèle, souvent en supprimant ceux qui ont peu d'impact sur les résultats finaux. Ces méthodes peuvent atteindre une réduction de jusqu'à 90-99 % du nombre de poids sans affecter gravement la précision.
Bien que réduire la taille du modèle soit relativement simple, tirer parti de la vitesse est souvent plus compliqué. Les calculs épars peuvent être difficiles à mettre en œuvre efficacement sur du matériel moderne, conçu pour des opérations hautement parallèles. À cause de ça, de nombreuses méthodes de formation efficaces peuvent ne pas donner de gains de vitesse pratiques pendant l'exécution.
Il existe différentes méthodes pour promouvoir la structure dans les modèles épars afin de mieux s'aligner avec les capacités du matériel. Par exemple, des techniques d'élagage structuré peuvent regrouper le modèle de sparsité en blocs, canaux ou neurones. Toutefois, ces méthodes structurées entraînent souvent un coût en termes de performance par rapport aux méthodes non structurées.
Bibliothèque PopSparse
PopSparse est développée pour améliorer la vitesse de Multiplication de matrices éparses sur les IPUs de Graphcore. Les IPUs ont quelques avantages qui aident à accélérer les opérations éparses. D'abord, elles possèdent une grande quantité de mémoire rapide sur puce (SRAM), ce qui améliore les performances pour les opérations nécessitant une communication élevée. De plus, le modèle de traitement fin des IPUs divise les tâches sur de nombreuses unités de calcul indépendantes, leur permettant d'exécuter un grand nombre de tâches en parallèle.
Pour évaluer les performances de PopSparse, on effectue des tests pour les multiplications de matrices éparses statiques et dynamiques. Chaque mode de sparsité a des caractéristiques différentes et se comporte différemment selon la taille et la densité des matrices d'entrée.
Sparsité Statique
Dans la sparsité statique, le modèle de poids non nuls est connu au moment où le programme est configuré. Pendant cette phase de configuration, les poids non nuls sont répartis sur les partitions de la matrice. Comme cette distribution est prédéterminée, il y a peu de besoin d'échange de données pendant le calcul, ce qui mène à une utilisation efficace de l'IPU. Chaque tuile, ou unité de traitement, gère sa part des poids non nuls sans avoir besoin de communiquer largement avec d'autres tuiles.
Sparsité Dynamique
La sparsité dynamique permet plus de flexibilité. Dans ce mode, le nombre total de poids non nuls est connu, mais leur distribution spécifique peut changer à chaque exécution du modèle. Bien que cela ajoute une certaine surcharge computationnelle, cela offre un niveau d'adaptabilité qui peut être utile pour certaines tâches. Cependant, des étapes supplémentaires sont nécessaires pour distribuer et traiter les poids, ce qui peut ralentir la performance par rapport à la sparsité statique.
Évaluation et Résultats
Pour explorer la performance de PopSparse, on compare sa vitesse avec les méthodes traditionnelles de multiplication de matrices denses sur IPU et GPU. Divers paramètres sont testés pour identifier les configurations qui donnent les meilleurs résultats.
Performance des Matrices Denses
En comparant les opérations sur matrices denses, on constate qu'avec des tailles de lot plus grandes, les performances de l'IPU et du GPU sont comparables dans des formats de précision inférieure. Cependant, pour de plus petites tailles de lot, l'IPU a tendance à mieux performer. La flexibilité offerte par la SRAM lui permet de gérer le mouvement des données plus efficacement que les GPU, qui peuvent rencontrer des difficultés dans des conditions similaires.
Performance des Matrices Éparses
La performance des configurations de sparsité statique et dynamique sur l'IPU montre des résultats prometteurs. En général, la sparsité statique surpasse la sparsité dynamique. Cela dit, les deux modes d'opérations éparses offrent de meilleures performances par rapport aux opérations denses, surtout quand les matrices d'entrée sont grandes avec des tailles de blocs significatives.
Nos expériences révèlent que les implémentations éparses sur l'IPU peuvent surpasser les opérations denses, surtout sous des conditions spécifiques : faible densité de poids non nuls, plus grandes tailles de blocs et plus grandes tailles de fonctionnalités. Cela fait de PopSparse une option favorable pour de nombreux scénarios d'apprentissage profond.
Comparaison avec le GPU
Quand on regarde les performances du GPU en parallèle avec les résultats de l'IPU, on voit que les GPUs peuvent avoir du mal avec des densités faibles de poids non nuls. Bien qu'ils se débrouillent bien dans l'ensemble, leur efficacité peut diminuer en comparaison avec les opérations optimisées de PopSparse sur l'IPU.
Conclusion
PopSparse booste efficacement la performance de la multiplication de matrices éparses sur les IPUs, offrant un avantage compétitif par rapport aux méthodes denses traditionnelles et aux implementations sur GPU. On a établi que la sparsité statique peut conduire à des améliorations de vitesse significatives tout en gérant une charge plus faible que la sparsité dynamique. Ce travail met en lumière le potentiel de la sparsité structurée comme méthode pour améliorer la vitesse et l'efficacité dans les opérations des réseaux de neurones.
L'exploration de la sparsité de blocs et son application dans les modèles d'apprentissage profond promet de favoriser la recherche et le développement futurs dans ce domaine. En montrant comment la sparsité de blocs statiques peut accélérer l'inférence des réseaux de neurones, on espère encourager une investigation plus poussée sur des algorithmes d'élagage épars efficaces et des applications dans l'apprentissage automatique.
Travaux Futurs
En regardant vers l'avenir, on vise à montrer comment la sparsité de blocs statiques peut améliorer efficacement l'inférence de grands modèles sur les IPUs. Cela impliquera d'atteindre une grande efficacité mémoire tout en maintenant la performance computationnelle. Dans l'ensemble, l'utilisation de la sparsité structurée pourrait devenir une partie cruciale de l'amélioration de l'efficacité des modèles d'apprentissage profond à l'avenir.
Titre: PopSparse: Accelerated block sparse matrix multiplication on IPU
Résumé: Reducing the computational cost of running large scale neural networks using sparsity has attracted great attention in the deep learning community. While much success has been achieved in reducing FLOP and parameter counts while maintaining acceptable task performance, achieving actual speed improvements has typically been much more difficult, particularly on general purpose accelerators (GPAs) such as NVIDIA GPUs using low precision number formats. In this work we introduce PopSparse, a library that enables fast sparse operations on Graphcore IPUs by leveraging both the unique hardware characteristics of IPUs as well as any block structure defined in the data. We target two different types of sparsity: static, where the sparsity pattern is fixed at compile-time; and dynamic, where it can change each time the model is run. We present benchmark results for matrix multiplication for both of these modes on IPU with a range of block sizes, matrix sizes and densities. Results indicate that the PopSparse implementations are faster than dense matrix multiplications on IPU at a range of sparsity levels with large matrix size and block size. Furthermore, static sparsity in general outperforms dynamic sparsity. While previous work on GPAs has shown speedups only for very high sparsity (typically 99\% and above), the present work demonstrates that our static sparse implementation outperforms equivalent dense calculations in FP16 at lower sparsity (around 90%). IPU code is available to view and run at ipu.dev/sparsity-benchmarks, GPU code will be made available shortly.
Auteurs: Zhiyi Li, Douglas Orr, Valeriu Ohan, Godfrey Da costa, Tom Murray, Adam Sanders, Deniz Beker, Dominic Masters
Dernière mise à jour: 2023-04-05 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2303.16999
Source PDF: https://arxiv.org/pdf/2303.16999
Licence: https://creativecommons.org/licenses/by-sa/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.