1 Punkte von GN⁺ 2025-05-06 | 1 Kommentare | Auf WhatsApp teilen
  • MVDRAM ist ein System, das GeMV-Operationen für die Inferenz von Low-Bit-LLMs mithilfe von unverändertem DRAM beschleunigt
  • Es nutzt DRAM als GeMV-Engine und bietet dadurch einen hohen Durchsatz
  • Es eliminiert die Kosten für die Voranordnung der Eingaben und die Umschaltung der Ausgabebits bei bestehenden PUD-Ansätzen
  • Experimente zeigen, dass es bei Low-Bit-LLMs eine bessere Leistung als prozessorbasierte Implementierungen erzielt
  • Es zeigt neue Möglichkeiten für AI-Hardware auf

MVDRAM: Beschleunigung von Low-Bit-LLMs mit unverändertem DRAM

  • GeMV-Operationen bleiben ein wesentlicher Latenz-Engpass bei der Inferenz großer Sprachmodelle (LLMs)
  • Processing-Using-DRAM (PUD) hat das Potenzial, DRAM als GeMV-Engine wiederzuverwenden
  • Die Anwendung von PUD auf die LLM-Inferenzpipeline verursacht jedoch erheblichen Overhead

Der innovative Ansatz von MVDRAM

  • MVDRAM koordiniert Prozessor und DRAM unter Nutzung von Datenfreigabemustern und mathematischer Linearität
  • Dadurch werden die Kosten bestehender PUD-Ansätze beseitigt und GeMV-Operationen beschleunigt

Experimentelle Ergebnisse

  • In Experimenten mit vier DDR4-DRAM-Modulen zeigte MVDRAM bei Low-Bit-LLMs (4 Bit oder weniger) eine bessere Leistung als prozessorbasierte Implementierungen
  • Es erreichte bis zu 7,29-fache Beschleunigung und 30,5-fache Energieeffizienz

Umfassende Verbesserungen bei der LLM-Inferenz

  • Bei quantisierten Low-Bit-Modellen mit 2 Bit bzw. 4 Bit wurde der Durchsatz um das 2,18-Fache bzw. 1,31-Fache verbessert
  • Auch die Energieeffizienz stieg jeweils um das 3,04-Fache bzw. 2,35-Fache

Neue Möglichkeiten für AI-Hardware

  • MVDRAM belegt das Potenzial, Standard-DRAM als LLM-Beschleuniger zu nutzen
  • Es besitzt das Potenzial, neue Horizonte für AI-Hardware zu eröffnen

1 Kommentare

 
GN⁺ 2025-05-06
Hacker-News-Kommentare
  • Als Hintergrundmaterial gibt es eine der frühen Ideen zu in-DRAM compute: https://users.ece.cmu.edu/~omutlu/pub/in-DRAM-bulk-AND-OR-ie..., die erste Demonstration mit Standardbauteilen https://parallel.princeton.edu/papers/micro19-gao.pdf, das Implementierungswerkzeug DRAM Bender https://github.com/CMU-SAFARI/DRAM-Bender sowie ein aktueller Übersichtsartikel zu Processing-in-DRAM https://arxiv.org/abs/2412.19275

    • Verarbeitung innerhalb von DRAM ist eine alte Idee; schon in den 90ern gab es mehrere Arbeiten, die DRAM-Bänke in SIMD-Maschinen verwandeln wollten
      Das war nicht so clever oder ausgereift wie die heutige Idee, aber letztlich sind diese Papers eher die moderne Version eines alten Ansatzes
  • Auffällig ist, wie absurd lang die Autorenlisten der Referenzen 1 und 3 sind
    Ich hätte erwartet, dass auch der Beitrag von 2016 https://news.ycombinator.com/item?id=12469270 dabei ist; der Beitrag von 2019 https://news.ycombinator.com/item?id=22712811 ist tatsächlich zu sehen
    Natürlich hängt dieses Verhalten außerhalb der Spezifikation von DRAM, insbesondere die Kopierfähigkeit, auch mit dem berüchtigten Bug https://news.ycombinator.com/item?id=5314959 zusammen
    Offenbar haben mehrere Leute unabhängig voneinander dieses Phänomen gesehen und gedacht: „Vielleicht ist das ja ein nützliches Verhalten“

    • Irgendwann werde ich mal unsere ganze Abteilung, die Mitarbeiter im Deli und alle, die um 14 Uhr im Park waren, als Beitragende aufführen
    • Das sieht nach einem Formatierungsfehler aus
      Bei derart riesigen Autorenlisten schreibt man normalerweise nur den ersten Namen und ersetzt den Rest durch „et al.“
  • „Durch DRAM-Befehle, die die vom Hersteller vorgegebenen Timing-Parameter absichtlich verletzen, bis zu 65.536 Bitoperationen parallel erhalten“ – das fühlt sich an, als würde man einem Binary Blob fürs DRAM-Training eins auswischen

  • Das ist wirklich so seltsam, dass es einem den Kopf verdreht, und zugleich wunderbar kreativ
    Manchmal wird es belohnt, bis ganz nach unten in die Details zu graben. Großartig

    • Dieses Verhalten gibt es schon seit den frühen DRAMs mit multiplexierten Zeilen-/Spaltenadressen
      Der Mostek MK4096 von 1973 hätte das vermutlich auch gekonnt; es hat also etwa ein halbes Jahrhundert gedauert, bis es jemand herausgefunden hat
  • Heißt das, sie machen Matrixoperationen direkt im DRAM? Verrückt, aber interessant

    • Genau, und erstaunlicherweise schaffen sie das sogar mit Standard-RAM, indem sie Timing-Parameter absichtlich verletzen
      Processing Using DRAM (PUD) nutzt die inhärenten analogen Verhaltenseigenschaften von DRAM, um hochgradig parallele bit-serielle Berechnungen innerhalb des Speicherarrays zu ermöglichen
      Frühere Arbeiten haben gezeigt, dass sich PUD-Funktionen auch mit handelsüblichem Standard-DRAM ohne Hardwareänderungen erreichen lassen, wenn man Timing-Parameter absichtlich verletzt
      Die zentralen Operationen sind RowCopy und majority-of-X (MAJX). RowCopy überträgt Daten in eine andere Zeile desselben Subarrays, indem direkt nach PRE ein ACT-Befehl ausgegeben wird, bevor das Bitline-Precharge abgeschlossen ist; da dies alle Zellen einer Zeile gleichzeitig betrifft, ist es etwa 100-mal schneller als prozessorvermittelte Datenbewegung
      MAJX führt eine Mehrheitsentscheidung aus, indem X Zellen, die dieselbe Bitline teilen, gleichzeitig aktiviert werden; in kommerziellem DRAM wird das durch eine schnelle Folge von ACT, PRE, ACT ohne Verzögerung umgesetzt. Dadurch können 2 bis 32 Zeilen gleichzeitig aktiviert werden, was die Subarray-Parallelität mit 65.536 Spalten nutzt und zur grundlegenden Recheneinheit von PUD wird
    • LLM-Inferenz auf allem Möglichen laufen zu lassen, wird wohl das nächste „Doom läuft darauf“
  • Gibt es in der Hardwarewelt auch das Risiko, Bugs auszunutzen, die ein Hersteller eines Tages beheben könnte?
    In Software ist es eine schlechte Idee, sich für eine Funktion oder zum Beheben eines anderen Bugs auf einen Plattform-Bug zu verlassen
    15 Jahre später könnte dieser Bug behoben werden, dann explodiert das System und niemand weiß warum
    Ich glaube, kürzlich gab es eine ähnliche Diskussion, vermutlich zu undefiniertem Verhalten in irgendeiner C-Funktion

    • Im Low-Latency-Hochfrequenzhandel passiert so etwas besonders bei Netzwerkkarten
      Eine bestimmte Netzwerkkarte kann einen Bug haben oder eine interessante Kombination von Funktionen, die einer Trading-Firma einen Vorteil verschafft
      Solche Bugs oder Funktionen verschwinden manchmal, weil Bugs behoben werden oder weil man sie in einem größeren Markt nicht für nötig hält. Deshalb versuchen Firmen dann, den gesamten Restbestand eines bestimmten Modells aufzukaufen
    • So etwas fällt normalerweise in den Bereich Interoperabilitätstests, wird aber meist per Firmware und nicht per Hardware entschärft
      Im schlimmsten Fall muss es sogar mit Hardware eines bekannten Anbieters funktionieren, der vor 15 Jahren verschwunden ist. Große Kunden haben diese Geräte 15 Jahre lang problemlos genutzt, und wenn es beim Einstecken neuer Geräte nicht funktioniert, werden sie Ihre Hardware dafür verantwortlich machen
      Bei Telekommunikationsausrüstung ist das besonders wichtig, weshalb es allerlei Sonderbehandlungen für Anbieter gibt, die sich nicht an die Spezifikation gehalten haben. Und diese Sonderbehandlungen müssen in der Firmware bleiben, damit man nicht die Systeme anderer kaputtmacht
      Wenn man sich vorstellt, dass alte Geräte, Geräte längst verschwundener Firmen und aktuelle Konkurrenzprodukte ganze Wände füllen und Roboterarme Kabel einstecken, bekommt man ein Gefühl dafür, wie manche Hardware-Validierungslabore aussehen
      Auch die Firmware von Mainboard-Herstellern ist voll von Sonderbehandlungen für bestimmte CPUs, Chipsätze usw.
    • Undefiniertes Verhalten in C/C++ wird schon seit sehr langer Zeit diskutiert
      Die Auswirkungen in Kombination mit optimierenden Compilern wurden einem breiteren Publikum wohl um 2010, vielleicht um 2013, bekannt; das ist inzwischen über 12 Jahre her
      In diesem Paper geht es weniger darum, sich auf Bugs zu verlassen, sondern eher darum zu zeigen, was mit DRAM möglich ist, und zu hoffen, dass diese Funktionen standardisiert werden
  • Allgemeine Matrix-Vektor-Multiplikation (GeMV) – ich bin nicht gerade gut in Mathe
    In einem 3D-Mathekurs haben wir beim Thema Quaternionen kurz die Geschichte der Matrixberechnungen in der Grafikentwicklung behandelt. In dem Kurs bin ich beim ersten Mal durchgefallen, also bin ich wirklich kein Mathe-Mensch
    Soweit ich es verstehe, sind Quaternionen fast so exakt wie Matrizen, haben aber eine deutlich geringere Rechenkomplexität und wurden deshalb populär
    Gab es Versuche, LLMs mit Quaternionen statt mit Matrizen zu bauen? Oder sind Quaternionen-Optimierungen eher bei Echtzeitgrafik nützlich?

    • Matrizen sind eine Möglichkeit, lineare Funktionen darzustellen. Also Funktionen, die gut mit Addition und skalarer Multiplikation zusammenspielen
      Eine bestimmte Teilmenge davon kann genutzt werden, um Rotationen im dreidimensionalen Raum zu beschreiben, und Quaternionen können das – darüber lässt sich streiten – besser
      Aber mit Quaternionen kann man keine beliebigen linearen Funktionen beschreiben, daher scheinen sie für LLMs nicht zu passen
    • Quaternionen haben nur eine feste 4-dimensionale Struktur
      Neuronale Netze brauchen viel mehr Dimensionen
    • Du scheinst mehrere Konzepte zu vermischen. Quaternionen gehören in dieselbe Kategorie wie komplexe Zahlen
      Man kann sie als Matrizen darstellen, und für Matrizen, deren Elemente Quaternionen statt reeller Zahlen sind, gibt es vermutlich sinnvolle Anwendungen wie QDNN
      Nach meiner Erfahrung haben bei großskaligen Architekturen wie LLMs eher einfachere Formen Erfolg, es sei denn, es gibt – wie in der Physik oder 3D-Grafik – einen echten Vorteil durch die Darstellung mit einem ausgefeilteren Skalartyp
    • Soweit ich es verstehe, liegt der Hauptvorteil von Quaternionen in der Computergrafik darin, Rotationen so darzustellen, dass kein Gimbal Lock entsteht
      Abgesehen davon skalieren solche Rotationsdarstellungen mit zusätzlichen Dimensionen nicht besonders gut mit Quaternionen
      Komplexe Zahlen sind eine komplexe Darstellung des 2D-Raums, Quaternionen eine komplexe Darstellung des 3D-Raums, und für 4D bräuchte man Oktonionen mit 8 Elementen
  • Dass die ursprünglichen Intelligent RAM(IRAM)-Unterlagen von 1997 nicht zitiert wurden, wirkt etwas unwissenschaftlich
    https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=iram...

    • Ich halte es für gut möglich, dass es noch frühere Arbeiten gibt
      Allerdings scheint IRAM eher Near-Memory Computing zu sein, bei dem dem Speicherchip eine ALU hinzugefügt wird, während In-Memory Computing die Speicherarrays selbst nutzt
      Fairerweise muss man sagen: Vor dem Aufkommen von Deep Learning mit enormen Vektorlängen war In-Memory Computing deutlich weniger attraktiv. Deshalb wollten die Leute wohl Ansätze entwickeln, bei denen sich die Berechnungen feiner steuern lassen
  • Kann man erwarten, dass Matrixmultiplikation und vielleicht auch andere Operationen von klassischen CPUs in DRAM wandern und dafür sogar gezielt Hardware-Unterstützung bekommen?
    Würde eine solche Verlagerung des Verarbeitungsorts Unternehmen wie Samsung einen Vorteil verschaffen? Wo stünden dann Unternehmen wie NVIDIA?

  • Ein interessanter Hack. Ich habe das Paper nicht gelesen, aber solche Operationen scheinen thermisch instabil zu sein
    Dann könnten sich die Ergebnisse der LLM-Inferenz je nach Umgebungstemperatur unterscheiden :-)

    • Stimmt, aber der Effekt ist nur gering
      Details stehen im Paper, oder man sucht einfach nach „temperature“