KI-Modelle und Plattformen

PowerInfer: Schnellgroßes Sprachmodell mit Consumer-Grade-GPU

mm
Unite.AI zu deinen bevorzugten Quellen auf Google hinzufügen

Aufgrund ihrer außergewöhnlichen Fähigkeiten zur Erstellung von Inhalten stehen generative Large Language Modelle nun an der Spitze der KI-Revolution, mit laufenden Bemühungen, ihre generativen Fähigkeiten zu verbessern. Allerdings benötigen diese Modelle trotz schneller Fortschritte erhebliche Rechenleistung und Ressourcen. Dies liegt größtenteils daran, dass sie aus Hunderten von Milliarden Parametern bestehen. Darüber hinaus benötigen generative KI-Modelle, um reibungslos zu funktionieren, Tausende von GPUs, was zu erheblichen Betriebskosten führt. Die hohen Betriebsanforderungen sind ein Hauptgrund dafür, dass generative KI-Modelle noch nicht effektiv auf persönlichen Geräten bereitgestellt werden.

In diesem Artikel werden wir PowerInfer besprechen, einen Hochgeschwindigkeits-LLM-Schlußmechanismus, der für Standardcomputer mit einer einzelnen Consumer-Grade-GPU konzipiert ist. Das PowerInfer-Framework zielt darauf ab, die hohe Lokalität, die in der LLM-Schlußfolgerung inheriert ist, zu nutzen, die durch eine Potenzgesetzesverteilung in Neuronenaktivierungen gekennzeichnet ist. Dies bedeutet, dass zu jedem gegebenen Zeitpunkt eine kleine Teilmenge von “heiß” Neuronen konsistent aktiv ist, während der Rest, als “kalte” Neuronen bezeichnet, basierend auf bestimmten Eingaben oder Anforderungen aktiviert wird. Dieser Ansatz ermöglicht es dem PowerInfer-Framework, die für die generative KI erforderliche Rechenleistung zu reduzieren, um die gewünschten Ausgaben zu erzeugen.

Wir werden das PowerInfer-Framework im Detail untersuchen, indem wir seine Methodik, Pipeline und praktische Anwendungsergebnisse erforschen. Lassen Sie uns beginnen.

PowerInfer: Schnellgroßes Sprachmodell mit Consumer-Grade-GPU

Generative Large Language Modelle, wie ChatGPT und DALL-E, sind für ihre komplexen generativen und natürlichen Sprachverarbeitungsaufgaben bekannt. Aufgrund ihrer hohen Rechenanforderungen werden diese Modelle typischerweise in Rechenzentren mit fortschrittlichen GPUs bereitgestellt. Die Notwendigkeit einer so hohen Rechenleistung begrenzt ihre Bereitstellung auf Rechenzentren, was die Notwendigkeit unterstreicht, große Sprachmodelle auf zugänglichere lokale Plattformen wie persönliche Computer zu bereitstellen.

Die Erhöhung der Zugänglichkeit großer Sprachmodelle könnte die Inferenz- und Inhaltsgenerierungskosten senken, die Datenprivatsphäre verbessern und die Anpassung von Modellen ermöglichen. Darüber hinaus könnten lokale Bereitstellungen von LLMs, im Gegensatz zu Rechenzentren, die Priorität auf geringe Latenz legen, aufgrund der kleineren Batch-Größen.

Die Bereitstellung dieser Modelle auf lokalen Geräten stellt jedoch aufgrund ihrer erheblichen Speicheranforderungen erhebliche Herausforderungen dar. Große Sprachmodelle, die als autoregressive Transformer fungieren, generieren Text tokenweise, wobei jeder Token den Zugriff auf das gesamte Modell erfordert, das aus Hunderten von Milliarden Parametern besteht. Dies erfordert zahlreiche High-End-GPUs für die Erzeugung von Ausgaben mit geringer Latenz. Darüber hinaus verarbeiten lokale Bereitstellungen in der Regel einzelne Anfragen sequentiell, was die Möglichkeit für Parallelverarbeitung begrenzt.

Um die komplexen Speicheranforderungen des generativen KI-Frameworks zu bewältigen, verwenden bestehende Lösungen Methoden wie Modell-Offloading und -Komprimierung. Techniken wie Destillation, Beschneidung und Quantisierung reduzieren die Modellgröße, sind jedoch immer noch zu groß für Standard-GPUs in persönlichen Computern. Modell-Offloading, das das Modell auf der Transformer-Schicht zwischen CPUs und GPUs partitioniert, ermöglicht die verteilte Verarbeitung von Schichten über CPU- und GPU-Speicher. Allerdings ist diese Methode durch die langsame PCIe-Verbindung und die begrenzten Rechenfähigkeiten der CPUs begrenzt, was zu hoher Inferenzlatenz führt.

Das PowerInfer-Framework geht davon aus, dass die Diskrepanz zwischen den Merkmalen der LLM-Schlußfolgerung und der Hardwarestruktur die Hauptursache der Speicherprobleme bei der LLM-Schlußfolgerung ist. Idealisiert sollten häufig zugängliche Daten in hochbandigen, begrenzten GPU-Speichern gespeichert werden, während weniger häufig zugängliche Daten in niedrigbandigen, hochkapazitiven CPUs gespeichert werden sollten. Allerdings macht die große Parametervolumenmenge jedes LLM-Schlußfolgerungsiterations die Arbeitsmenge zu groß für eine einzelne GPU, was zu einer ineffizienten Ausnutzung der Lokalität führt.

Der Schlußfolgerungsprozess in großen Sprachmodellen zeigt eine hohe Lokalität, wobei jede Iteration eine begrenzte Anzahl von Neuronen aktiviert. Das PowerInfer-Framework zielt darauf ab, diese Lokalität auszunutzen, indem es eine kleine Anzahl von “heiß” Neuronen mit der GPU und die “kalten” Neuronen mit der CPU verwaltet. Es wählt “heiß” Neuronen im Voraus aus und lädt sie in die GPU, identifiziert aktivierte Neuronen während der Laufzeit und minimiert teure PCIe-Datentransfers, indem es die GPU und CPU unabhängig verarbeiten lässt.

Die Bereitstellung von LLMs auf lokalen Geräten stellt jedoch Herausforderungen dar. Online-Prädiktoren, die für die Identifizierung von aktivierten Neuronen entscheidend sind, verbrauchen erheblichen GPU-Speicher. Das PowerInfer-Framework verwendet eine adaptive Methode, um kleine Prädiktoren für Schichten mit höherer Aktivierungsskewness und -Sparsamkeit zu konstruieren, wodurch die Genauigkeit erhalten bleibt, während die Größe reduziert wird. Darüber hinaus erfordern LLM-Frameworks spezielle sparse Operatoren. Das PowerInfer-Framework verwendet neuronenbewusste sparse Operatoren, die direkt mit Neuronen kommunizieren, ohne die Notwendigkeit von spezifischen sparse-Formatumwandlungen während der Laufzeit.

Zum Schluss ist die optimale Platzierung von aktivierten Neuronen zwischen CPU und GPU eine Herausforderung. Das PowerInfer-Framework verwendet eine Offline-Phase, um eine Neuronen-Platzierungsrichtlinie zu erstellen, die den Einfluss jedes Neurons auf die LLM-Schlußfolgerungsergebnisse misst und als ganzzahlige lineare Problemformulierung darstellt.

Architektur und Methodik

Die folgende Abbildung erläutert die Architektur des PowerInfer-Frameworks, das aus Offline- und Online-Komponenten in der Pipeline besteht.

Dank der Variation, die in den Lokalitätseigenschaften unter verschiedenen großen Sprachmodellen beobachtet wird, profileiert die Offline-Komponente die Aktivierungssparsamkeit des LLM-Frameworks, um zwischen “heiß” und “kalt” Neuronen zu unterscheiden. Andererseits lädt die Offline-Phase zwei Arten von Neuronen in die CPU und GPU, um LLM-Anfragen während der Laufzeit mit geringer Latenz zu bedienen.

Offline-Phase: Richtlinienlösung und LLM-Profilierung

In der Offline-Phase verwendet eine LLM-Profilierungs-Komponente Anfragen, die aus einem allgemeinen Datensatz abgeleitet werden, um Aktivierungsdaten aus dem Schlußfolgerungsprozess zu sammeln. Im ersten Schritt überwacht sie die Aktivierung von Neuronen über alle Schichten im Framework und verwendet dann eine Richtlinienlösungs-Komponente, um die Neuronen als entweder “heiß” oder “kalt” zu kategorisieren. Das Hauptziel der Richtlinienlösung ist es, Neuronen, die häufiger aktiviert werden, den GPU-Schichten zuzuweisen, während der Rest den CPU-Schichten zugewiesen wird. In der zweiten Phase verwendet die Richtlinienlösungs-Komponente Neuronen-Einflussmetriken und Hardware-Spezifikationen, um die Arbeitslast zwischen den Schichten auszugleichen und die Auswirkungsmetrik der GPU für Neuronen durch ganzzahlige lineare Programmierung zu maximieren.

Online-Phase: Neuronenbewusster LLM-Schlußmechanismus

Sobald die Offline-Phase erfolgreich ausgeführt wurde, geht das Framework zur Online-Phase über. Im dritten Schritt des Prozesses weist die Online-Engine “heiß” und “kalt” Neuronen ihren jeweiligen Verarbeitungseinheiten zu, basierend auf der Ausgabe der Offline-Richtlinienlösung. Während der Laufzeit und im vierten Schritt verwaltet die Online-Engine die GPU-CPU-Berechnungen, indem sie CPU- und GPU-Executor erstellt, die als Threads auf der CPU-Seite laufen. Die Engine predicts dann die aktivierten Neuronen und überspringt die nicht aktivierten Neuronen. Die aktivierten Neuronen werden dann in die GPU geladen, um verarbeitet zu werden. Währenddessen berechnet die CPU die Ergebnisse für ihre Neuronen, um sie mit der GPU zu integrieren. Die Online-Engine kann sich auf einzelne Neuronenreihen und -spalten innerhalb von Matrizen konzentrieren, da sie neuronenbewusste sparse Operatoren auf CPUs und GPUs verwendet.

Adaptive Sparsamkeitsprädiktoren

Das primäre Konzept hinter der Reduzierung der Rechenlasten durch die Online-Schlußfolgerungs-Engine im PowerInfer-Framework besteht darin, dass es nur Neuronen verarbeitet, die es vorhersagt, aktiviert zu werden. Traditionell verwendet ein Framework innerhalb jeder Transformer-Schicht zwei verschiedene Prädiktoren, um die Aktivierung von Neuronen in den MLP- und Selbstaufmerksamkeitsblöcken vorherzusagen, wodurch die Schlußfolgerungsrechnung auf die Neuronen beschränkt ist, die vorhergesagt werden, aktiv zu sein. Allerdings ist es schwierig, effektive Prädiktoren für lokale Bereitstellungen zu entwerfen, da die begrenzten Ressourcen es schwierig machen, die Modellgröße und die Vorhersagegenauigkeit auszugleichen. Da diese Prädiktoren vom Framework häufig verwendet werden, um aktive Neuronen vorherzusagen, müssen sie in der GPU gespeichert werden, um einen schnelleren Zugriff zu ermöglichen. Allerdings benötigen Frameworks im Allgemeinen eine große Anzahl von Prädiktoren, die erheblichen Speicherplatz beanspruchen, sogar den, der für die LLM-Parameter benötigt wird.

Darüber hinaus wird die Größe der Prädiktoren im Allgemeinen durch zwei Faktoren bestimmt: Interne Skewness und Sparsamkeit der LLM-Schichten.

Um diese Faktoren zu optimieren, verwendet das PowerInfer-Framework eine iterative Trainingsmethode für jeden Prädiktor in der Transformer-Schicht ohne feste Größe. Im ersten Schritt dieser Trainingsmethode wird die Größe des Basismodells auf der Grundlage des Sparsamkeitsprofils des Modells festgelegt, und die Größe des Modells wird iterativ durch die interne Aktivierungsskewness angepasst, um die Genauigkeit zu erhalten.

Neuronen-Platzierung und -Verwaltung

Wie bereits erwähnt, während die Offline-Richtlinienlösungs-Komponente die Neuronen-Platzierungsrichtlinie bestimmt, lädt die Online-Schlußfolgerungs-Engine das Modell in die GPU- und CPU-Speicher, basierend auf der generierten Richtlinie. Für jede Schicht, die möglicherweise mehrere Gewichtsmatrizen hat, weist das PowerInfer-Framework jedem Neuron entweder die CPU oder die GPU zu, basierend auf der Tatsache, ob das Neuron “heiß” aktiviert ist. Die genaue Berechnung von segmentierten Neuronen in der bestimmten Reihenfolge ist für präzise Ergebnisse unerlässlich. Um dies zu erreichen, generiert das PowerInfer-Framework zwei Neuronen-Tabellen: eine in der GPU und eine in der CPU-Speicher, wobei jede Tabelle einzelne Neuronen mit ihrer ursprünglichen Position in der Matrix korreliert.

Neuronen-bewusster Operator

Angesichts der Aktivierungssparsamkeit, die in großen Sprachmodellen beobachtet wird, können inaktive Neuronen und ihre Gewichte durch Matrixmultiplikationsoperationen umgangen werden, was die Notwendigkeit für den Einsatz von sparse Operatoren erfordert. Anstatt sparse Operatoren mit mehreren Einschränkungen zu verwenden, verwendet das PowerInfer-Framework neuronen-bewusste Operatoren, die direkt auf der GPU und CPU mit aktivierten Neuronen und ihren Gewichten rechnen, ohne während der Laufzeit in dichten Format umgewandelt zu werden. Die neuronen-bewussten Operatoren unterscheiden sich von traditionellen sparse Operatoren, da sie sich auf einzelne Zeilen- und Spaltenvektoren innerhalb einer Matrix konzentrieren, anstatt sich auf die gesamte Matrix zu konzentrieren.

Neuronen-Platzierungsrichtlinie

Um die Rechenfähigkeiten von CPUs und GPUs auszunutzen, generiert die Offline-Komponente im PowerInfer-Framework eine Platzierungsrichtlinie, die das Framework bei der Zuweisung von Neuronen zu entweder der CPU oder der GPU leitet. Die Richtlinienlösung generiert diese Richtlinie und kontrolliert die Neuronen-Platzierung innerhalb jeder Schicht, was hilft, die Rechenlast für einzelne Verarbeitungseinheiten zu bestimmen. Wenn die Richtlinienlösungs-Komponente die Platzierungsrichtlinie generiert, berücksichtigt sie verschiedene Faktoren, einschließlich der Aktivierungshäufigkeit für jedes Neuron, der Kommunikationsüberlastung und der Rechenfähigkeiten wie Bandbreite und Speichergröße jedes Verarbeitungsgeräts.

Ergebnisse und Implementierung

Um die Allgemeingültigkeit des PowerInfer-Frameworks auf Geräten mit unterschiedlichen Hardware-Konfigurationen zu demonstrieren, werden die Experimente auf zwei verschiedenen persönlichen Computern durchgeführt: einem mit Intel (INTC ) i9-13900K-Prozessor, NVIDIA RTX 4090-GPU und 192 GB Host-Speicher und einem mit Intel i7-12700K-Prozessor, NVIDIA RTX 2080Ti-GPU und 64 GB Host-Speicher.

Die Gesamtleistung des PowerInfer-Frameworks wird mit llama.cpp verglichen, mit einer Batch-Größe von 1 und Standard-Bereitstellungseinstellungen. Das Framework sampelt dann Anfragen aus ChatGPT- und Alpaca-Datensätzen, basierend auf der Länge, die in realen Dialog-Eingabe- und Ausgaben beobachtet wird. Die folgende Abbildung zeigt die Generierungsgeschwindigkeiten für verschiedene Modelle.

Wie zu sehen ist, generiert das PowerInfer-Framework 8,32 Token pro Sekunde und erreicht bis zu 16 Token pro Sekunde, wodurch es das llama.cpp-Framework um einen erheblichen Betrag übertrifft. Darüber hinaus verbessert sich die Leistung des PowerInfer-Frameworks, wenn die Anzahl der Ausgabentoken erhöht wird, da die Generierungsphase die gesamte Schlußfolgerungszeit erheblich beeinflusst.

Darüber hinaus übertrifft das PowerInfer-Framework, wie in der obigen Abbildung zu sehen ist, das llama.cpp-Framework auf Low-End-PCs mit einer Spitzen-Generierungsrate von 7 Token pro Sekunde und einer durchschnittlichen Token-Generierungsgeschwindigkeit von 5 Token pro Sekunde.

Die obige Abbildung zeigt die Verteilung der Neuronenlasten zwischen der GPU und der CPU für die beiden Frameworks. Wie zu sehen ist, erhöht das PowerInfer-Framework den Anteil der Neuronenlast auf der GPU erheblich, von 20 auf 70 %.

Die obige Abbildung vergleicht die Leistung der beiden Frameworks auf zwei PCs mit unterschiedlichen Spezifikationen. Wie zu sehen ist, liefert das PowerInfer-Framework konsistent eine hohe Ausgabentoken-Generierungsgeschwindigkeit im Vergleich zum llama.cpp-Framework.

Letzte Gedanken

In diesem Artikel haben wir über PowerInfer gesprochen, einen Hochgeschwindigkeits-LLM-Schlußmechanismus für einen Standardcomputer mit einer einzelnen Consumer-Grade-GPU. Im Kern versucht das PowerInfer-Framework, die hohe Lokalität, die in der LLM-Schlußfolgerung inheriert ist, auszunutzen, die durch eine Potenzgesetzesverteilung in Neuronenaktivierungen gekennzeichnet ist. Das PowerInfer-Framework ist ein schnelles Interferenzsystem, das für große Sprachmodelle konzipiert ist und adaptive Prädiktoren und neuronen-bewusste Operatoren verwendet, um Neuronen und die Rechen-Sparsamkeit zu aktivieren.

Ein Ingenieur von Beruf, ein Schriftsteller von Herzen. Kunal ist ein technischer Schriftsteller mit einer tiefen Liebe und einem tiefen Verständnis für KI und ML, der sich der Aufgabe widmet, komplexe Konzepte in diesen Bereichen durch seine ansprechenden und informativen Dokumentationen zu vereinfachen.