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 DeepSparse da Neural Magic para desempenho de classe GPU em CPUs. Obtenha implantações YOLOv5 mais rápidas e escaláveis.
Quer acelerar o treinamento e a implantação de seus modelos YOLOv5? Nós temos a solução! Apresentamos nosso mais novo parceiro, Neural Magic. Como a Neural Magic fornece ferramentas de software que enfatizam o desempenho máximo do modelo e a simplicidade do fluxo de trabalho, é natural que nos unamos para oferecer uma solução para tornar o processo de implantação do YOLOv5 ainda melhor.
DeepSparse é o tempo de execução de inferência de CPU da Neural Magic, que aproveita a esparsidade e a aritmética de baixa precisão dentro das redes neurais para oferecer um desempenho excepcional em hardware comum. Por exemplo, em comparação com a linha de base do ONNX Runtime, o DeepSparse oferece uma aceleração de 5,8x para o YOLOv5s em execução 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
Alcance o Desempenho de Classe 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, ignorando as multiplicações-somas 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 de Tensores, 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 de classe GPU em CPUs!
Criar uma versão esparsa do YOLOv5 treinado em dados personalizados
O repositório de modelos de código aberto da Neural Magic, SparseZoo, contém checkpoints pré-esparsificados de cada modelo YOLOv5. Usando o SparseML, que é integrado ao Ultralytics, você pode ajustar um checkpoint esparso em seus dados com um único comando CLI.
Implementar YOLOv5 com DeepSparse
Instalar DeepSparse
Execute o seguinte para instalar o DeepSparse. Recomendamos que você use um ambiente virtual com Python.
pip install deepsparse[server,yolo,onnxruntime]
Coletar um Arquivo ONNX
O DeepSparse aceita um modelo no formato ONNX, transmitido 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:
O DeepSparse oferece APIs convenientes para integrar o seu modelo numa aplicação.
Para experimentar os exemplos de implementação abaixo, obtenha uma imagem de amostra para o exemplo e salve-a como basilica.jpg com o seguinte comando:
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 DeepSparse-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 arquivos local images = ["basilica.jpg"]
# executar a inferência nas imagens, receber bounding boxes + classes pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001) print(pipeline_outputs)
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 a popular framework web FastAPI e o servidor web Uvicorn. Com apenas um único comando da CLI, pode configurar facilmente um endpoint de serviço de modelo com o DeepSparse. O Server suporta qualquer Pipeline do DeepSparse, incluindo a deteção de objetos com o YOLOv5, permitindo-lhe enviar imagens raw para o endpoint e receber as bounding boxes.
Inicie o servidor com o YOLOv5s podado e quantizado:
Um exemplo de solicitação, usando o pacote requests do Python:
import requests, json
# lista de imagens para inferência (arquivos 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"]
Annotate 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!
> Caminho do Modelo Original: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none > 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.
Com batch 1, o DeepSparse atinge 180 itens/seg com um YOLOv5s podado e quantizado de 4 blocos—um ganho de desempenho de 3,7x em relação ao ONNX Runtime!
Na Ultralytics, fazemos parcerias comerciais com outras startups para nos ajudar a financiar a pesquisa e o desenvolvimento das nossas incríveis ferramentas de código aberto, como o YOLOv5, para mantê-las gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.