Optimisation des algorithmes ANN avec l'extension vectorielle RISC-V
Cet article examine l'impact de RVV sur la performance des algorithmes ANN pour un traitement des données plus rapide.
― 7 min lire
Table des matières
- L'Importance des Algorithmes ANN
- Architecture RISC-V
- Optimisation des Algorithmes ANN avec RVV
- Algorithmes ANN Populaires
- Algorithme IVFFlat
- Algorithme IVFPQ
- Algorithme HNSW
- Algorithme Annoy
- Vectorisation des Algorithmes
- Évaluation Expérimentale
- Analyse Théorique des Performances
- Conclusion
- Source originale
- Liens de référence
Gérer de gros volumes de données, c'est super important aujourd'hui. L'essor de l'informatique haute performance a créé une demande pour un traitement plus rapide, surtout pour les algorithmes d'apprentissage automatique comme les Voisins les Plus Proches Approximatifs (ANN). Pour accélérer ces algorithmes, il faut les adapter aux conceptions spécifiques des processeurs. RISC-V est un nouveau type d'architecture de processeur qui inclut un jeu d'instructions spécial appelé RVV (RISC-V Vector Extension). Cette fonctionnalité est utile en apprentissage automatique car elle permet de mieux traiter de grands ensembles de données.
Cet article examine à quel point RVV peut être efficace pour les algorithmes ANN populaires. On a modifié les algorithmes pour RISC-V et les a optimisés avec RVV pour résoudre des problèmes de performance clés. En plus, on a créé un modèle pour déterminer les meilleurs réglages pour utiliser RVV avec ces algorithmes.
L'Importance des Algorithmes ANN
Avec la croissance de l'Internet des Objets, une grande puissance de calcul et des algorithmes d'apprentissage automatique sont indispensables. Beaucoup d'entreprises veulent des algorithmes d'intelligence artificielle rapides et efficaces pour améliorer leurs profits et offrir un meilleur service à leurs utilisateurs. Les algorithmes ANN sont parmi les plus recherchés dans ce domaine. Ces algorithmes sont particulièrement utiles dans les systèmes de recommandation, aidant à trouver des éléments similaires à ce que les utilisateurs aiment déjà. Ça booste l'engagement et la satisfaction des utilisateurs avec les produits.
En plus, les algorithmes ANN sont cruciaux dans les moteurs de recherche. Un exemple notable est Elastic Search, qui alimente de grandes plateformes comme GitHub et Netflix. Ces plateformes peuvent gérer des millions de requêtes par seconde, ce qui nécessite une puissance de calcul et de l'énergie considérables. Donc, optimiser ces calculs est vital, surtout pour l'inférence des modèles, qui est cruciale pour l'expérience utilisateur.
Architecture RISC-V
RISC-V a été introduit en 2010 et est constamment amélioré par la communauté. Son principal avantage par rapport à des architectures bien connues comme x86 et ARM, c'est qu'il est open-source. Beaucoup de grands fabricants de puces utilisent maintenant RISC-V, montrant sa flexibilité et sa modularité.
Un aspect important est le jeu d'instructions RVV, qui permet le SIMD (Single Instruction Multiple Data). Ça signifie que le processeur peut gérer de grands ensembles de données plus efficacement, améliorant les performances dans les tâches de calcul et les applications d'intelligence artificielle. La longueur des registres de vecteurs de RVV n'est pas fixe, permettant au logiciel de fonctionner sur diverses configurations matérielles. En plus, le regroupement des registres aide à créer un vecteur plus grand, et l'attribut LMUL définit combien de registres peuvent être combinés, optimisant les performances selon le processeur.
Optimisation des Algorithmes ANN avec RVV
Dans cette étude, on s'est concentré sur l'efficacité de RVV quand il est appliqué à des algorithmes ANN populaires. On a travaillé avec cinq algorithmes ANN différents, les adaptant et les optimisant pour RISC-V avec RVV. On a ensuite fait des expériences pour comparer les performances des algorithmes optimisés à leurs versions originales. On a aussi identifié des problèmes de performance clés dans ces algorithmes et exploré comment les extensions vectorielles peuvent être appliquées pour améliorer l'efficacité sur d'autres architectures.
Algorithmes ANN Populaires
L'algorithme KNN (K-Nearest Neighbors) vise à trouver les vecteurs les plus proches dans un espace de haute dimension. L'algorithme calcule la distance entre des échantillons d'entraînement et chaque vecteur de requête, classant les échantillons d'entraînement selon leur distance, et sélectionnant les k objets les plus proches. Alors que le KNN exact effectue des recherches précises, le KNN approximatif utilise des raccourcis pour accélérer le processus, échangeant un peu de précision pour de la vitesse, ce qui est souvent crucial dans les systèmes très demandés.
Il existe divers algorithmes ANN comme HNSW (Hierarchical Navigable Small World) et d'autres basés sur des structures de graphes et d'arbres. Ces algorithmes tirent parti des connexions locales entre voisins, les rendant flexibles dans la manière dont ils construisent des index de vecteurs. Un autre groupe d'algorithmes tombe sous la catégorie LSH (Locality-Sensitive Hashing), qui segmente l'espace en utilisant des hyperplans aléatoires qui aident à identifier rapidement des éléments similaires.
Algorithme IVFFlat
IVFFlat fait partie de la famille IVF (Inverted File-Based), qui divise l'espace de recherche en cellules non superposées en partant du principe que des objets similaires se trouvent dans la même cellule. L'algorithme crée un fichier inversé qui associe des objets à leurs régions respectives. Il utilise des méthodes de clustering pour regrouper des vecteurs, permettant un processus de recherche rapide à travers le cluster le plus proche.
Algorithme IVFPQ
IVFPQ utilise aussi la structure IVF mais intègre une technique appelée quantification par produits pour réduire la taille des données pour un meilleur stockage et un traitement plus rapide. Cette méthode se concentre sur la compression des données d'entrée tout en permettant une recherche efficace.
Algorithme HNSW
L'algorithme HNSW s'appuie sur le concept des graphes "small world", où deux nœuds ne sont pas directement connectés mais peuvent être atteints en quelques étapes. Il effectue un processus de recherche glouton sur différentes couches du graphe, permettant une découverte efficace des voisins.
Algorithme Annoy
Annoy est un autre algorithme qui utilise des arbres pour partitionner l'espace. Il identifie les points les plus proches en maintenant une file de priorité pendant la recherche, garantissant un temps de réponse rapide tout en limitant le nombre d'objets examinés.
Vectorisation des Algorithmes
Pour effectuer des optimisations, on a sélectionné différentes bibliothèques open-source qui implémentent les algorithmes mentionnés précédemment. Des bibliothèques comme Faiss, Annoy et NMSLIB offrent des implémentations efficaces de divers algorithmes ANN et supportent les instructions SIMD, ce qui permet d'effectuer des opérations en parallèle sur plusieurs données.
Dans notre étude, on a examiné quelles fonctions de ces algorithmes utilisaient des optimisations vectorielles. Les opérations les plus courantes qui bénéficient de la vectorisation incluent les calculs de distance et les procédures de quantification, qui sont essentielles pour accélérer la construction d'index et les processus de recherche.
Évaluation Expérimentale
On a mené des expériences pour mesurer l'efficacité de nos optimisations sur différents ensembles de données. On a utilisé un grand ensemble de données de 500 000 objets avec de nombreuses caractéristiques, et on a réduit la taille de l'ensemble de données pour des raisons de performance. Les expériences se sont concentrées sur la mesure de la façon dont les algorithmes construisaient des indices et effectuaient des recherches vectorielles.
Lors de nos tests, on a fait tourner les algorithmes avec et sans optimisations RVV. Les résultats ont montré que certains algorithmes s'amélioraient considérablement, avec des gains de performance allant jusqu'à 2,58 fois pour certaines tâches.
Analyse Théorique des Performances
Pour déterminer la meilleure configuration pour l'unité vectorielle du CPU, on a créé un modèle simple pour simuler la façon dont différents réglages fonctionneraient sous des conditions spécifiques. Le modèle prend en compte des facteurs comme les taux d'arrivée des données, la bande passante de la mémoire et les temps de traitement pour diverses opérations.
Grâce à cette modélisation, on a pu identifier les réglages optimaux pour les registres vecteurs, les additionneurs et les unités MAC, maximisant la performance des algorithmes ANN étudiés.
Conclusion
Notre recherche met en avant l'efficacité de RVV pour optimiser les algorithmes ANN. En utilisant des instructions SIMD, on a obtenu des améliorations significatives de performance, surtout dans les calculs de distance, qui sont souvent le principal goulet d'étranglement de ces algorithmes. Les résultats suggèrent que d'autres fonctions peuvent également être optimisées, ce qui pourrait mener à des temps de traitement encore plus rapides dans les algorithmes ANN. De plus, le modèle simple d'unité vectorielle que l'on a développé sert d'outil précieux pour analyser la performance des algorithmes ANN sous différentes configurations, aidant à identifier les réglages les plus efficaces pour les futures applications.
Titre: RISC-V RVV efficiency for ANN algorithms
Résumé: Handling vast amounts of data is crucial in today's world. The growth of high-performance computing has created a need for parallelization, particularly in the area of machine learning algorithms such as ANN (Approximate Nearest Neighbors). To improve the speed of these algorithms, it is important to optimize them for specific processor architectures. RISC-V (Reduced Instruction Set Computer Five) is one of the modern processor architectures, which features a vector instruction set called RVV (RISC-V Vector Extension). In machine learning algorithms, vector extensions are widely utilized to improve the processing of voluminous data. This study examines the effectiveness of applying RVV to commonly used ANN algorithms. The algorithms were adapted for RISC-V and optimized using RVV after identifying the primary bottlenecks. Additionally, we developed a theoretical model of a parameterized vector block and identified the best on average configuration that demonstrates the highest theoretical performance of the studied ANN algorithms when the other CPU parameters are fixed.
Auteurs: Konstantin Rumyantsev, Pavel Yakovlev, Andrey Gorshkov, Andrey P. Sokolov
Dernière mise à jour: 2024-07-18 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2407.13326
Source PDF: https://arxiv.org/pdf/2407.13326
Licence: https://creativecommons.org/licenses/by-nc-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.
Liens de référence
- https://cloud.google.com/blog/products/ai-machine-learning/vertex-matching-engine-blazing-fast-and-massively-scalable-nearest-neighbor-search
- https://github.com/spotify/annoy
- https://arxiv.org/abs/1603.09320
- https://www.elastic.co/blog/introducing-approximate-nearest-neighbor-search-in-elasticsearch-8-0
- https://doi.org/10.1145/3282307
- https://riscv.org/members/
- https://www.qualcomm.com/news/onq/2023/09/what-is-risc-v-and-why-were-unlocking-its-potential
- https://doi.org/10.48550/arXiv.2304.10319
- https://doi.org/10.3390/info14020064
- https://riscv.org/blog/2023/05/risc-v-and-the-future-of-machine-learning-computing/
- https://arxiv.org/abs/2101.12631
- https://www.cs.princeton.edu/courses/archive/spring13/cos598C/Gionis.pdf
- https://doi.org/10.1109/ICCV.2003.1238663
- https://doi.org/10.1109/TPAMI.2010.57
- https://doi.org/10.1016/j.is.2013.10.006
- https://github.com/facebookresearch/faiss
- https://github.com/nmslib/nmslib
- https://aws.amazon.com/about-aws/whats-new/2020/03/build-k-nearest-neighbor-similarity-search-engine-with-amazon-elasticsearch-service
- https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary.html
- https://nlp.stanford.edu/pubs/glove.pdf
- https://dl.sipeed.com/shareURL/LICHEE/licheepi4a/01