LLM accélérés matériellement : étude complète et comparaison
- Les LLM se sont imposés comme des outils puissants pour les tâches de traitement du langage naturel, révolutionnant le domaine par leur capacité à comprendre et générer du texte de type humain
- Cet article propose une étude complète de plusieurs efforts de recherche sur l’accélération des réseaux Transformer pour les grands modèles de langage à l’aide d’accélérateurs matériels
Framework et comparaison
- Il présente le framework proposé et réalise des comparaisons qualitatives et quantitatives sur les technologies, les plateformes de traitement (FPGA, ASIC, In-Memory, GPU), les gains de vitesse, l’efficacité énergétique, les performances (GOPs) et l’efficacité énergétique (GOPs/W)
- Le principal défi est que chaque schéma proposé est implémenté avec une technologie de fabrication différente, ce qui rend une comparaison équitable difficile
- La contribution majeure de cet article est d’estimer les résultats de performance et d’efficacité énergétique dans une même technologie afin de permettre une comparaison équitable
Expériences et résultats
- En implémentant certaines parties des LLM sur plusieurs puces FPGA, l’étude estime les résultats dans une même technologie de fabrication et compare équitablement les performances
Le résumé de GN⁺
- Cet article fournit une étude complète de l’accélération matérielle des grands modèles de langage (LLM)
- Il compare les performances et l’efficacité énergétique sur différentes plateformes de traitement afin de permettre une comparaison équitable
- Il estime, via des expériences sur des puces FPGA, les résultats dans une même technologie
- Il peut être utile aux personnes intéressées par l’amélioration des performances des LLM dans le domaine du traitement du langage naturel
- Parmi les autres projets aux fonctions similaires figurent les accélérateurs GPU de NVIDIA et les TPU de Google
1 commentaires
Commentaires Hacker News
Cet article manque de profondeur dans la partie contexte ; pour ajouter un peu de perspective, on observe depuis le début des années 1990 que les performances de calcul CPU (FLOPs) progressent plus vite que la bande passante mémoire, et en 1995 William Wulf et Sally Mckee ont prédit que cet écart mènerait à un mur de la mémoire où la plupart des calculs seraient limités non par les opérations arithmétiques mais par l’accès aux données
Au cours des 20 dernières années, le maximum de FLOPS des serveurs a triplé tous les deux ans, tandis que la bande passante DRAM et celle des interconnexions n’ont augmenté que d’environ 1,6x et 1,4x respectivement
Résultat, dans l’entraînement et l’inférence des LLM, le goulot d’étranglement se déplace de plus en plus vers la bande passante mémoire, et dans les modèles décodeurs Transformer autorégressifs cela peut même devenir le facteur dominant
Cette tendance crée une demande pour des technologies comme le Compute-in-memory (CIM) et le processing-in-memory (PIM). Ce sont des matériels qui calculent directement sur les données en mémoire sans d’abord les déplacer dans les registres CPU, ce qui peut réduire la latence et la consommation électrique, et potentiellement contourner le mur de la mémoire
L’article extrapole ASIC et FPGA vers une référence en 16 nm au moyen d’un ajustement polynomial afin de comparer des matériels issus de procédés de fabrication différents : « En nous appuyant sur “Scaling equations for the accurate prediction of CMOS device performance from 180 nm to 7nm” d’Aaron Stillmaker et B.Baas, nous avons extrapolé les performances et l’efficacité énergétique en technologie 16 nm pour permettre une comparaison équitable »
Mais pour le CIM/PIM, il n’y a pas d’extrapolation : « Les performances des accélérateurs in-memory ne reposant pas uniquement sur la technologie de procédé, nous n’avons réalisé l’extrapolation que pour les accélérateurs FPGA et ASIC, pour lesquels la technologie de procédé influe fortement sur les performances du système. » À première vue, cela semble être un choix étrange, et quelqu’un pourrait sans doute mieux expliquer cette décision
Lectures complémentaires : https://arxiv.org/abs/2403.14123, https://en.m.wikipedia.org/wiki/In-memory_processing, http://vcl.ece.ucdavis.edu/pubs/2017.02.VLSIintegration.Tech...
Cela dit, j’aime bien l’idée de produits bon marché sous forme de modules RAM. On peut imaginer en enficher plein sur une carte 1U et les relier par une interconnexion rapide, ou même remplir entièrement une carte PCI avec ce genre de modules
Le PCI-e V4 a été tellement vite dépassé qu’on a l’impression qu’il n’a vécu que deux ans, et NVMeOF a continué à bien évoluer avec les performances des fabrics. Le H100 DGX actuel dispose d’une interconnexion à 400 GB/s
« La croissance explosive des modèles d’IA est limitée par l’élargissement de l’écart entre performances de calcul et bande passante mémoire. Les modèles de prochaine génération comme GPT-5 devraient atteindre une échelle inédite de 3 à 5 billions de paramètres, mais le goulot d’étranglement technique de la bande passante mémoire devient un obstacle majeur à l’exploitation complète de leur potentiel »
https://www.lycee.ai/blog/2024-09-04-samsung-memory-bottlene...
J’ai toujours aimé les réseaux systoliques, et après avoir passé en revue diverses options pendant des décennies, je pense qu’une grille cartésienne de cellules est la meilleure solution
Chaque cellule reçoit 4 bits d’entrée, un depuis chacun de ses voisins, et possède 4 bits de sortie, un vers chacun de ses voisins. Au centre se trouve un registre à décalage de 64 bits dans une longue scan chain, dont la sortie alimente 4 multiplexeurs 16:1 et un latch de 4 bits
En utilisant la magie de la coloration de graphe pour cadencer toutes les cellules selon un motif en damier, les données peuvent circuler dans n’importe quelle direction sans biais directionnel ni conditions de course. Chaque entrée de cellule devient stable
Cette approche offre la flexibilité d’un FPGA sans avoir à se soucier des problèmes de timing, des conditions de course ou des glitches. Les liaisons sont toutes courtes, donc tout est local, rapide et sobre en énergie
En contrepartie, ce n’est ni très efficace en portes ni optimal pour le plus court chemin logique. Toutes les opérations unitaires se produisent essentiellement en parallèle, et tout calcul est pipeliné
C’est une idée que j’ai depuis environ 1982, et j’aimerais que quelqu’un la reprenne et en fasse quelque chose de sérieux. Je l’appelle BitGrid
Document connexe : https://arxiv.org/pdf/2406.08413
Memory Is All You Need: An Overview of Compute-in-Memory Architectures for Accelerating Large Language Model Inference
J’aimerais voir un LLM tourner dans WebGL, où tout est texture. Visualiser les différences d’architecture serait assez amusant
Le goulot d’étranglement actuel, c’est le mouvement de la mémoire, et c’est pour ça que la HBM est chère. Les designs de Nvidia sont vraiment optimisés autour de la mémoire, qui est le vrai goulot d’étranglement, à la fois au niveau de la puce et du système
En pratique, on n’en voit pas beaucoup
Une architecture hybride FPGA + ASIC + in-memory pourrait-elle jouer un rôle en matière d’évolutivité et de flexibilité ? Le FPGA apporte la flexibilité, l’ASIC les performances, et l’in-memory l’efficacité énergétique ; on peut donc se demander si une approche hybride intégrant ces trois éléments pourrait encore améliorer les performances des LLM
L’in-memory semble pertinent non seulement du point de vue des performances, mais aussi en termes de direction globale. Concevoir un ASIC ou programmer un FPGA pour un modèle qui, même avec un peu de chance, risque d’être obsolète quelques mois plus tard n’a pas beaucoup de sens
Il y a eu un article affirmant faire tourner un LLM avec la puissance d’une simple ampoule
https://arxiv.org/abs/2406.02528
https://news.ucsc.edu/2024/06/matmul-free-llm.html
L’idée centrale repose sur deux techniques pour éviter les multiplications matricielles. D’abord, tous les nombres de la matrice sont forcés à prendre uniquement trois valeurs ternaires, -1, 0 et +1, ce qui ramène les multiplications à des additions. Ensuite, au lieu de multiplier chaque élément individuellement, les matrices sont superposées puis seules les opérations importantes sont exécutées
Les chercheurs disent avoir introduit un calcul basé sur le temps dans l’entraînement du modèle afin de préserver les performances du réseau neuronal ; cela donnerait au réseau une forme de « mémoire » des informations importantes qu’il traite, ce qui améliorerait les performances
Sur un GPU standard, l’utilisation mémoire aurait été réduite à environ un dixième et la vitesse aurait augmenté d’environ 25 %, ce qui pourrait permettre d’exécuter l’algorithme à pleine capacité même sur des appareils à faible mémoire comme les smartphones. Un prototype FPGA construit en trois semaines aurait dépassé un débit lisible par un humain avec seulement 13 W, alors qu’un GPU aurait nécessité environ 700 W ; le matériel sur mesure aurait donc été plus de 50 fois plus efficace qu’un GPU
Je ne suis pas sûr de ce que signifie ici exactement in-memory : s’agit-il d’un matériel spécial combinant CPU et RAM ?
En citant un ancien article sur les accélérateurs qui montrait une amélioration de 19x par rapport à DRAM + GPU : « Comme les opérations MAC représentent la part dominante du temps d’exécution dans la plupart des charges de travail de machine learning, nous proposons la multiplication à l’intérieur du sous-tableau et l’accumulation à l’intérieur de la banque. La multiplication est traitée selon une approche par colonne effectuant des opérations AND et des additions, avec moins de 1 % de surcoût en surface »
https://arxiv.org/pdf/2105.03736
Y a-t-il un moyen de consulter le contenu d’Arxiv de façon un peu plus lisible ?
Chaque fois que j’arrive sur ce site, je me demande s’il y a vraiment une interface, je me perds, et au final je repars souvent sans même atteindre le contenu
Pour un article donné, c’est probablement la meilleure méthode, et il existe aussi quelques frontends Arxiv comme https://arxiv-sanity-lite.com/