Multiplication matrice-vecteur implémentée dans de la DRAM standard pour les LLM low-bit
(arxiv.org)- MVDRAM est un système qui accélère les opérations GeMV pour l’inférence de LLM low-bit en utilisant de la DRAM non modifiée
- Il exploite la DRAM comme moteur GeMV afin d’offrir un débit élevé
- Il élimine les coûts de pré-arrangement des entrées et de basculement des bits de sortie des approches PUD existantes
- Les résultats expérimentaux montrent des performances supérieures aux implémentations sur processeur pour les LLM low-bit
- Il ouvre de nouvelles perspectives pour le matériel IA
MVDRAM : accélération des LLM low-bit à partir de DRAM non modifiée
- Les opérations GeMV restent un goulot d’étranglement majeur en matière de latence pour l’inférence des grands modèles de langage (LLM)
- Le Processing-Using-DRAM (PUD) présente le potentiel de réutiliser la DRAM comme moteur GeMV
- Toutefois, l’application du PUD au pipeline d’inférence des LLM entraîne une surcharge importante
L’approche innovante de MVDRAM
- MVDRAM coordonne le processeur et la DRAM en exploitant les motifs de partage des données et la linéarité mathématique
- Il accélère les opérations GeMV en supprimant les coûts des approches PUD existantes
Résultats expérimentaux
- Dans des expériences utilisant quatre modules DRAM DDR4, MVDRAM surpasse les implémentations sur processeur pour les LLM low-bit (4 bits et moins)
- Il atteint jusqu’à 7,29x d’accélération et 30,5x d’efficacité énergétique
Amélioration globale de l’inférence des LLM
- Sur des modèles low-bit quantifiés en 2 bits et 4 bits, il montre respectivement des gains de débit de 2,18x et 1,31x
- L’efficacité énergétique progresse également de 3,04x et 2,35x respectivement
Nouvelles possibilités pour le matériel IA
- MVDRAM démontre qu’il est possible d’exploiter de la DRAM standard comme accélérateur pour LLM
- Il pourrait ouvrir de nouveaux horizons pour le matériel IA
1 commentaires
Avis sur Hacker News
Comme ressources de contexte, on trouve l’une des premières propositions de in-DRAM compute https://users.ece.cmu.edu/~omutlu/pub/in-DRAM-bulk-AND-OR-ie..., la première démonstration avec des composants du commerce https://parallel.princeton.edu/papers/micro19-gao.pdf, l’outil d’implémentation DRAM Bender https://github.com/CMU-SAFARI/DRAM-Bender, ainsi qu’un article de synthèse récent sur le traitement in-DRAM https://arxiv.org/abs/2412.19275
Ce n’était pas aussi astucieux ni aussi avancé que l’idée actuelle, mais au fond ces articles ressemblent à une version moderne d’un concept ancien
Ce qui saute aux yeux, c’est la longueur absurde des listes d’auteurs des références 1 et 3
Je m’attendais aussi à y trouver ce billet de 2016 https://news.ycombinator.com/item?id=12469270, et celui de 2019 https://news.ycombinator.com/item?id=22712811 y apparaît effectivement
Bien sûr, ce genre de fonctionnement hors spécification de la DRAM, en particulier sa capacité de copie, est aussi lié à un bug tristement célèbre https://news.ycombinator.com/item?id=5314959
On dirait que plusieurs personnes ont observé ce phénomène indépendamment et se sont dit que « ça pourrait être un comportement utile »
Quand la liste des auteurs est aussi énorme, on met généralement seulement le premier nom, puis « et al. » pour le reste
« Émettre des commandes DRAM qui violent délibérément les paramètres de temporisation spécifiés par le fabricant afin d’obtenir jusqu’à 65 536 opérations sur bits en parallèle », ça donne l’impression de mettre une bonne claque au blob binaire de training DRAM
C’est vraiment bizarre au point de retourner le cerveau, et en même temps brillamment créatif
Parfois, fouiller jusqu’aux détails les plus bas niveau est récompensé. Excellent
La Mostek MK4096 de 1973 en était probablement capable aussi ; il aura donc fallu environ un demi-siècle pour que quelqu’un s’en rende compte
Donc ils font des opérations matricielles directement dans la DRAM ? C’est dingue, mais fascinant
Le traitement à l’aide de la DRAM (PUD) exploite les caractéristiques analogiques propres à la DRAM pour permettre des calculs bit-série massivement parallèles à l’intérieur des matrices mémoire
Des travaux antérieurs ont montré qu’une DRAM commerciale standard peut aussi fournir des fonctions PUD sans modification matérielle, en violant délibérément ses paramètres de temporisation
Les opérations clés sont RowCopy et majority-of-X (MAJX). RowCopy déplace les données vers une autre ligne dans le même sous-réseau en émettant une commande ACT juste après PRE, avant la fin de la précharge des bitlines ; comme cela affecte simultanément toutes les cellules d’une ligne, c’est environ 100 fois plus rapide qu’un déplacement de données arbitré par le processeur
MAJX effectue un vote majoritaire en activant simultanément X cellules qui partagent la même bitline ; sur de la DRAM commerciale, cela s’implémente en émettant rapidement, sans délai, ACT, PRE, puis ACT à la suite. Cela permet d’activer simultanément de 2 à 32 lignes et devient l’unité de calcul de base du PUD, qui exploite le parallélisme d’un sous-réseau comptant 65 536 colonnes
Dans le monde du hardware aussi, y a-t-il un risque à exploiter un bug que le fabricant pourrait corriger un jour ?
En logiciel, c’est une mauvaise idée de s’appuyer sur un bug de plateforme pour créer une fonctionnalité ou corriger un autre bug
Quinze ans plus tard, ce bug peut être corrigé, et le système explose sans que personne ne comprenne pourquoi
Il me semble qu’il y a eu récemment une discussion similaire, probablement à propos du comportement indéfini d’une fonction C
Certaines cartes réseau ont un bug, ou une combinaison de fonctionnalités qui se comporte de manière intéressante et donne un avantage à une société de trading
Ces bugs ou fonctionnalités peuvent disparaître parce qu’on corrige le bug, ou parce qu’on les juge inutiles pour un marché plus large. C’est pourquoi des entreprises essaient parfois de racheter tout le stock restant d’un modèle précis
Dans le pire des cas, il faut que ça fonctionne même avec du matériel d’un fournisseur connu qui a disparu il y a 15 ans. De gros clients utilisent cet équipement depuis 15 ans sans problème, et si ça ne marche plus quand ils branchent votre nouvel équipement, ils considéreront que c’est votre matériel qui est en cause
C’est particulièrement important dans les équipements télécoms, qui intègrent toutes sortes de traitements spéciaux pour des fournisseurs qui n’ont pas respecté les spécifications. Et il faut conserver ces traitements spéciaux dans le firmware pour ne pas casser les systèmes des autres
Imaginez du vieux matériel, du matériel d’entreprises disparues, et du matériel de concurrents actuels remplissant un mur entier, pendant que des bras robotisés branchent des câbles : cela donne une idée de ce à quoi ressemblent certains laboratoires de validation matérielle
Les firmwares des fabricants de cartes mères sont eux aussi remplis de traitements spéciaux pour certains CPU, chipsets, etc.
Ses effets en combinaison avec les compilateurs optimisants semblent être devenus connus d’un public plus large vers 2010, peut-être 2013, et cela fait maintenant plus de 12 ans
Cet article ne dit pas vraiment qu’il faut dépendre d’un bug ; il cherche plutôt à montrer ce qui pourrait être possible avec la DRAM, dans l’espoir que ces fonctionnalités soient standardisées
La multiplication matrice-vecteur générale (GeMV), vraiment ? Je ne suis pas spécialement matheux
Dans un cours de maths 3D, quand on a étudié les quaternions, on a brièvement abordé l’histoire des calculs matriciels dans le développement graphique. J’ai raté ce cours la première fois, donc je ne suis vraiment pas un profil très maths
Si j’ai bien compris, les quaternions sont presque aussi précis que les matrices, avec une complexité de calcul bien plus faible, ce qui les a rendus populaires
Est-ce qu’il y a eu des tentatives de créer des LLM avec des quaternions au lieu de matrices ? Ou bien l’optimisation par quaternions est-elle surtout utile dans le graphisme temps réel ?
Un certain sous-ensemble d’entre elles peut servir à décrire des rotations dans l’espace 3D, et les quaternions peuvent, même si c’est discutable, mieux le faire
Mais on ne peut pas décrire une fonction linéaire arbitraire avec des quaternions, donc ça ne semble pas adapté aux LLM
Les réseaux de neurones ont besoin de beaucoup plus de dimensions
Ils peuvent être représentés par des matrices, et il existe probablement des usages intéressants, comme les QDNN, pour des matrices dont les éléments sont des quaternions plutôt que des réels
D’après mon expérience, dans les grandes architectures comme les LLM, à moins qu’il n’y ait un vrai avantage à utiliser un type scalaire plus sophistiqué comme en physique ou en graphisme 3D, les formes plus simples ont plus de chances de réussir
À part ça, ce type de représentation des rotations ne passe pas très bien à l’échelle quand on ajoute des dimensions
Les nombres complexes sont une représentation complexe de l’espace 2D, les quaternions une représentation complexe de l’espace 3D, et pour passer à la 4D il faut des octonions à 8 éléments
Le fait de ne pas citer les documents originaux de 1997 sur l’Intelligent RAM (IRAM) me paraît un peu peu scientifique
https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=iram...
Cela dit, IRAM ressemble davantage à du calcul près de la mémoire, où l’on ajoute une ALU à la puce mémoire, tandis que le calcul en mémoire utilise le réseau mémoire lui-même
Pour être juste, avant l’arrivée du deep learning avec ses longueurs de vecteurs énormes, le calcul en mémoire était bien moins attractif. C’est sans doute pour cela que les gens ont cherché à concevoir des approches offrant un contrôle plus fin des opérations
Peut-on s’attendre à ce que la multiplication matricielle, et peut-être d’autres opérations, migrent des CPU traditionnels vers la DRAM, avec même un support matériel dédié ?
Ce déplacement du lieu de traitement donnerait-il un avantage à des entreprises comme Samsung ? Où cela placerait-il des entreprises comme NVIDIA ?
https://www.patentlyapple.com/2024/12/apple-plans-to-transit...
Hack intéressant. Je n’ai pas lu l’article, mais ce genre d’opération me paraît thermiquement instable
Les résultats d’inférence d’un LLM pourraient donc varier selon la température ambiante :-)
Pour les détails, il suffit de lire l’article ou de chercher “temperature”