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.
DeepSparse offre une prise en charge initiale de l'inférence des grands modèles de langage, notamment :
Remarque : Les utilisateurs de Mac et Windows sont invités à utiliser des conteneurs Docker Linux
pip install deepsparse
pip install deepsparse-nightly
pip install -U deepsparse-nightly[llm]
pip install -e path/to/deepsparse
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)
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]
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]}
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)
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
Ce projet est basé sur plusieurs articles académiques importants, notamment :
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.