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
Optimieren Sie das Training und die Bereitstellung von Ultralytics YOLOv5-Modellen mit Neural Magic's DeepSparse für GPU-ähnliche Leistung auf CPUs. Erzielen Sie schnellere, skalierbare YOLOv5-Bereitstellungen.
Möchten Sie das Training und die Bereitstellung Ihrer YOLOv5-Modelle beschleunigen? Wir haben die Lösung! Wir stellen Ihnen unseren neuesten Partner Neural Magic vor. Da Neural Magic Softwaretools anbietet, die die maximale Modellleistung und Workflow-Einfachheit betonen, ist es nur natürlich, dass wir zusammengekommen sind, um eine Lösung anzubieten, die den YOLOv5-Bereitstellungsprozess noch besser macht.
DeepSparse ist die CPU-Inferenz-Runtime von Neural Magic, die die Vorteile von Sparsity und Low-Precision-Arithmetik innerhalb neuronaler Netze nutzt, um eine außergewöhnliche Leistung auf Standardhardware zu bieten. Im Vergleich zur ONNX Runtime-Baseline bietet DeepSparse beispielsweise eine 5,8-fache Beschleunigung für YOLOv5s, das auf derselben Maschine läuft!
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.
GPU-Klassen-Performance auf Standard-CPUs erreichen
DeepSparse nutzt die Modellsparsität, um seine Leistungssteigerung zu erzielen.
Sparsifizierung durch Pruning und Quantisierung ermöglicht eine Reduzierung der Größe und des Rechenaufwands, der für die Ausführung eines Netzwerks erforderlich ist, um Größenordnungen, während gleichzeitig eine hohe Genauigkeit erhalten bleibt. DeepSparse ist sich der Sparsity bewusst, überspringt die Multiplizier-Addierer mit Null und reduziert den Rechenaufwand in einem Vorwärtsdurchlauf. Da Sparse-Berechnungen speichergebunden sind, führt DeepSparse das Netzwerk tiefenweise aus und zerlegt das Problem in Tensor-Spalten, d. h. vertikale Berechnungsstreifen, die in den Cache passen.
Sparse Netzwerke mit komprimierter Berechnung, die tiefenweise im Cache ausgeführt werden, ermöglichen es DeepSparse, GPU-ähnliche Leistung auf CPUs zu liefern!
Erstellen einer Sparse-Version von YOLOv5, die mit benutzerdefinierten Daten trainiert wurde
SparseZoo, das Open-Source-Modell-Repository von Neural Magic, enthält vorab mit Sparsifizierung versehene Checkpoints jedes YOLOv5-Modells. Mit SparseML, das in Ultralytics integriert ist, können Sie einen Sparse-Checkpoint mit einem einzigen CLI-Befehl auf Ihre Daten feinabstimmen.
YOLOv5 mit DeepSparse bereitstellen
DeepSparse installieren
Führen Sie Folgendes aus, um DeepSparse zu installieren. Wir empfehlen die Verwendung einer virtuellen Umgebung mit Python.
pip install deepsparse[server,yolo,onnxruntime]
Eine ONNX-Datei sammeln
DeepSparse akzeptiert ein Modell im ONNX-Format, das entweder übergeben wird als:
Ein lokaler Pfad zu einem ONNX-Modell
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:
DeepSparse bietet komfortable APIs für die Integration Ihres Modells in eine Anwendung.
Um die folgenden Deployment-Beispiele auszuprobieren, laden Sie ein Beispielbild für das Beispiel herunter und speichern Sie es mit dem folgenden Befehl als basilica.jpg:
Pipelines umschließen die Vor- und Nachverarbeitung der Ausgabe um die Laufzeit herum und bieten eine saubere Schnittstelle, um DeepSparse zu einer Anwendung hinzuzufügen. Die DeepSparse-Ultralytics-Integration 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 populären FastAPI Web Framework und Uvicorn Web Server. Mit nur einem einzigen CLI-Befehl können Sie einfach einen Model Service Endpoint mit DeepSparse einrichten. Der Server unterstützt jede Pipeline von DeepSparse, einschließlich Objekterkennung mit YOLOv5, wodurch Sie Rohbilder an den Endpoint senden und die Bounding Boxes empfangen können.
Starten Sie den Server mit dem pruned-quantized YOLOv5s:
Eine Beispielanfrage mit dem Python-Paket Requests:
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"]
Annotate CLI
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 Elemente/Sek. mit einem 4-Block pruned-quantized YOLOv5s – ein 3,7-facher Leistungszuwachs gegenüber ONNX Runtime!
Wir bei Ultralytics arbeiten kommerziell mit anderen Startups zusammen, 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.