DeepSparse es un revolucionario runtime de inferencia para CPU desarrollado por Neural Magic, diseñado específicamente para aprovechar la esparsidad de las redes neuronales y acelerar el proceso de inferencia de modelos de aprendizaje profundo. Este proyecto, al combinarse con la biblioteca de optimización SparseML, logra un rendimiento de inferencia excepcional en hardware de CPU.
Actualización Importante: En enero de 2025, Neural Magic fue adquirida por Red Hat. La versión comunitaria de DeepSparse dejará de recibir mantenimiento y será descontinuada el 2 de junio de 2025. El equipo se centrará en soluciones comerciales y de código abierto basadas en vLLM.
DeepSparse proporciona soporte inicial para la inferencia de modelos de lenguaje grandes, incluyendo:
Nota: Se recomienda a los usuarios de Mac y Windows utilizar contenedores Docker Linux.
pip install deepsparse
pip install deepsparse-nightly
pip install -U deepsparse-nightly[llm]
pip install -e path/to/deepsparse
La API de nivel más bajo, compila directamente modelos ONNX y maneja la entrada y salida de tensores.
from deepsparse import Engine
# Descargar y compilar el modelo
zoo_stub = "zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
compiled_model = Engine(model=zoo_stub, batch_size=1)
# Ejecutar la inferencia
inputs = compiled_model.generate_random_inputs()
output = compiled_model(inputs)
Envuelve Engine y agrega funciones de preprocesamiento y postprocesamiento, puede manejar directamente datos sin procesar.
from deepsparse import Pipeline
# Configurar el pipeline
sentiment_analysis_pipeline = Pipeline.create(
task="sentiment-analysis",
model_path="zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
)
# Ejecutar la inferencia
prediction = sentiment_analysis_pipeline("I love using DeepSparse Pipelines")
print(prediction)
# Salida: labels=['positive'] scores=[0.9954759478569031]
Envuelve Pipeline basado en FastAPI, proporcionando un servicio REST API.
# Iniciar el servidor
deepsparse.server \
--task sentiment-analysis \
--model_path zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none
# Enviar la solicitud
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)
# Salida: {"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 recopila datos telemétricos básicos de uso para el análisis del uso del producto. Los usuarios pueden deshabilitarlo configurando la variable de entorno:
export NM_DISABLE_ANALYTICS=True
Este proyecto se basa en varios artículos académicos importantes, incluyendo:
DeepSparse representa un avance significativo en el campo de la optimización de la inferencia en CPU. A través de técnicas innovadoras de utilización de la esparsidad, logra un rendimiento de inferencia de aprendizaje profundo sin precedentes en hardware de CPU común. Aunque la versión comunitaria está a punto de dejar de recibir mantenimiento, su innovación tecnológica e ideas continuarán desarrollándose con el apoyo de Red Hat, contribuyendo aún más al campo de la optimización de la inferencia de IA.