Home
Login
SJTU-IPADS/PowerInfer

PowerInfer est un moteur d'inférence de modèles de langage de grande taille à haute vitesse, conçu pour un déploiement local. Il utilise l'activation parcimonieuse et une architecture hybride CPU/GPU pour réaliser une inférence LLM rapide sur du matériel grand public.

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

PowerInfer - Moteur d'inférence à haute vitesse pour grands modèles de langage

Aperçu du projet

PowerInfer est un moteur d'inférence à haute vitesse pour grands modèles de langage (LLM), développé par le laboratoire IPADS de l'Université Jiao Tong de Shanghai, spécialement conçu pour les ordinateurs personnels équipés d'un seul GPU grand public. L'innovation centrale de ce projet réside dans l'exploitation des caractéristiques de forte localité inhérentes à l'inférence LLM, en optimisant les performances d'inférence grâce à un modèle d'activation des neurones suivant une loi de puissance.

Contexte du projet

L'inférence LLM traditionnelle est confrontée à d'énormes défis en termes de calcul et de mémoire, en particulier lors du déploiement de grands modèles sur du matériel grand public. PowerInfer, grâce à une analyse approfondie des modèles d'activation des réseaux neuronaux, a mis en évidence une observation clé : un petit nombre de neurones "chauds" sont activés de manière continue dans toutes les entrées, tandis que la majorité des neurones "froids" varient en fonction de l'entrée spécifique.

Principes technologiques fondamentaux

Mécanisme des neurones chauds et froids

La conception de PowerInfer repose sur les observations fondamentales suivantes :

  • Neurones chauds : Un petit nombre de neurones activés de manière continue dans toutes les entrées.
  • Neurones froids : La majorité des neurones qui varient en fonction de l'entrée spécifique.
  • Distribution de loi de puissance : L'activation des neurones suit un modèle de distribution de loi de puissance.

Architecture hybride GPU-CPU

Basé sur les caractéristiques des neurones chauds et froids, PowerInfer adopte une stratégie d'inférence hybride innovante :

  • GPU : Pré-chargement des neurones à activation chaude pour un accès rapide.
  • CPU : Calcul des neurones à activation froide, réduisant considérablement les besoins en mémoire du GPU.
  • Orchestration intelligente : Réduction significative des coûts de transfert de données CPU-GPU.

Fonctionnalités principales

🚀 Inférence haute performance

  • Vitesse d'exécution : Vitesse moyenne de génération de tokens atteignant 13,20 tokens/s, avec des pics jusqu'à 29,08 tokens/s.
  • Comparaison des performances : Amélioration des performances jusqu'à 11,69 fois par rapport à llama.cpp.
  • Efficacité matérielle : Les performances sur une RTX 4090 ne sont que 18 % inférieures à celles d'un GPU A100 de niveau serveur.

🧠 Technologies d'optimisation intelligentes

  • Prédicteur adaptatif : Optimisation dynamique de la prédiction de l'activation des neurones.
  • Opérateur de parcimonie sensible aux neurones : Optimisation de l'efficacité du calcul de la parcimonie.
  • Conception centrée sur la localité : Exploitation maximale des caractéristiques d'activation parcimonieuse.

🔧 Facilité d'utilisation et compatibilité

  • Intégration facile : Compatible avec les modèles parcimonieux ReLU populaires.
  • Déploiement local : Optimisation approfondie pour le matériel grand public.
  • Rétrocompatibilité : Prend en charge la plupart des modes d'utilisation de llama.cpp.

Modèles pris en charge

Familles de modèles actuellement prises en charge

Famille de modèles Taille des paramètres Caractéristiques
Falcon 40B Optimisation de la fonction d'activation ReLU
Llama2 7B/13B/70B Prise en charge de toute la famille
ProSparse Llama2 7B/13B ~90% de parcimonie, performances proches de la version originale
Bamboo 7B Performances et vitesse optimales

Format des modèles

PowerInfer utilise un format PowerInfer GGUF spécifique, comprenant :

  • Poids du LLM
  • Poids du prédicteur
  • Informations statistiques sur l'activation

Architecture technique

Conception du système

┌─────────────────┐    ┌─────────────────┐
│   Neurones chauds  │───▶│      GPU        │
│  (Activation continue)│    │   (Accès rapide)  │
└─────────────────┘    └─────────────────┘
                              │
                              ▼
┌─────────────────┐    ┌─────────────────┐
│   Neurones froids  │───▶│      CPU        │
│  (Activation conditionnelle)│    │   (Calcul flexible)│
└─────────────────┘    └─────────────────┘

Composants principaux

  1. Prédicteur d'activation : Prédiction intelligente des modèles d'activation des neurones.
  2. Gestionnaire de mémoire : Optimisation de l'allocation de la mémoire GPU/CPU.
  3. Opérateur de parcimonie : Traitement efficace des calculs parcimonieux.
  4. Orchestrateur : Allocation intelligente des tâches de calcul.

Plateformes prises en charge

Plateformes testées

  • Linux : CPU x86-64 avec jeu d'instructions AVX2, prise en charge des GPU NVIDIA.
  • Windows : CPU x86-64 avec jeu d'instructions AVX2, prise en charge des GPU NVIDIA.
  • macOS : Puces Apple M (CPU uniquement, amélioration des performances limitée).
  • GPU AMD : Prise en charge via ROCm.

Configuration matérielle requise

  • CPU : Processeur x86-64 prenant en charge le jeu d'instructions AVX2.
  • GPU : NVIDIA RTX ou GPU AMD (facultatif).
  • Mémoire : Dépend de la taille du modèle.
  • Stockage : Espace suffisant pour stocker les fichiers du modèle.

Tests de performance

Performances RTX 4090

Modèle PowerInfer llama.cpp Rapport d'accélération
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

Performances RTX 2080Ti (quantification INT4)

Modèle PowerInfer llama.cpp Rapport d'accélération
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 et utilisation

Configuration requise

  • CMake (3.17+)
  • Python (3.8+) et pip (19.3+)
  • Chaîne d'outils CUDA (si vous utilisez un GPU NVIDIA)

Installation de base

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

Téléchargement du modèle

# Utiliser huggingface-cli pour télécharger le modèle
huggingface-cli download --resume-download --local-dir ReluLLaMA-7B \
  --local-dir-use-symlinks False PowerInfer/ReluLLaMA-7B-PowerInfer-GGUF

Exécution de l'inférence

# Inférence de base
./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf \
  -n 128 -t 8 -p "Il était une fois"

# Limiter l'utilisation de la VRAM
./build/bin/main -m ./ReluLLaMA-7B-PowerInfer-GGUF/llama-7b-relu.powerinfer.gguf \
  -n 128 -t 8 -p "Il était une fois" --vram-budget 8

Dernières mises à jour et développements

Innovations techniques

  1. PowerInfer-2 : Version optimisée pour les appareils mobiles, atteignant 11,68 tokens/s sur un smartphone.
  2. TurboSparse : Technologie de parcimonisation à faible coût, réduisant considérablement le nombre de paramètres tout en conservant les performances.
  3. Bamboo LLM : Famille de modèles auto-développés qui privilégie à la fois les performances et la vitesse.

Cas d'utilisation

Scénarios applicables

  • Assistant IA personnel : Déploiement local d'un assistant IA privé.
  • Applications internes d'entreprise : Services d'IA internes protégeant la confidentialité des données.
  • Recherche et développement : Développement rapide de prototypes et tests de modèles.
  • Informatique de pointe : Déploiement de LLM dans des environnements aux ressources limitées.
  • Recherche pédagogique : Apprentissage et recherche sur les technologies d'inférence de grands modèles.

Avantages et caractéristiques

  • Protection de la vie privée : Tous les calculs sont effectués localement.
  • Rentabilité : Excellentes performances avec du matériel grand public.
  • Déploiement simple : Pas besoin de configurations de systèmes distribués complexes.
  • Réponse rapide : Inférence locale à faible latence.

Comparaison technique

vs. Moteurs d'inférence traditionnels

Caractéristique PowerInfer Moteur traditionnel
Configuration matérielle requise GPU grand public GPU de niveau serveur
Efficacité de la mémoire Hybride CPU/GPU Chargement complet du GPU
Vitesse d'inférence Amélioration de 11,69x Performances de référence
Coût Faible coût Coût élevé

vs. llama.cpp

  • Performances : Amélioration de la vitesse jusqu'à 11,69 fois.
  • Mémoire : Utilisation plus efficace de la mémoire.
  • Matériel : Meilleure coordination CPU/GPU.
  • Compatibilité : Prend en charge la plupart des fonctionnalités de llama.cpp.

Approfondissement des principes techniques

Exploitation de la parcimonie

Le cœur de PowerInfer réside dans l'exploitation approfondie de la parcimonie des réseaux neuronaux :

  1. Analyse des modèles d'activation : Découverte de la distribution de loi de puissance de l'activation des neurones grâce à l'analyse d'un grand nombre de données.
  2. Mécanisme de prédiction : Utilisation d'un prédicteur léger pour prédire l'état d'activation des neurones.
  3. Orchestration dynamique : Allocation dynamique des ressources de calcul en fonction des résultats de la prédiction.

Stratégies d'optimisation de la mémoire

  • Stockage hiérarchique : Stockage des données chaudes sur le GPU, stockage des données froides sur le CPU.
  • Mécanisme de prélecture : Prélecture intelligente des données potentiellement nécessaires.
  • Techniques de compression : Compression du stockage des données froides.

Développement et contribution

Licence Open Source

PowerInfer est sous licence open source, et les contributions de la communauté sont les bienvenues. Le projet accepte activement les commentaires sur les problèmes et les suggestions de fonctionnalités.

Équipe de R&D

  • Laboratoire IPADS de l'Université Jiao Tong de Shanghai : Principale équipe de développement.
  • THUNLP de l'Université Tsinghua : Prise en charge des modèles parcimonieux ReLU.
  • Communauté Open Source : Contributions et améliorations continues.

Impact académique

Les articles de recherche connexes ont été publiés, fournissant une base théorique et des conseils pratiques importants pour le domaine de l'optimisation de l'inférence des grands modèles de langage.

Conclusion

PowerInfer représente une avancée majeure dans la technologie d'inférence locale des grands modèles de langage. Grâce à un mécanisme innovant de neurones chauds et froids et à une architecture hybride CPU/GPU, il parvient à atteindre des performances d'inférence proches du niveau serveur sur du matériel grand public.