PowerInfer - Hochgeschwindigkeits-Inferenz-Engine für große Sprachmodelle
Projektübersicht
PowerInfer ist eine Hochgeschwindigkeits-Inferenz-Engine für große Sprachmodelle (LLM), die vom IPADS-Labor der Shanghai Jiao Tong University entwickelt wurde und speziell für den Einsatz auf Einzelplatzrechnern mit einer einzigen Consumer-GPU konzipiert ist. Die Kerninnovation des Projekts liegt in der Nutzung der inhärenten hohen Lokalitätseigenschaften bei der LLM-Inferenz, um die Inferenzleistung durch eine potenzgesetzliche Verteilung der Neuronenaktivierungsmuster zu optimieren.
Projekthintergrund
Die traditionelle LLM-Inferenz steht vor enormen Rechen- und Speicherherausforderungen, insbesondere bei der Bereitstellung großer Modelle auf Consumer-Hardware. PowerInfer analysiert die Aktivierungsmuster neuronaler Netze eingehend und hat dabei eine wichtige Erkenntnis gewonnen: Eine kleine Anzahl von "heißen" Neuronen ist bei allen Eingaben kontinuierlich aktiv, während die meisten "kalten" Neuronen sich je nach spezifischer Eingabe ändern.
Kerntechnische Prinzipien
Hot-Cold-Neuron-Mechanismus
Das Design von PowerInfer basiert auf folgenden Kernbeobachtungen:
- Heiße Neuronen: Eine kleine Anzahl von Neuronen, die bei allen Eingaben kontinuierlich aktiv sind.
- Kalte Neuronen: Die Mehrheit der Neuronen, die sich je nach spezifischer Eingabe ändern.
- Potenzgesetzliche Verteilung: Die Neuronenaktivierung folgt einem potenzgesetzlichen Verteilungsmuster.
GPU-CPU-Hybridarchitektur
Basierend auf den Eigenschaften der heißen und kalten Neuronen verwendet PowerInfer eine innovative Hybrid-Inferenzstrategie:
- GPU: Vorladen der heiß aktivierten Neuronen für schnellen Zugriff.
- CPU: Berechnung der kalt aktivierten Neuronen, wodurch der GPU-Speicherbedarf erheblich reduziert wird.
- Intelligente Planung: Deutliche Reduzierung des CPU-GPU-Datentransfer-Overheads.
Kernfunktionsmerkmale
🚀 Hochleistungs-Inferenz
- Geschwindigkeit: Durchschnittliche Token-Generierungsgeschwindigkeit von 13,20 Tokens/s, Spitzenwerte von bis zu 29,08 Tokens/s.
- Leistungsvergleich: Bis zu 11,69-fache Leistungssteigerung im Vergleich zu llama.cpp.
- Hardware-Effizienz: Die Leistung auf einer RTX 4090 ist nur 18 % niedriger als auf einer A100-GPU der Serverklasse.
🧠 Intelligente Optimierungstechniken
- Adaptiver Prädiktor: Dynamische Optimierung der Neuronenaktivierungsvorhersage.
- Neuronensensitiver Sparse-Operator: Optimierung der Effizienz der Berechnung von Sparsity.
- Lokalitätszentriertes Design: Vollständige Nutzung der Eigenschaften der spärlichen Aktivierung.
🔧 Benutzerfreundlichkeit und Kompatibilität
- Einfache Integration: Kompatibel mit gängigen ReLU-Sparse-Modellen.
- Lokale Bereitstellung: Speziell für Consumer-Hardware tiefgreifend optimiert.
- Abwärtskompatibilität: Unterstützt die meisten Verwendungsweisen von llama.cpp.
Unterstützte Modelle
Aktuell unterstützte Modellreihen
Modellreihe |
Parametergröße |
Eigenschaften |
Falcon-Reihe |
40B |
ReLU-Aktivierungsfunktionsoptimierung |
Llama2-Reihe |
7B/13B/70B |
Vollständige Unterstützung der gesamten Reihe |
ProSparse Llama2 |
7B/13B |
~90 % Sparsity, Leistung nahezu identisch mit der Originalversion |
Bamboo-Reihe |
7B |
Top-Leistung und -Geschwindigkeit vereint |
Modellformat
PowerInfer verwendet ein spezielles PowerInfer-GGUF-Format, das Folgendes enthält:
- LLM-Gewichte
- Prädiktor-Gewichte
- Aktivierungsstatistiken
Technische Architektur
Systemdesign
┌─────────────────┐ ┌─────────────────┐
│ Heiße Neuronen │───▶│ GPU │
│ (Kontinuierlich aktiv)│ │ (Schneller Zugriff)│
└─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐
│ Kalte Neuronen │───▶│ CPU │
│ (Bedingt aktiv) │ │ (Flexible Berechnung)│
└─────────────────┘ └─────────────────┘
Kernkomponenten
- Aktivierungsprädiktor: Intelligente Vorhersage von Neuronenaktivierungsmustern.
- Speicherverwaltung: Optimierung der GPU/CPU-Speicherzuweisung.
- Sparse-Operator: Effiziente Verarbeitung spärlicher Berechnungen.
- Scheduler: Intelligente Zuweisung von Berechnungsaufgaben.
Plattformunterstützung
Getestete Plattformen
- Linux: x86-64 CPU mit AVX2-Befehlssatz, unterstützt NVIDIA GPU.
- Windows: x86-64 CPU mit AVX2-Befehlssatz, unterstützt NVIDIA GPU.
- macOS: Apple M-Serie Chips (nur CPU, begrenzte Leistungssteigerung).
- AMD GPU: Unterstützung über ROCm.
Hardwareanforderungen
- CPU: x86-64-Prozessor mit Unterstützung für AVX2-Befehlssatz.
- GPU: NVIDIA RTX-Serie oder AMD GPU (optional).
- Speicher: Abhängig von der Modellgröße.
- Speicherplatz: Ausreichend Speicherplatz für Modelldateien.
Leistungs-Benchmark-Tests
RTX 4090 Leistung
Modell |
PowerInfer |
llama.cpp |
Beschleunigungsfaktor |
Falcon-40B |
11.2 Tokens/s |
1.0 Tokens/s |
11.2x |
Llama2-70B |
8.1 Tokens/s |
2.7 Tokens/s |
3.0x |
Llama2-13B |
24.8 Tokens/s |
8.9 Tokens/s |
2.8x |
RTX 2080Ti Leistung (INT4 Quantisierung)
Modell |
PowerInfer |
llama.cpp |
Beschleunigungsfaktor |
Falcon-40B |
6.8 Tokens/s |
0.85 Tokens/s |
8.0x |
Llama2-70B |
5.2 Tokens/s |
1.7 Tokens/s |
3.1x |
Installation und Verwendung
Umgebungsvoraussetzungen
- CMake (3.17+)
- Python (3.8+) und pip (19.3+)
- CUDA-Toolchain (falls NVIDIA GPU verwendet wird)
Grundlegende Installation
git clone https://github.com/SJTU-IPADS/PowerInfer
cd PowerInfer
pip install -r requirements.txt
# NVIDIA GPU
cmake -S . -B build -DLLAMA_CUBLAS=ON
cmake --build build --config Release
# CPU only
cmake -S . -B build
cmake --build build --config Release
Modell-Download
# Modell mit huggingface-cli herunterladen
huggingface-cli download --resume-download --local-dir ReluLLaMA-7B \
--local-dir-use-symlinks False PowerInfer/ReluLLaMA-7B-PowerInfer-GGUF
Inferenz ausführen
# Grundlegende Inferenz
./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf \
-n 128 -t 8 -p "Es war einmal"
# VRAM-Nutzung begrenzen
./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf \
-n 128 -t 8 -p "Es war einmal" --vram-budget 8
Neueste Updates und Entwicklungen
Technische Innovationen
- PowerInfer-2: Mobile-optimierte Version, die 11,68 Tokens/s auf Smartphones erreicht.
- TurboSparse: Kostengünstige Sparsifizierungs-Technologie, die die Leistung beibehält und gleichzeitig die Parameter deutlich reduziert.
- Bamboo LLM: Eigene Modellreihe, die Leistung und Geschwindigkeit vereint.
Anwendungsbereiche
Geeignete Szenarien
- Persönlicher KI-Assistent: Lokale Bereitstellung eines privaten KI-Assistenten.
- Interne Unternehmensanwendungen: Interne KI-Dienste zum Schutz der Datenprivatsphäre.
- Forschung und Entwicklung: Schnelle Prototypenentwicklung und Modelltests.
- Edge Computing: Bereitstellung von LLMs in ressourcenbeschränkten Umgebungen.
- Bildungsforschung: Lernen und Erforschen von Inferenztechnologien für große Modelle.
Vorteile
- Datenschutz: Alle Berechnungen werden lokal durchgeführt.
- Kosteneffizienz: Hervorragende Leistung mit Consumer-Hardware.
- Einfache Bereitstellung: Keine komplexe Konfiguration verteilter Systeme erforderlich.
- Schnelle Reaktion: Lokale Inferenz mit geringer Latenz.
Technischer Vergleich
vs. Traditionelle Inferenz-Engines
Merkmal |
PowerInfer |
Traditionelle Engine |
Hardwareanforderungen |
Consumer-GPU |
Server-GPU |
Speichereffizienz |
Hybrid CPU/GPU |
Vollständige GPU-Ladung |
Inferenzgeschwindigkeit |
11,69-fache Steigerung |
Basisleistung |
Kosten |
Niedrige Kosten |
Hohe Kosten |
vs. llama.cpp
- Leistung: Bis zu 11,69-fache Geschwindigkeitssteigerung.
- Speicher: Effizientere Speichernutzung.
- Hardware: Bessere CPU/GPU-Koordination.
- Kompatibilität: Unterstützt die meisten llama.cpp-Funktionen.
Technische Prinzipien im Detail
Sparsity-Nutzung
Der Kern von PowerInfer liegt in der tiefgreifenden Nutzung der Sparsity neuronaler Netze:
- Aktivierungsmusteranalyse: Entdeckung der potenzgesetzlichen Verteilung der Neuronenaktivierung durch umfangreiche Datenanalyse.
- Vorhersagemechanismus: Verwendung eines leichtgewichtigen Prädiktors zur Vorhersage des Neuronenaktivierungsstatus.
- Dynamische Planung: Dynamische Zuweisung von Rechenressourcen basierend auf den Vorhersageergebnissen.
Speicheroptimierungsstrategien
- Gestufter Speicher: Heiße Daten werden auf der GPU gespeichert, kalte Daten auf der CPU.
- Prefetch-Mechanismus: Intelligentes Vorabrufen potenziell benötigter Daten.
- Komprimierungstechniken: Komprimierte Speicherung kalter Daten.
Entwicklung und Beitrag
Open-Source-Lizenz
PowerInfer verwendet eine Open-Source-Lizenz und freut sich über Beiträge der Community. Das Projekt nimmt aktiv Feedback zu Problemen und Funktionsvorschläge entgegen.
Entwicklungsteam
- IPADS-Labor der Shanghai Jiao Tong University: Hauptentwicklungsteam.
- THUNLP der Tsinghua University: Unterstützung für ReLU-Sparse-Modelle.
- Open-Source-Community: Kontinuierliche Beiträge und Verbesserungen.
Akademischer Einfluss
Zugehörige Forschungsarbeiten wurden veröffentlicht und bieten eine wichtige theoretische Grundlage und praktische Anleitung für die Optimierung der Inferenz großer Sprachmodelle.
Zusammenfassung
PowerInfer stellt einen bedeutenden Durchbruch in der lokalen Inferenztechnologie für große Sprachmodelle dar. Durch den innovativen Hot-Cold-Neuron-Mechanismus und die CPU/GPU-Hybridarchitektur gelingt es, auf Consumer-Hardware eine Inferenzleistung zu erzielen, die sich der von Servern annähert.