Künstliche Intelligenz
PowerInfer: Schneller Large Language Model-Server mit einem Consumer-Grade-GPU

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 rascher 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, warum generative KI-Modelle noch nicht effektiv auf persönlichen Geräten eingesetzt werden.
In diesem Artikel werden wir PowerInfer, einen Hochgeschwindigkeits-LLM-Schlußmechanismus für Standardcomputer mit einem einzelnen Consumer-Grade-GPU, besprechen. Der PowerInfer-Rahmen zielt darauf ab, die hohe Lokalität in LLM-Schlußfolgerungen auszunutzen, die durch eine Potenzgesetzsverteilung in Neuronenaktivierungen gekennzeichnet sind. Dies bedeutet, dass zu jedem gegebenen Zeitpunkt eine kleine Teilmenge “heißer” Neuronen konsistent über Eingaben aktiv ist, während der Rest, “kalte” Neuronen genannt, basierend auf bestimmten Eingaben oder Anforderungen aktiviert wird. Dieser Ansatz ermöglicht es dem PowerInfer-Rahmen, die für generative KI erforderliche Rechenleistung zu reduzieren, um die gewünschten Ausgaben zu erzeugen.
Wir werden den PowerInfer-Rahmen im Detail untersuchen, seine Methodik, Pipeline und praktische Anwendungsergebnisse erforschen. Lassen Sie uns beginnen.
PowerInfer: Schneller Large Language Model mit Consumer-Grade-GPU
Generative Large Language-Modelle wie ChatGPT und DALL-E sind für ihre anspruchsvollen 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, Large Language-Modelle auf zugänglichere lokale Plattformen wie persönliche Computer zu bereitstellen.
Die Erhöhung der Zugänglichkeit von Large Language-Modellen 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 Rechenzentrumsbereitstellungen, die Priorität auf niedrige Latenz legen, da sie aufgrund kleinerer Batch-Größen funktionieren.
Allerdings stellen die Bereitstellung dieser Modelle auf lokalen Geräten erhebliche Herausforderungen aufgrund ihrer erheblichen Speicheranforderungen dar. Large Language-Modelle, 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 niedriger 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-Rahmens zu bewältigen, verwenden bestehende Lösungen Methoden wie Modell-Offloading und -Komprimierung. Techniken wie Destillation, Beschneidung und Quantisierung reduzieren die Modellgröße, sind aber immer noch zu groß für Standard-Grade-GPUs in persönlichen Computern. Modell-Offloading, das das Modell auf der Transformer-Schicht zwischen CPUs und GPUs partitioniert, ermöglicht die verteilte Schichtverarbeitung ü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.
Der PowerInference-Rahmen geht davon aus, dass die Diskrepanz zwischen LLM-Schlußfolgerungseigenschaften und Hardware-Struktur die Hauptursache für Speicherprobleme in LLM-Schlußfolgerungen 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 CPU-Speichern gespeichert werden sollten. Allerdings macht das große Volumen an Parametern in jeder LLM-Schlußfolgerungsiteration die Arbeitsmenge zu groß für eine einzelne GPU, was zu einer ineffizienten Ausnutzung der Lokalität führt.
Der Schlußfolgerungsprozess in Large Language-Modellen zeigt eine hohe Lokalität, wobei bei jeder Iteration eine begrenzte Anzahl von Neuronen aktiviert wird. Der PowerInference-Rahmen zielt darauf ab, diese Lokalität auszunutzen, indem er eine kleine Anzahl von “heiß” Neuronen mit der GPU und die CPU mit den “kalten” Neuronen verwaltet. Er wählt “heiße” Neuronen im Voraus aus und lädt sie in die GPU, identifiziert während der Laufzeit aktivierte Neuronen und minimiert die kostspieligen PCIe-Datentransfers, sodass GPUs und CPUs ihre zugewiesenen Neuronen unabhängig verarbeiten können.
Allerdings stellen die Bereitstellung von LLMs auf lokalen Geräten Hindernisse dar. Online-Prädiktoren, die für die Identifizierung von aktiven Neuronen entscheidend sind, verbrauchen erheblichen GPU-Speicher. Der PowerInfer-Rahmen verwendet eine adaptive Methode, um kleine Prädiktoren für Schichten mit höherer Aktivierungsschieflage und -sparität zu konstruieren, wodurch die Genauigkeit erhalten bleibt, während die Größe reduziert wird. Darüber hinaus benötigen LLM-Rahmen spezielle sparse-Operatoren. Der PowerInfer-Rahmen verwendet neuronenbewusste sparse-Operatoren, die direkt mit Neuronen kommunizieren, wodurch die Notwendigkeit für spezifische sparse-Formatumwandlungen während der Laufzeit eliminiert wird.
Schließlich ist es schwierig, aktivierte Neuronen zwischen CPU und GPU zu platzieren. Der PowerInfer-Rahmen verwendet eine Offline-Phase, um eine Neuronen-Platzierungsrichtlinie zu erstellen, die den Einfluss jedes Neurons auf LLM-Schlußfolgerungsergebnisse misst und es als ganzzahliges lineares Problem formuliert.
Architektur und Methodik
Die folgende Abbildung erläutert die Architektur des PowerInfer-Rahmens, der aus Offline- und Online-Komponenten in der Pipeline besteht.

Dank der Variation, die in den Lokalitätseigenschaften zwischen verschiedenen Large Language-Modellen beobachtet wird, profilet die Offline-Komponente die Aktivierungssparität des LLM-Rahmens, um zwischen “heiß” und “kalt” Neuronen zu unterscheiden. Andererseits lädt die Offline-Phase zwei Arten von Neuronen in den Inferenz-Mechanismus in beide CPU und GPU, um LLM-Anfragen während der Laufzeit mit niedriger Latenz zu bedienen.
Offline-Phase: Richtlinienlöser und LLM-Profiler
In der Offline-Phase verwendet die LLM-Profiler-Komponente Anfragen, die aus einem allgemeinen Datensatz abgeleitet werden, um Aktivierungsdaten aus dem Inferenzprozess zu sammeln. Im ersten Schritt überwacht sie die Aktivierung von Neuronen über alle Schichten im Rahmen und verwendet dann eine Richtlinienlöser-Komponente, um die Neuronen als entweder “heiß” oder “kalt” zu kategorisieren. Das primäre Ziel der Richtlinienlöser-Komponente 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öser-Komponente Neuronen-Einflussmetriken und Hardware-Spezifikationen, um die Arbeitslast zwischen den Schichten auszugleichen und den Einflussmetrik-Wert für Neuronen auf dem GPU durch ganzzahlige lineare Programmierung zu maximieren.
Online-Phase: Neuronenbewusster LLM-Schlußmechanismus
Sobald die Offline-Phase erfolgreich ausgeführt wurde, geht der Rahmen zur Online-Phase über. Im dritten Schritt des Prozesses weist die Online-Engine “heiße” und “kalte” Neuronen ihren jeweiligen Verarbeitungseinheiten zu, basierend auf der Ausgabe der Offline-Richtlinienlöser. Während der Laufzeit und im vierten Schritt verwaltet die Online-Engine GPU-CPU-Berechnungen, indem sie CPU- und GPU-Executor erstellt, die als Threads auf der CPU-Seite laufen. Die Engine prognostiziert dann die aktivierten Neuronen und überspringt die nicht aktivierten Neuronen. Die aktivierten Neuronen werden dann in die GPU für die Verarbeitung geladen. Währenddessen berechnet die CPU die Ergebnisse für ihre Neuronen, um sie mit dem 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 Sparsity-Prädiktoren
Das primäre Konzept hinter der Reduzierung der Rechenlasten durch den Online-Schlußmechanismus im PowerInfer-Rahmen besteht darin, dass er nur Neuronen verarbeitet, die er als aktiviert vorhersagt. Traditionell verwendet ein Rahmen innerhalb jeder Transformer-Schicht zwei verschiedene Prädiktoren, um die Aktivierung von Neuronen in den MLP- und Selbstaufmerksamkeitsblöcken vorherzusagen, wodurch die Inferenzberechnung auf die Neuronen beschränkt ist, die als aktiv vorhergesagt werden. 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 Rahmen häufig verwendet werden, um aktive Neuronen vorherzusagen, müssen sie im GPU-Speicher gespeichert werden, um einen schnelleren Zugriff zu ermöglichen. Allerdings verwenden Rahmen im Allgemeinen eine große Anzahl von Prädiktoren, die erheblichen Speicherplatz einnehmen, sogar den, der zum Speichern von LLM-Parametern erforderlich ist.
Darüber hinaus wird die Größe der Prädiktoren im Allgemeinen durch zwei Faktoren bestimmt: Interne Schieflage und Sparität von LLM-Schichten.

Um diese Faktoren zu optimieren, verwendet der PowerInfer-Rahmen eine iterative Trainingsmethode für jeden Prädiktor in der Transformer-Schicht ohne feste Größe. Im ersten Schritt der Trainingsmethode wird die Größe des Basis-Modells auf der Grundlage des Sparitätsprofils des Modells festgelegt, und die Modellgröße wird iterativ durch Berücksichtigung der internen Aktivierungsschieflage angepasst, um die Genauigkeit zu erhalten.
Neuronen-Platzierung und -Verwaltung
Wie bereits erwähnt, bestimmt die Offline-Richtlinienlöser-Komponente während der Offline-Phase die Neuronen-Platzierungsrichtlinie, während die Online-Inferenz-Engine-Komponente das Modell in den GPU- und CPU-Speicher lädt, basierend auf der generierten Richtlinie. Für jede Schicht, die möglicherweise mehrere Gewichtsmatrizen aufweist, weist der PowerInfer-Rahmen jedem Neuron entweder die CPU oder den GPU zu, basierend auf der Tatsache, ob der 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 bewältigen, generiert der PowerInfer-Rahmen zwei Neuronen-Tabellen: eine im GPU-Speicher und eine im CPU-Speicher, wobei jede Tabelle einzelne Neuronen mit ihrer ursprünglichen Position in der Matrix in Beziehung setzt.
Neuronenbewusster Operator
Angesichts der Aktivierungssparität, die in Large Language-Modellen beobachtet wird, können inaktive Neuronen und ihre Gewichte durch Matrixmultiplikationsoperationen umgangen werden, was die Notwendigkeit für den Einsatz von sparse-Operatoren erzeugt. Anstatt sparse-Operatoren mit mehreren Einschränkungen zu verwenden, verwendet der PowerInfer-Rahmen neuronenbewusste Operatoren, die aktivierte Neuronen und ihre Gewichte direkt auf dem GPU und der CPU berechnen, ohne während der Laufzeit eine Umwandlung in ein dichtes Format zu erfordern. Die neuronenbewussten Operatoren unterscheiden sich von traditionellen sparse-Operatoren, da sie sich auf einzelne Zeilen- und Spaltenvektoren innerhalb einer einzelnen 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-Rahmen eine Platzierungsrichtlinie, die den Rahmen bei der Zuweisung von Neuronen zu entweder der CPU oder den GPU-Schichten leitet. Die Richtlinienlöser-Komponente generiert diese Richtlinie und kontrolliert die Neuronen-Platzierung innerhalb jeder Schicht, was dabei hilft, die Rechenlast für einzelne Verarbeitungseinheiten zu bestimmen. Wenn die Platzierungsrichtlinie generiert wird, berücksichtigt die Richtlinienlöser-Komponente verschiedene Faktoren, einschließlich der Aktivierungshäufigkeit für jedes Neuron, der Kommunikationsüberlastung und der Rechenfähigkeiten wie Bandbreiten und Speichergrößen jedes Verarbeitungseinheits.
Ergebnisse und Implementierung
Um die Generalisierungsfähigkeit des PowerInfer-Rahmens auf Geräten mit unterschiedlichen Hardware-Konfigurationen zu demonstrieren, werden die Experimente auf zwei verschiedenen persönlichen Computern durchgeführt: einem mit Intel i9-13900K-Prozessor, NVIDIA RTX 4090-GPU und 192 GB Host-Speicher und einem anderen mit Intel i7-12700K-Prozessor, NVIDIA RTX 2080Ti-GPU und 64 GB Host-Speicher.
Die Gesamtleistung des PowerInfer-Rahmens wird mit llama.cpp mit einer Batch-Größe von 1 und Standard-Bereitstellungseinstellungen verglichen. Der Rahmen sampelt dann Prompts aus ChatGPT- und Alpaca-Datensätzen, basierend auf der Längenvariabilität, die in realen Dialog-Eingabe- und Ausgaben beobachtet wird. Die folgende Abbildung zeigt die Generierungsgeschwindigkeiten für verschiedene Modelle.

Wie zu sehen ist, generiert der PowerInfer-Rahmen 8,32 Token pro Sekunde und erreicht bis zu 16 Token pro Sekunde, wodurch er den llama.cpp-Rahmen um einen erheblichen Betrag übertrifft. Darüber hinaus verbessert sich die Leistung des PowerInfer-Rahmens, wenn die Anzahl der Ausgabentoken zunimmt, da die Generierungsphase die gesamte Inferenzzeit erheblich beeinflusst.

Darüber hinaus, wie in der obigen Abbildung zu sehen ist, übertrifft der PowerInfer-Rahmen den llama.cpp-Rahmen 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 GPU und CPU für die beiden Rahmen. Wie zu sehen ist, erhöht der PowerInfer-Rahmen den Anteil der GPU-Neuronenlast erheblich, von 20 auf 70 %.

Die obige Abbildung vergleicht die Leistung der beiden Rahmen auf zwei PCs mit unterschiedlichen Spezifikationen. Wie zu sehen ist, liefert der PowerInfer-Rahmen konsistent eine hohe Ausgabe-Token-Generierungsgeschwindigkeit im Vergleich zum llama.cpp-Rahmen.
Schlussgedanken
In diesem Artikel haben wir über PowerInfer, einen Hochgeschwindigkeits-LLM-Schlußmechanismus für Standardcomputer mit einem einzelnen Consumer-Grade-GPU, gesprochen. Im Kern versucht der PowerInfer-Rahmen, die hohe Lokalität in LLM-Schlußfolgerungen auszunutzen, eine Methode, die durch eine Potenzgesetzsverteilung in Neuronenaktivierungen gekennzeichnet ist. Der PowerInfer-Rahmen ist ein schneller Interferenzsystem für Large Language-Modelle, das adaptive Prädiktoren und neuronenbewusste Operatoren verwendet, um Neuronen zu aktivieren und die Rechenlast zu reduzieren.












