Scopri YOLO26: vision AI di prossima generazione.
Ultralytics
Integrazioni

Effettua il deployment di YOLOv5 di Ultralytics con DeepSparse di Neural Magic per prestazioni di classe GPU sulle CPU

Potenzia l'addestramento e il deployment del modello YOLOv5 di Ultralytics con DeepSparse di Neural Magic per prestazioni di classe GPU sulle CPU. Ottieni deployment di YOLOv5 più veloci e scalabili.

NUNuvola Ladi5 min read
Effettuare il deployment di YOLOv5 di Ultralytics con DeepSparse di Neural Magic sulle CPU

Vuoi accelerare l'addestramento e la distribuzione dei tuoi modelli YOLOv5? Abbiamo quello che fa per te! Ti presentiamo il nostro nuovo partner, Neural Magic. Dato che Neural Magic fornisce strumenti software che enfatizzano le prestazioni massime del modello e la semplicità del flusso di lavoro, è naturale che ci siamo uniti per offrire una soluzione per rendere il processo di distribuzione di YOLOv5 ancora migliore.

DeepSparse è il runtime di inferenza CPU di Neural Magic, che sfrutta la sparsità e l'aritmetica a bassa precisione all'interno delle reti neurali per offrire prestazioni eccezionali su hardware commerciale. Ad esempio, rispetto al baseline di ONNX Runtime, DeepSparse offre una velocità 5,8 volte superiore per YOLOv5s in esecuzione sulla stessa macchina!

Confronto del throughput di YOLOv5 con DeepSparse

Per la prima volta, i tuoi carichi di lavoro di deep learning possono soddisfare le esigenze prestazionali della produzione senza la complessità e i costi degli acceleratori hardware. In poche parole, DeepSparse ti offre le prestazioni delle GPU e la semplicità del software:

  1. Distribuzioni flessibili: esegui in modo coerente su cloud, data center ed edge con qualsiasi fornitore di hardware
  2. Scalabilità infinita: scala con Kubernetes standard, verticalmente fino a centinaia di core o in modo completamente astratto con il serverless
  3. Integrazione semplice: utilizza API pulite per integrare il tuo modello in un'applicazione e monitorarlo in produzione

Link to this sectionOttieni prestazioni di classe GPU su CPU commerciali#

DeepSparse sfrutta la sparsità del modello per ottenere il suo incremento di velocità nelle prestazioni.

La sparsificazione tramite pruning e quantizzazione consente riduzioni di ordini di grandezza nelle dimensioni e nel calcolo necessari per eseguire una rete, mantenendo al contempo un'elevata precisione. DeepSparse è consapevole della sparsità, saltando le operazioni di moltiplicazione-addizione per zero e riducendo la quantità di calcolo in un passaggio in avanti. Poiché il calcolo sparso è limitato dalla memoria, DeepSparse esegue la rete in profondità, suddividendo il problema in colonne di tensori (Tensor Columns), che sono strisce verticali di calcolo che si adattano alla cache.

Rete DeepSparse e Ultralytics YOLOv5

Le reti sparse con calcolo compresso, eseguite in profondità nella cache, consentono a DeepSparse di offrire prestazioni di classe GPU su CPU!

Link to this sectionCrea una versione sparsa di YOLOv5 addestrata su dati personalizzati#

Il repository di modelli open source di Neural Magic, SparseZoo, contiene checkpoint pre-sparsificati di ogni modello YOLOv5. Utilizzando SparseML, che è integrato con Ultralytics, puoi mettere a punto un checkpoint sparso sui tuoi dati con un singolo comando CLI.

Link to this sectionDistribuisci YOLOv5 con DeepSparse#

Link to this sectionInstalla DeepSparse#

Esegui quanto segue per installare DeepSparse. Ti consigliamo di utilizzare un ambiente virtuale con Python.

pip install deepsparse[server,yolo,onnxruntime]

Link to this sectionOttieni un file ONNX#

DeepSparse accetta un modello nel formato ONNX, passato come:

  • Un percorso locale a un modello ONNX
  • Uno stub SparseZoo che identifica un modello in SparseZoo

Confronteremo il YOLOv5s denso standard con il YOLOv5s potato e quantizzato, identificato dai seguenti stub SparseZoo:

zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Link to this sectionDistribuisci un modello#

DeepSparse offre pratiche API per integrare il tuo modello in un'applicazione.

Per provare gli esempi di distribuzione qui sotto, scarica un'immagine campione per l'esempio e salvala come basilica.jpg con il seguente comando:

wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpg

Link to this sectionPython API#

Le pipeline avvolgono la pre-elaborazione e la post-elaborazione dell'output attorno al runtime, fornendo un'interfaccia pulita per aggiungere DeepSparse a un'applicazione. L'integrazione DeepSparse-Ultralytics include una Pipeline pronta all'uso che accetta immagini grezze e restituisce i bounding box.

Crea una Pipeline ed esegui l'inferenza:

from deepsparse import Pipeline

# list of images in local filesystem
images = ["basilica.jpg"]

# create Pipeline
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
    task="yolo",
    model_path=model_stub,
)

# run inference on images, receive bounding boxes + classes
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

Se stai eseguendo nel cloud, potresti ricevere un errore perché open-cv non riesce a trovare libGL.so.1. Eseguire quanto segue su Ubuntu lo installerà:

apt-get install libgl1-mesa-glx

Link to this sectionHTTP Server#

DeepSparse Server funziona sopra il popolare framework web FastAPI e il server web Uvicorn. Con un solo comando CLI, puoi facilmente configurare un endpoint di servizio del modello con DeepSparse. Il Server supporta qualsiasi Pipeline di DeepSparse, inclusa la rilevazione oggetti con YOLOv5, permettendoti di inviare immagini grezze all'endpoint e ricevere i bounding box.

Avvia il Server con il YOLOv5s potato-quantizzato:

deepsparse.server \
  --task yolo \
  --model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Un esempio di richiesta, utilizzando il pacchetto requests di Python:

import requests, json

# list of images for inference (local files on client side)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# send request over HTTP to /predict/from_files endpoint
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# response is returned in JSON
annotations = json.loads(resp.text)  # dictionary of annotation results
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

Link to this sectionAnnotate CLI#

Puoi anche utilizzare il comando annotate per far sì che il motore salvi una foto annotata su disco. Prova --source 0 per annotare il feed della tua webcam in diretta!

deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg

L'esecuzione del comando sopra creerà una cartella annotation-results e salverà l'immagine annotata al suo interno.

Basilica annotata con YOLOv5

Link to this sectionBenchmark delle prestazioni#

Utilizzando lo script di benchmarking di DeepSparse, confronteremo il throughput di DeepSparse con quello di ONNX Runtime su YOLOv5s.

I benchmark sono stati eseguiti su un'istanza AWS c6i.8xlarge (16 core).

Link to this sectionConfronto delle prestazioni batch 32#

Link to this sectionONNX Runtime Baseline#

Al batch 32, ONNX Runtime raggiunge 42 immagini/sec con il YOLOv5s denso standard:

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime

Percorso modello originale: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Dimensione batch: 32 Scenario: sync Throughput (elementi/sec): 41,9025

Link to this sectionPrestazioni DeepSparse denso#

Mentre DeepSparse offre le sue migliori prestazioni con modelli sparsi ottimizzati, funziona bene anche con il YOLOv5s denso standard.

Al batch 32, DeepSparse raggiunge 70 immagini/sec con il YOLOv5s denso standard: un miglioramento delle prestazioni di 1,7 volte rispetto a ORT!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1

Percorso modello originale: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Dimensione batch: 32 Scenario: sync Throughput (elementi/sec): 69,5546

Link to this sectionPrestazioni DeepSparse sparso#

Quando la sparsità viene applicata al modello, i guadagni di prestazioni di DeepSparse rispetto a ONNX Runtime sono ancora più forti.

Al batch 32, DeepSparse raggiunge 241 immagini/sec con il YOLOv5s potato-quantizzato: un miglioramento delle prestazioni di 5,8 volte rispetto a ORT!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

Percorso modello originale: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Dimensione batch: 32 Scenario: sync Throughput (elementi/sec): 241,2452

Link to this sectionConfronto delle prestazioni batch 1#

DeepSparse è anche in grado di ottenere un incremento di velocità rispetto a ONNX Runtime per lo scenario batch 1, sensibile alla latenza.

Link to this sectionONNX Runtime Baseline#

Al batch 1, ONNX Runtime raggiunge 48 immagini/sec con il YOLOv5s denso standard.

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime

Percorso modello originale: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Dimensione batch: 1 Scenario: sync Throughput (elementi/sec): 48,0921

Link to this sectionPrestazioni DeepSparse sparso#

Quando la sparsità viene applicata al modello, i guadagni di prestazioni di DeepSparse rispetto a ONNX Runtime sono ancora più forti.

Al batch 1, DeepSparse raggiunge 135 immagini/sec con il YOLOv5s potato-quantizzato: un miglioramento delle prestazioni di 2,8 volte rispetto a ONNX Runtime!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1

Percorso modello originale: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Dimensione batch: 1 Scenario: sync Throughput (elementi/sec): 134,9468

Dato che le istanze c6i.8xlarge dispongono di istruzioni VNNI, il throughput di DeepSparse può essere spinto ulteriormente se i pesi vengono potati in blocchi di 4.

Al batch 1, DeepSparse raggiunge 180 elementi/sec con un YOLOv5s potato-quantizzato a 4 blocchi: un guadagno di prestazioni di 3,7 volte rispetto a ONNX Runtime!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1

Percorso modello originale: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Dimensione batch: 1 Scenario: sync Throughput (elementi/sec): 179,7375

E voilà! Sei pronto a ottimizzare la tua distribuzione di YOLOv5 con DeepSparse.

Link to this sectionInizia con YOLOv5 e DeepSparse#

Per entrare in contatto con noi, unisciti alla nostra community e lasciaci le tue domande e i tuoi commenti. Dai un'occhiata al repository Ultralytics YOLOv5 e alla documentazione completa di Neural Magic per la distribuzione di YOLOv5.

In Ultralytics, collaboriamo commercialmente con altre startup per aiutarci a finanziare la ricerca e lo sviluppo dei nostri fantastici strumenti open source, come YOLOv5, per mantenerli gratuiti per tutti. Questo articolo potrebbe contenere link di affiliazione a tali partner.

Explore solutions

Real-time AI that works with your team

AI nella Robotica

Potenzia macchine più intelligenti con i modelli Ultralytics YOLO. La Vision AI nella robotica guida la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Real-time AI that works with your team

IA nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. La Vision AI abilita l'ispezione dei pacchi, lo smistamento, il tracciamento dei veicoli e il monitoraggio della sicurezza in magazzino in tempo reale.
Scopri di più
Real-time AI that works with your team

AI nel settore Retail

Reimmagina il retail con i modelli Ultralytics YOLO. La Vision AI alimenta il tracciamento dell'inventario, il monitoraggio degli scaffali, la gestione delle code e insight più intelligenti sui clienti.
Scopri di più
Real-time AI that works with your team

IA nel settore sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. La vision AI nella sanità potenzia l'imaging medico più rapido, diagnosi più intelligenti e il monitoraggio dei pazienti.
Scopri di più
Real-time AI that works with your team

IA nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La Vision AI guida il controllo qualità, il rilevamento dei difetti, la conformità ai DPI e l'automazione della linea di assemblaggio.
Scopri di più
Real-time AI that works with your operation

AI nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La vision AI migliora la sicurezza stradale, l'assistenza alla guida e l'automazione dei veicoli per strade più intelligenti.
Scopri di più
Real-time AI tailored to your operation

AI in Agricoltura

Porta la vision AI nell'agricoltura intelligente con i modelli Ultralytics YOLO. Potenzia il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per rese più elevate e intelligenti.
Scopri di più
Real-time AI that works with your team

AI nella Robotica

Potenzia macchine più intelligenti con i modelli Ultralytics YOLO. La Vision AI nella robotica guida la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Real-time AI that works with your team

IA nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. La Vision AI abilita l'ispezione dei pacchi, lo smistamento, il tracciamento dei veicoli e il monitoraggio della sicurezza in magazzino in tempo reale.
Scopri di più
Real-time AI that works with your team

AI nel settore Retail

Reimmagina il retail con i modelli Ultralytics YOLO. La Vision AI alimenta il tracciamento dell'inventario, il monitoraggio degli scaffali, la gestione delle code e insight più intelligenti sui clienti.
Scopri di più
Real-time AI that works with your team

IA nel settore sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. La vision AI nella sanità potenzia l'imaging medico più rapido, diagnosi più intelligenti e il monitoraggio dei pazienti.
Scopri di più
Real-time AI that works with your team

IA nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La Vision AI guida il controllo qualità, il rilevamento dei difetti, la conformità ai DPI e l'automazione della linea di assemblaggio.
Scopri di più
Real-time AI that works with your operation

AI nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La vision AI migliora la sicurezza stradale, l'assistenza alla guida e l'automazione dei veicoli per strade più intelligenti.
Scopri di più
Real-time AI tailored to your operation

AI in Agricoltura

Porta la vision AI nell'agricoltura intelligente con i modelli Ultralytics YOLO. Potenzia il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per rese più elevate e intelligenti.
Scopri di più
Real-time AI that works with your team

AI nella Robotica

Potenzia macchine più intelligenti con i modelli Ultralytics YOLO. La Vision AI nella robotica guida la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Real-time AI that works with your team

IA nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. La Vision AI abilita l'ispezione dei pacchi, lo smistamento, il tracciamento dei veicoli e il monitoraggio della sicurezza in magazzino in tempo reale.
Scopri di più
Real-time AI that works with your team

AI nel settore Retail

Reimmagina il retail con i modelli Ultralytics YOLO. La Vision AI alimenta il tracciamento dell'inventario, il monitoraggio degli scaffali, la gestione delle code e insight più intelligenti sui clienti.
Scopri di più
Real-time AI that works with your team

IA nel settore sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. La vision AI nella sanità potenzia l'imaging medico più rapido, diagnosi più intelligenti e il monitoraggio dei pazienti.
Scopri di più
Real-time AI that works with your team

IA nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La Vision AI guida il controllo qualità, il rilevamento dei difetti, la conformità ai DPI e l'automazione della linea di assemblaggio.
Scopri di più
Real-time AI that works with your operation

AI nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La vision AI migliora la sicurezza stradale, l'assistenza alla guida e l'automazione dei veicoli per strade più intelligenti.
Scopri di più
Real-time AI tailored to your operation

AI in Agricoltura

Porta la vision AI nell'agricoltura intelligente con i modelli Ultralytics YOLO. Potenzia il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per rese più elevate e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'AI!

Inizia il tuo viaggio con il futuro del machine learning