1 points par GN⁺ 2025-05-06 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2025-05-06
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

    • Le traitement à l’intérieur de la DRAM est une vieille idée, et dans les années 90 il existait déjà plusieurs articles qui cherchaient à transformer les banques DRAM en machines SIMD
      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 »

    • Un jour, je compte mettre comme contributeurs tout notre département, le personnel de la cafétéria et même les gens qui étaient dans le parc à 14 h
    • Ça ressemble à une erreur de mise en forme
      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

    • Ce genre de comportement existe depuis les premières DRAM à adressage ligne/colonne multiplexé
      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

    • Oui, et chose étonnante, ils y arrivent même avec de la RAM standard en violant délibérément les paramètres de temporisation
      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
    • Faire tourner de l’inférence LLM sur n’importe quoi va probablement devenir le prochain « ça fait tourner Doom »
  • 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

    • Dans le trading haute fréquence à faible latence, cela arrive notamment avec les cartes réseau
      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
    • Ce genre de choses relève généralement des tests d’interopérabilité, mais on l’atténue le plus souvent par firmware plutôt que dans le matériel
      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.
    • Le comportement indéfini en C/C++ fait l’objet de discussions depuis très longtemps
      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 ?

    • Une matrice est une façon de représenter une fonction linéaire. Par exemple, une fonction compatible avec l’addition et la multiplication par un scalaire
      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 quaternions n’ont qu’une dimension 4 fixe
      Les réseaux de neurones ont besoin de beaucoup plus de dimensions
    • Tu sembles mélanger plusieurs concepts. Les quaternions relèvent de la même catégorie que les nombres complexes
      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
    • À ma connaissance, le principal intérêt des quaternions en informatique graphique est de représenter les rotations d’une manière qui évite le gimbal lock
      À 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...

    • Je pense qu’il existe très probablement des travaux encore plus anciens
      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 ?

  • 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 :-)

    • C’est vrai, mais l’effet est limité
      Pour les détails, il suffit de lire l’article ou de chercher “temperature”