Indem Sie auf „Alle Cookies akzeptieren“ klicken, stimmen Sie der Speicherung von Cookies auf Ihrem Gerät zu, um die Website-Navigation zu verbessern, die Website-Nutzung zu analysieren und unsere Marketingbemühungen zu unterstützen. Mehr Infos
Cookie-Einstellungen
Indem Sie auf „Alle Cookies akzeptieren“ klicken, stimmen Sie der Speicherung von Cookies auf Ihrem Gerät zu, um die Website-Navigation zu verbessern, die Website-Nutzung zu analysieren und unsere Marketingbemühungen zu unterstützen. Mehr Infos
Verbessern Sie das Training und die Bereitstellung von Ultralytics YOLOv5 mit DeepSparse von Neural Magic für eine Leistung GPU auf CPUs. Erzielen Sie schnellere, skalierbare YOLOv5 .
Sie möchten die Schulung und den Einsatz Ihrer YOLOv5 Modelle beschleunigen? Wir haben das Richtige für Sie! Wir stellen Ihnen unseren neuesten Partner vor: Neural Magic. Da Neural Magic Software-Tools anbietet, die den Schwerpunkt auf höchste Modellleistung und einfache Arbeitsabläufe legen, ist es nur natürlich, dass wir uns zusammengetan haben, um eine Lösung anzubieten, die den YOLOv5 noch besser macht.
DeepSparse ist die CPU von Neural Magic, die die Vorteile der Sparsamkeit und der niedrigpräzisen Arithmetik in neuronalen Netzen nutzt, um eine außergewöhnliche Leistung auf Standardhardware zu bieten. Im Vergleich zur ONNX Runtime-Basisversion bietet DeepSparse beispielsweise eine 5,8-fache Beschleunigung für YOLOv5s, die auf demselben Rechner ausgeführt werden!
Zum ersten Mal können Ihre Deep-Learning-Workloads die Leistungsanforderungen der Produktion erfüllen, ohne die Komplexität und die Kosten von Hardwarebeschleunigern. Einfach ausgedrückt: DeepSparse bietet Ihnen die Leistung von GPUs und die Einfachheit von Software:
Flexible Bereitstellungen: Einheitliche Ausführung in Cloud-, Rechenzentrums- und Edge-Umgebungen mit jedem Hardwareanbieter
Unendliche Skalierbarkeit: Skalieren Sie mit Standard-Kubernetes, vertikal auf Hunderte von Kernen oder vollständig abstrahiert mit Serverless.
Einfache Integration: Verwenden Sie saubere APIs, um Ihr Modell in eine Anwendung zu integrieren und es in der Produktion zu überwachen.
Erzielen Sie GPU auf handelsüblichen CPUs
DeepSparse nutzt die Modellsparsität, um seine Leistungssteigerung zu erzielen.
Die Sparsifizierung durch Pruning und Quantisierung ermöglicht eine Verringerung der Größe und des Rechenaufwands für die Ausführung eines Netzes um Größenordnungen bei gleichbleibend hoher Genauigkeit. DeepSparse ist sparsamkeitsbewusst, überspringt die Multiplikation mit Null und reduziert den Rechenaufwand in einem Vorwärtsdurchlauf. Da Sparse-Berechnungen speichergebunden sind, führt DeepSparse das Netzwerk in der Tiefe aus und unterteilt das Problem in Tensor Columns, vertikale Berechnungsstreifen, die in den Cache passen.
Sparse-Netzwerke mit komprimierter Berechnung, die tiefenweise im Cache ausgeführt werden, ermöglichen DeepSparse eine Leistung GPU auf CPUs!
Erstellen einer spärlichen Version von YOLOv5 , die auf benutzerdefinierten Daten trainiert wurde
Das Open-Source-Modell-Repository von Neural Magic, SparseZoo, enthält vorgesparste Prüfpunkte für jedes YOLOv5 . Mit SparseML, das in Ultralytics integriert ist, können Sie einen Sparse-Checkpoint mit einem einzigen CLI auf Ihre Daten abstimmen.
Einsatz von YOLOv5 mit DeepSparse
DeepSparse installieren
Führen Sie den folgenden Befehl aus, um DeepSparse zu installieren. Wir empfehlen Ihnen, eine virtuelle Umgebung mit Python zu verwenden.
pip install deepsparse[serveryolo,onnxruntime]
Sammeln einer ONNX
DeepSparse akzeptiert ein Modell im ONNX , das entweder als:
Ein lokaler Pfad zu einem ONNX
Ein SparseZoo-Stub, der ein Modell in der SparseZoo identifiziert
Wir werden das standardmäßige dichte YOLOv5s mit dem gestutzten-quantisierten YOLOv5s vergleichen, das durch die folgenden SparseZoo-Stubs identifiziert wird:
zoo:ultralytics zoo:ultralytics
Modell bereitstellen
DeepSparse bietet komfortable APIs für die Integration Ihres Modells in eine Anwendung.
Um die nachstehenden Einsatzbeispiele auszuprobieren, ziehen Sie ein Beispielbild für das Beispiel herunter und speichern es mit dem folgenden Befehl als basilica.jpg:
wget -O basilicabasilicajpg
Python
Pipelines umschließen die Vorverarbeitung und die Nachbearbeitung der Ausgabe um die Laufzeit herum und bieten eine saubere Schnittstelle für das Hinzufügen von DeepSparse zu einer Anwendung. Die Ultralytics umfasst eine sofort einsatzbereite Pipeline, die Rohbilder akzeptiert und die Bounding Boxes ausgibt.
Erstellen Sie eine Pipeline und führen Sie Inferenz aus:
from deepsparse import Pipeline
# Liste der Bilder im lokalen Dateisystem images = [basilica.jpg"]
Wenn Sie in der Cloud arbeiten, erhalten Sie möglicherweise eine Fehlermeldung, dass Open-CV libGL.so.1 nicht finden kann. Die folgende Ausführung unter Ubuntu installiert es:
apt-get install libgl1-mesa-glx
HTTP-Server
DeepSparse Server läuft auf dem beliebten FastAPI Web-Framework und dem Uvicorn Webserver. Mit nur einem einzigen CLI können Sie ganz einfach einen Modellservice-Endpunkt mit DeepSparse einrichten. Der Server unterstützt jede Pipeline von DeepSparse, einschließlich der Objekterkennung mit YOLOv5, so dass Sie Rohbilder an den Endpunkt senden und die Bounding Boxen erhalten können.
Starten Sie den Server mit dem pruned-quantized YOLOv5s:
Eine Beispielanfrage, die das Python requests verwendet:
import requests, json
# Liste der Bilder für die Inferenz (lokale Dateien auf der Client-Seite) path = [basilica.jpg'] files = [('request', open(img, 'rb')) for img in path]
# Anfrage über HTTP an den /predict/from_files-Endpunkt senden url = 'http://0.0.0.0:5543/predict/from_files' resp = requests.post(url=url, files=files)
# Antwort wird in JSON zurückgegeben annotations = json.loads(resp.text) # Dictionary der Annotationsergebnisse bounding_boxes = annotations["boxes"] labels = annotations["labels"]
CLI annotieren
Sie können den Befehl annotate auch verwenden, damit die Engine ein annotiertes Foto auf der Festplatte speichert. Probieren Sie --source 0 aus, um Ihren Live-Webcam-Feed zu annotieren!
Da c6i.8xlarge-Instanzen über VNNI-Anweisungen verfügen, kann der Durchsatz von DeepSparse weiter gesteigert werden, wenn Gewichte in 4er-Blöcken reduziert werden.
Bei Batch 1 erreicht DeepSparse 180 Items/Sek mit einem 4-Block pruned-quantized YOLOv5 - ein3,7-facher Leistungsgewinn gegenüber ONNX Runtime!
Bei Ultralytics gehen wir kommerzielle Partnerschaften mit anderen Start-ups ein, um die Forschung und Entwicklung unserer großartigen Open-Source-Tools wie YOLOv5 zu finanzieren, damit sie für alle kostenlos bleiben. Dieser Artikel kann Affiliate-Links zu diesen Partnern enthalten.