DeepSparse é um runtime de inferência de CPU revolucionário desenvolvido pela Neural Magic, projetado especificamente para aproveitar a esparsidade de redes neurais para acelerar o processo de inferência de modelos de aprendizado profundo. O projeto alcança um desempenho de inferência excepcional em hardware de CPU, combinando-o com a biblioteca de otimização SparseML.
Atualização Importante: Em janeiro de 2025, a Neural Magic foi adquirida pela Red Hat, e a versão da comunidade DeepSparse será descontinuada e desativada em 2 de junho de 2025. A equipe fará a transição para soluções comerciais e de código aberto baseadas em vLLM.
DeepSparse oferece suporte inicial para inferência de grandes modelos de linguagem, incluindo:
Nota: Usuários de Mac e Windows são aconselhados a usar contêineres Docker Linux
pip install deepsparse
pip install deepsparse-nightly
pip install -U deepsparse-nightly[llm]
pip install -e path/to/deepsparse
A API de nível mais baixo, compila diretamente modelos ONNX e lida com entradas e saídas de tensores.
from deepsparse import Engine
# Baixar e compilar o modelo
zoo_stub = "zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
compiled_model = Engine(model=zoo_stub, batch_size=1)
# Executar a inferência
inputs = compiled_model.generate_random_inputs()
output = compiled_model(inputs)
Empacota o Engine e adiciona recursos de pré-processamento e pós-processamento, pode lidar diretamente com dados brutos.
from deepsparse import Pipeline
# Configurar o pipeline
sentiment_analysis_pipeline = Pipeline.create(
task="sentiment-analysis",
model_path="zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none"
)
# Executar a inferência
prediction = sentiment_analysis_pipeline("I love using DeepSparse Pipelines")
print(prediction)
# Saída: labels=['positive'] scores=[0.9954759478569031]
Empacota o Pipeline com base no FastAPI, fornecendo um serviço de API REST.
# Iniciar o servidor
deepsparse.server \
--task sentiment-analysis \
--model_path zoo:nlp/sentiment_analysis/obert-base/pytorch/huggingface/sst2/pruned90_quant-none
# Enviar a solicitação
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)
# Saída: {"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 coleta dados básicos de telemetria de uso para análise de uso do produto. Os usuários podem desativar definindo uma variável de ambiente:
export NM_DISABLE_ANALYTICS=True
O projeto é baseado em vários artigos acadêmicos importantes, incluindo:
DeepSparse representa um avanço significativo no campo da otimização de inferência de CPU, alcançando um desempenho de inferência de aprendizado profundo sem precedentes em hardware de CPU comum por meio de técnicas inovadoras de utilização de esparsidade. Embora a versão da comunidade esteja prestes a ser descontinuada, suas inovações e conceitos técnicos continuarão a evoluir com o apoio da Red Hat, contribuindo ainda mais para o campo da otimização de inferência de IA.