DeepSparse ist eine revolutionäre CPU-Inferenz-Runtime, die von Neural Magic entwickelt wurde und speziell darauf ausgelegt ist, die Sparsamkeit von neuronalen Netzen zu nutzen, um den Inferenzprozess von Deep-Learning-Modellen zu beschleunigen. Das Projekt kombiniert die SparseML-Optimierungsbibliothek und erzielt so eine herausragende Inferenzleistung auf CPU-Hardware.
Wichtige Aktualisierung: Im Januar 2025 wurde Neural Magic von Red Hat übernommen. Die DeepSparse-Community-Version wird ab dem 2. Juni 2025 nicht mehr gewartet und eingestellt. Das Team wird auf kommerzielle und Open-Source-Lösungen auf Basis von vLLM umsteigen.
DeepSparse bietet anfängliche Unterstützung für die Inferenz großer Sprachmodelle, einschließlich:
Hinweis: Mac- und Windows-Benutzern wird die Verwendung von Docker Linux-Containern empfohlen
pip install deepsparse
pip install deepsparse-nightly
pip install -U deepsparse-nightly[llm]
pip install -e path/to/deepsparse
Die niedrigste API-Ebene, die ONNX-Modelle direkt kompiliert und Tensor-Ein- und Ausgaben verarbeitet.
from deepsparse import Engine
# Modell herunterladen und kompilieren
zoo_stub = "zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
compiled_model = Engine(model=zoo_stub, batch_size=1)
# Inferenz ausführen
inputs = compiled_model.generate_random_inputs()
output = compiled_model(inputs)
Verpackt die Engine und fügt Vor- und Nachverarbeitungsfunktionen hinzu, um Rohdaten direkt zu verarbeiten.
from deepsparse import Pipeline
# Pipeline einrichten
sentiment_analysis_pipeline = Pipeline.create(
task="sentiment-analysis",
model_path="zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
)
# Inferenz ausführen
prediction = sentiment_analysis_pipeline("I love using DeepSparse Pipelines")
print(prediction)
# Ausgabe: labels=['positive'] scores=[0.9954759478569031]
Verpackt die Pipeline basierend auf FastAPI und bietet einen REST-API-Dienst.
# Server starten
deepsparse.server \
--task sentiment-analysis \
--model_path zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none
# Anfrage senden
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)
# Ausgabe: {"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 sammelt grundlegende Nutzungs-Telemetriedaten zur Analyse der Produktnutzung. Benutzer können dies durch Setzen einer Umgebungsvariablen deaktivieren:
export NM_DISABLE_ANALYTICS=True
Das Projekt basiert auf mehreren wichtigen wissenschaftlichen Arbeiten, darunter:
DeepSparse stellt einen bedeutenden Durchbruch im Bereich der CPU-Inferenzoptimierung dar. Durch innovative Techniken zur Nutzung von Sparsamkeit wird eine beispiellose Deep-Learning-Inferenzleistung auf gewöhnlicher CPU-Hardware erzielt. Obwohl die Community-Version bald eingestellt wird, werden ihre technischen Innovationen und Konzepte mit Unterstützung von Red Hat weiterentwickelt und einen größeren Beitrag zum Bereich der KI-Inferenzoptimierung leisten.