Home
Login

Runtime d'inférence d'apprentissage profond sensible à la parcimonie, conçu spécifiquement pour les CPU

NOASSERTIONPython 3.2kneuralmagicdeepsparse Last Updated: 2025-06-02

DeepSparse - Moteur d'inférence d'apprentissage profond sensible à la sparsité, conçu pour les CPU

Aperçu du projet

DeepSparse est un moteur d'exécution d'inférence CPU révolutionnaire développé par Neural Magic, spécialement conçu pour exploiter la sparsité des réseaux neuronaux afin d'accélérer le processus d'inférence des modèles d'apprentissage profond. Ce projet, en combinant la bibliothèque d'optimisation SparseML, permet d'obtenir des performances d'inférence exceptionnelles sur le matériel CPU.

Mise à jour importante : En janvier 2025, Neural Magic a été acquis par Red Hat. La version communautaire de DeepSparse cessera d'être maintenue et sera abandonnée le 2 juin 2025. L'équipe se tournera vers des solutions commerciales et open source basées sur vLLM.

Caractéristiques principales

1. Optimisation de la sparsité

  • Prise en charge des noyaux sparses : Accélération et économie de mémoire grâce aux poids sparses non structurés
  • Quantification 8 bits : Prise en charge de la quantification 8 bits des poids et des activations
  • Optimisation du cache : Utilisation efficace des paires clé-valeur d'attention mises en cache, minimisant les déplacements de mémoire

2. Prise en charge des grands modèles de langage (LLM)

DeepSparse offre une prise en charge initiale de l'inférence des grands modèles de langage, notamment :

  • Techniques de fine-tuning sparse pour le modèle MPT-7B
  • Performances d'accélération 7 fois supérieures à la base de référence dense (modèle sparse-quantifié)
  • Prise en charge des modèles avec une sparsité allant jusqu'à 60 % sans perte de précision

3. Large prise en charge des modèles

  • Vision par ordinateur : ResNet, EfficientNet, YOLOv5/8, ViT, etc.
  • Traitement du langage naturel : BERT, variantes de Transformer, etc.
  • Modèles multimodaux : Prise en charge de diverses architectures CNN et Transformer

Configuration système requise

Prise en charge matérielle

  • Architecture x86 : AVX2, AVX-512, AVX-512 VNNI
  • Architecture ARM : v8.2+

Environnement logiciel

  • Système d'exploitation : Linux
  • Version de Python : 3.8-3.11
  • Prise en charge d'ONNX : Versions 1.5.0-1.15.0, ensemble d'opérations version 11 ou supérieure

Remarque : Les utilisateurs de Mac et Windows sont invités à utiliser des conteneurs Docker Linux

Installation

Version stable

pip install deepsparse

Version de développement nocturne (contenant les dernières fonctionnalités)

pip install deepsparse-nightly

Version avec prise en charge LLM

pip install -U deepsparse-nightly[llm]

Installation à partir des sources

pip install -e path/to/deepsparse

Trois API de déploiement

1. Engine API (API de bas niveau)

API de niveau le plus bas, compile directement les modèles ONNX et traite les entrées/sorties de tenseurs.

from deepsparse import Engine

# Télécharger et compiler le modèle
zoo_stub = "zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
compiled_model = Engine(model=zoo_stub, batch_size=1)

# Exécuter l'inférence
inputs = compiled_model.generate_random_inputs()
output = compiled_model(inputs)

2. Pipeline API (API de niveau intermédiaire)

Encapsule Engine et ajoute des fonctionnalités de prétraitement et de post-traitement, peut traiter directement les données brutes.

from deepsparse import Pipeline

# Configurer le pipeline
sentiment_analysis_pipeline = Pipeline.create(
    task="sentiment-analysis",
    model_path="zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
)

# Exécuter l'inférence
prediction = sentiment_analysis_pipeline("I love using DeepSparse Pipelines")
print(prediction)
# Output: labels=['positive'] scores=[0.9954759478569031]

3. Server API (API de haut niveau)

Encapsule Pipeline basé sur FastAPI, fournit un service d'API REST.

# Démarrer le serveur
deepsparse.server \
    --task sentiment-analysis \
    --model_path zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none
# Envoyer une requête
import requests

url = "http://localhost:5543/v2/models/sentiment_analysis/infer"
obj = {"sequences": "Snorlax loves my Tesla!"}
response = requests.post(url, json=obj)
print(response.text)
# Output: {"labels":["positive"],"scores":[0.9965094327926636]}

Exemple de grand modèle de langage

from deepsparse import TextGeneration

pipeline = TextGeneration(model="zoo:mpt-7b-dolly_mpt_pretrain-pruned50_quantized")
prompt = """
Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction: what is sparsity?
### Response:
"""

result = pipeline(prompt, max_new_tokens=75)
print(result.generations[0].text)

Avantages techniques

1. Technique de fine-tuning sparse

  • Technologie innovante développée en collaboration avec IST Austria
  • Élague MPT-7B à 60 % de sparsité pendant le fine-tuning
  • Accélération significative sans perte de précision

2. Optimisation des performances

  • Performances d'inférence de niveau GPU sur CPU
  • Réduction significative de l'utilisation de la mémoire
  • Prise en charge des modèles sparse-quantifiés hautement optimisés

3. Intégration de l'écosystème

  • Intégration transparente avec la bibliothèque d'optimisation SparseML
  • La bibliothèque de modèles SparseZoo fournit des modèles pré-optimisés
  • Prise en charge de divers scénarios de déploiement

Cas d'utilisation

  • Edge Computing : Déploiement de modèles d'IA haute performance dans des environnements aux ressources limitées
  • Inférence dans le cloud : Réduction des coûts du cloud computing, amélioration de l'efficacité de l'inférence
  • Applications en temps réel : Applications d'IA en temps réel nécessitant une faible latence
  • Déploiement à grande échelle : Environnements de production nécessitant le traitement de requêtes d'inférence à forte concurrence

Confidentialité et analyse

DeepSparse collecte des données de télémétrie d'utilisation de base pour l'analyse de l'utilisation du produit. Les utilisateurs peuvent désactiver cette fonctionnalité en définissant la variable d'environnement :

export NM_DISABLE_ANALYTICS=True

Références académiques

Ce projet est basé sur plusieurs articles académiques importants, notamment :

  • Sparse Fine-Tuning for Inference Acceleration of Large Language Models (2023)
  • The Optimal BERT Surgeon: Scalable and Accurate Second-Order Pruning (2022)
  • Inducing and Exploiting Activation Sparsity for Fast Inference (ICML 2020)

Conclusion

DeepSparse représente une avancée significative dans le domaine de l'optimisation de l'inférence CPU. Grâce à des techniques innovantes d'exploitation de la sparsité, il permet d'obtenir des performances d'inférence d'apprentissage profond sans précédent sur du matériel CPU ordinaire. Bien que la version communautaire soit sur le point d'être abandonnée, ses innovations techniques et ses concepts continueront d'évoluer avec le soutien de Red Hat, contribuant ainsi davantage au domaine de l'optimisation de l'inférence de l'IA.

Star History Chart