Ao clicar em “Aceitar todos os cookies”, concorda com o armazenamento de cookies no seu dispositivo para melhorar a navegação no site, analisar a utilização do site e ajudar nos nossos esforços de marketing. Mais informações
Definições de cookies
Ao clicar em “Aceitar todos os cookies”, concorda com o armazenamento de cookies no seu dispositivo para melhorar a navegação no site, analisar a utilização do site e ajudar nos nossos esforços de marketing. Mais informações
Capacite o treinamento e a implantação do modelo Ultralytics YOLOv5 com o DeepSparse da Neural Magic para desempenho GPU em CPUs. Obtenha implantações YOLOv5 mais rápidas e escaláveis.
Pretende acelerar a formação e a implementação do seu YOLOv5 modelos? Nós temos tudo o que precisa! Apresentamos o nosso mais novo parceiro, Neural Magic. Como Neural Magic fornece ferramentas de software que enfatizam o desempenho máximo do modelo e a simplicidade do fluxo de trabalho, é natural que nos juntemos para oferecer uma solução para tornar o processo de implantaçãoYOLOv5 ainda melhor.
DeepSparse é o tempo de execução de inferência de CPU do Neural Magic, que aproveita a esparsidade e a aritmética de baixa precisão dentro das redes neurais para oferecer um desempenho excecional em hardware de commodity. Por exemplo, comparado com a linha de base ONNX Runtime, o DeepSparse oferece um aumento de velocidade de 5,8x para YOLOv5s rodando na mesma máquina!
Pela primeira vez, suas cargas de trabalho de deep learning podem atender às demandas de desempenho da produção sem a complexidade e os custos dos aceleradores de hardware. Simplificando, o DeepSparse oferece o desempenho das GPUs e a simplicidade do software:
Implantações Flexíveis: Execute de forma consistente na nuvem, data center e borda com qualquer provedor de hardware
Escalabilidade Infinita: Escale horizontalmente com Kubernetes padrão, verticalmente para centenas de núcleos ou totalmente abstraído com serverless
Fácil Integração: Use APIs limpas para integrar seu modelo em um aplicativo e monitorá-lo em produção
Obtenha um desempenho GPU em CPUs comuns
O DeepSparse tira partido da esparsidade do modelo para obter o seu aumento de velocidade de desempenho.
A esparsificação por meio de poda e quantização permite reduções de ordem de magnitude no tamanho e na computação necessários para executar uma rede, mantendo alta precisão. O DeepSparse é sensível à esparsidade, pulando as adições de multiplicação por zero e diminuindo a quantidade de computação em uma passagem direta. Como a computação esparsa é limitada pela memória, o DeepSparse executa a rede em profundidade, dividindo o problema em Colunas Tensor , que são faixas verticais de computação que cabem no cache.
Redes esparsas com computação comprimida, executadas em profundidade no cache, permitem que o DeepSparse ofereça desempenho GPU em CPUs!
Criar uma versão esparsa do YOLOv5 treinada em dados personalizados
O repositório de modelos de código aberto da Neural Magic, SparseZoo, contém pontos de verificação pré-esparsificados de cada modelo YOLOv5 . Usando o SparseML, que é integrado ao Ultralytics, é possível ajustar um ponto de verificação esparso em seus dados com um único comando CLI .
Implantar YOLOv5 com DeepSparse
Instalar DeepSparse
Execute o seguinte para instalar o DeepSparse. Recomendamos que você use um ambiente virtual com Python.
pip install deepsparse[serveryolo,onnxruntime]
Recolher um ficheiro ONNX
O DeepSparse aceita um modelo no formato ONNX , passado como:
Um caminho local para um modelo ONNX
Um stub do SparseZoo que identifica um modelo no SparseZoo
Vamos comparar o YOLOv5s denso padrão com o YOLOv5s podado-quantizado, identificado pelos seguintes stubs do SparseZoo:
zoo:ultralytics zoo:ultralytics
Implementar um Modelo
O DeepSparse oferece APIs convenientes para integrar o seu modelo numa aplicação.
Para experimentar os exemplos de implantação abaixo, puxe uma imagem de amostra para o exemplo e salve como basilica.jpg com o seguinte comando:
wget -O basilicabasilicajpg
API Python
Os pipelines envolvem o pré-processamento e o pós-processamento de saída em torno do tempo de execução, fornecendo uma interface limpa para adicionar o DeepSparse a um aplicativo. A integração Ultralytics inclui um Pipeline pronto para uso que aceita imagens brutas e gera as caixas delimitadoras.
Criar um Pipeline e executar a inferência:
from deepsparse import Pipeline
# lista de imagens no sistema de ficheiros local images = [basilica.jpg"]
Se você estiver executando na nuvem, poderá receber um erro de que o open-cv não consegue encontrar o libGL.so.1. Executar o seguinte no Ubuntu o instala:
apt-get install libgl1-mesa-glx
Servidor HTTP
O DeepSparse Server é executado sobre o popular framework web FastAPI e o servidor web Uvicorn. Com apenas um único comando CLI , é possível configurar facilmente um endpoint de serviço de modelo com o DeepSparse. O Servidor suporta qualquer Pipeline do DeepSparse, incluindo deteção de objetos com YOLOv5, permitindo enviar imagens brutas para o endpoint e receber as caixas delimitadoras.
Inicie o servidor com o YOLOv5s podado e quantizado:
Um pedido de exemplo, utilizando o pacote requests do Python:
import requests, json
# lista de imagens para inferência (ficheiros locais no lado do cliente) path = [basilica.jpg'] files = [('request', open(img, 'rb')) for img in path]
# enviar solicitação via HTTP para o endpoint /predict/from_files url = 'http://0.0.0.0:5543/predict/from_files' resp = requests.post(url=url, files=files)
# a resposta é retornada em JSON annotations = json.loads(resp.text) # dicionário de resultados de anotação bounding_boxes = annotations["boxes"] labels = annotations["labels"]
Anotar CLI
Você também pode usar o comando annotate para que o mecanismo salve uma foto anotada no disco. Experimente --source 0 para anotar o feed da sua webcam ao vivo!
Executar o comando acima criará uma pasta annotation-results e salvará a imagem anotada dentro.
Desempenho de Benchmark
Usando o script de benchmarking do DeepSparse, compararemos a taxa de transferência do DeepSparse com a taxa de transferência do ONNX Runtime no YOLOv5s.
Os benchmarks foram executados em uma instância AWS c6i.8xlarge (16 núcleos).
Comparação de Desempenho do Lote 32
Linha de base do tempo de execução ONNX
No lote 32, ONNX tempo de execução ONNX atinge 42 imagens/seg. com os YOLOv5s densos padrão:
> Caminho do modelo original: zoo:ultralytics > Tamanho do lote: 1 > Cenário: sync > Taxa de transferência (itens/seg): 134.9468
Como as instâncias c6i.8xlarge possuem instruções VNNI, o throughput do DeepSparse pode ser ainda mais impulsionado se os pesos forem podados em blocos de 4.
No lote 1, o DeepSparse alcança 180 itens/seg. com um YOLOv5s de 4 blocos com quantização podada - umganho de desempenho de 3,7 vezes em relação ao ONNX Runtime!
Na Ultralytics, estabelecemos parcerias comerciais com outras startups para nos ajudar a financiar a investigação e o desenvolvimento das nossas fantásticas ferramentas de código aberto, como o YOLOv5, para as manter gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.