- 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
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
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“
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
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
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
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
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
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.
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?
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
Neuronale Netze brauchen viel mehr Dimensionen
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
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...
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?
https://www.patentlyapple.com/2024/12/apple-plans-to-transit...
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 :-)
Details stehen im Paper, oder man sucht einfach nach „temperature“