Home
Login
SJTU-IPADS/PowerInfer

PowerInfer ist eine Hochgeschwindigkeits-Inferenz-Engine für große Sprachmodelle, die für die lokale Bereitstellung entwickelt wurde. Sie nutzt spärliche Aktivierung und eine hybride CPU/GPU-Architektur, um eine schnelle LLM-Inferenz auf Consumer-Hardware zu ermöglichen.

MITC++ 8.2kSJTU-IPADS Last Updated: 2025-02-19
https://github.com/SJTU-IPADS/PowerInfer

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

  1. Aktivierungsprädiktor: Intelligente Vorhersage von Neuronenaktivierungsmustern.
  2. Speicherverwaltung: Optimierung der GPU/CPU-Speicherzuweisung.
  3. Sparse-Operator: Effiziente Verarbeitung spärlicher Berechnungen.
  4. 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

  1. PowerInfer-2: Mobile-optimierte Version, die 11,68 Tokens/s auf Smartphones erreicht.
  2. TurboSparse: Kostengünstige Sparsifizierungs-Technologie, die die Leistung beibehält und gleichzeitig die Parameter deutlich reduziert.
  3. 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:

  1. Aktivierungsmusteranalyse: Entdeckung der potenzgesetzlichen Verteilung der Neuronenaktivierung durch umfangreiche Datenanalyse.
  2. Vorhersagemechanismus: Verwendung eines leichtgewichtigen Prädiktors zur Vorhersage des Neuronenaktivierungsstatus.
  3. 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.