TensorRT-Export für YOLO26-Modelle#
Das Bereitstellen von computer vision-Modellen in Leistungsumgebungen kann ein Format erfordern, das Geschwindigkeit und Effizienz maximiert. Dies gilt insbesondere dann, wenn du dein Modell auf NVIDIA-GPUs bereitstellst.
Durch die Nutzung des TensorRT-Exportformats kannst du deine Ultralytics YOLO26-Modelle für eine schnelle und effiziente Inferenz auf NVIDIA-Hardware optimieren. Diese Anleitung bietet dir leicht verständliche Schritte für den Konvertierungsprozess und hilft dir, die fortschrittliche Technologie von NVIDIA optimal in deinen deep learning-Projekten zu nutzen.
TensorRT#
TensorRT, entwickelt von NVIDIA, ist ein fortschrittliches Software Development Kit (SDK) für die Hochgeschwindigkeits-Deep-Learning-Inferenz. Es eignet sich hervorragend für Echtzeitanwendungen wie die object detection.
Dieses Toolkit optimiert Deep-Learning-Modelle für NVIDIA GPUs und führt zu schnelleren sowie effizienteren Abläufen. TensorRT-Modelle durchlaufen eine TensorRT-Optimierung, die Techniken wie Layer-Fusion, Präzisionskalibrierung (INT8 und FP16), dynamisches Tensor-Speichermanagement und Kernel-Auto-Tuning umfasst. Die Konvertierung von Deep-Learning-Modellen in das TensorRT-Format ermöglicht es Entwicklern, das volle Potenzial von NVIDIA GPUs auszuschöpfen.
TensorRT ist bekannt für seine Kompatibilität mit verschiedenen Modellformaten, darunter TensorFlow, PyTorch und ONNX, und bietet Entwicklern eine flexible Lösung zur Integration und Optimierung von Modellen aus unterschiedlichen Frameworks. Diese Vielseitigkeit ermöglicht eine effiziente model deployment über diverse Hard- und Softwareumgebungen hinweg.
TensorRT profiliert und stimmt eine Engine auf ihrer Build-GPU ab. Erstelle sie für die Ziel-GPU-Architektur und passe die TensorRT/CUDA-Laufzeitumgebung an; betrachte eine .engine-Datei nicht als portables Modellformat. Für die Edge-Bereitstellung bietet die Ultralytics Platform acht Jetson-Zielauswahlen, bei denen der physische Build- und Validierungsstatus für jede dokumentiert ist, oder du kannst sie lokal auf dem Zielgerät exportieren.
Hauptmerkmale von TensorRT-Modellen#
TensorRT-Modelle bieten eine Reihe wichtiger Funktionen, die zu ihrer Effizienz und Effektivität bei der Hochgeschwindigkeits-Deep-Learning-Inferenz beitragen:
-
Präzisionskalibrierung: TensorRT unterstützt die Präzisionskalibrierung, wodurch Modelle für spezifische Genauigkeitsanforderungen feinabgestimmt werden können. Dies beinhaltet die Unterstützung für Formate mit reduzierter Präzision wie INT8 und FP16, die die Inferenzgeschwindigkeit weiter steigern können, während ein akzeptables Genauigkeitsniveau erhalten bleibt.
-
Layer Fusion: Der TensorRT-Optimierungsprozess umfasst das Zusammenlegen von Layern, bei dem mehrere Schichten eines neural network zu einer einzigen Operation kombiniert werden. Dies reduziert den Rechenaufwand und verbessert die Inferenzgeschwindigkeit, indem Speicherzugriffe und Berechnungen minimiert werden.
-
Dynamisches Tensor-Speichermanagement: TensorRT verwaltet die Tensorspeichernutzung während der Inferenz effizient, reduziert den Speicher-Overhead und optimiert die Speicherzuweisung. Dies führt zu einer effizienteren GPU-Speichernutzung.
-
Automatisches Kernel-Tuning: TensorRT wendet automatisches Kernel-Tuning an, um den am besten optimierten GPU-Kernel für jede Schicht des Modells auszuwählen. Dieser adaptive Ansatz stellt sicher, dass das Modell die Rechenleistung der GPU optimal ausnutzt.
Bereitstellungsoptionen in TensorRT#
Bevor wir uns den Code für den Export von YOLO26-Modellen in das TensorRT-Format ansehen, wollen wir verstehen, wo TensorRT-Modelle normalerweise verwendet werden.
TensorRT bietet mehrere Bereitstellungsoptionen, wobei jede Option das Gleichgewicht zwischen Integrationsfreundlichkeit, Leistungsoptimierung und Flexibilität unterschiedlich gewichtet:
- Bereitstellung in TensorFlow: Diese Methode integriert TensorRT in TensorFlow, sodass optimierte Modelle in einer vertrauten TensorFlow-Umgebung ausgeführt werden können. Sie ist nützlich für Modelle mit einer Mischung aus unterstützten und nicht unterstützten Schichten, da TF-TRT diese effizient verarbeiten kann.
-
Eigenständige TensorRT-Runtime-API: Bietet eine granulare Steuerung und ist ideal für leistungskritische Anwendungen. Sie ist komplexer, ermöglicht jedoch die benutzerdefinierte Implementierung nicht unterstützter Operatoren.
-
NVIDIA Triton Inference Server: Eine Option, die Modelle verschiedener Frameworks unterstützt. Sie ist besonders für Cloud- oder Edge-Inferenz geeignet und bietet Funktionen wie gleichzeitige Modellausführung und Modellanalyse.
Unterstützte Aufgaben#
Der TensorRT-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Familie, die diese Köpfe bereitstellt.
Exportieren von YOLO26-Modellen nach TensorRT#
Du kannst die Ausführungseffizienz verbessern und die Leistung optimieren, indem du YOLO26-Modelle in das TensorRT-Format konvertierst.
Installation#
Um das erforderliche Paket zu installieren, führe Folgendes aus:
# Install the required package for YOLO26
pip install ultralyticsDetaillierte Anweisungen und Best Practices zum Installationsprozess findest du in unserer YOLO26-Installationsanleitung. Solltest du bei der Installation der erforderlichen Pakete für YOLO26 auf Schwierigkeiten stoßen, ziehe unsere Anleitung für häufige Probleme für Lösungen und Tipps heran.
Verwendung#
Bevor du in die Nutzungshinweise eintauchst, solltest du dir unbedingt die Reihe der von Ultralytics angebotenen YOLO26-Modelle ansehen. Dies hilft dir dabei, das am besten geeignete Modell für deine Projektanforderungen auszuwählen.
Das TensorRT-Format unterstützt die Modi Export, Predict und Validate. Für Inferenz und Validierung ist eine NVIDIA-GPU erforderlich. Exportiere dein Modell und lade es anschließend, um die Inferenz auszuführen oder seine Genauigkeit zu validieren.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Export-Argumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'engine' | Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen definiert. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein. |
quantize | int oder str | None | Quantisierungspräzision: 16 (FP16) oder 8 (INT8/PTQ; erfordert Kalibrierung data/fraction); 32/nicht gesetzt ist FP32. Ersetzt die veralteten Flags half/int8. |
dynamic | bool | False | Ermöglicht dynamische Eingabegrößen, was die Flexibilität bei der Verarbeitung variierender Bilddimensionen erhöht. |
simplify | bool | True | Vereinfacht den Modellgraphen mit onnxslim, wodurch möglicherweise Leistung und Kompatibilität verbessert werden. |
opset | int | None | Gibt die ONNX opset-Version für den zwischengeschalteten ONNX-Graph an. Falls nicht festgelegt, wird die neueste unterstützte Version verwendet. |
workspace | float oder None | None | Legt die maximale Arbeitsbereichsgröße in GiB für TensorRT-Optimierungen fest und gleicht dabei Speicherauslastung und Leistung aus; verwende None für die automatische Zuweisung durch TensorRT bis zum Gerätemaximum. |
nms | bool | False | Fügt Non-Maximum Suppression (NMS) hinzu, was für eine genaue und effiziente Detektions-Nachbearbeitung unerlässlich ist. |
batch | int | 1 | Legt die Batch-Inferenzgröße des exportierten Modells fest oder die maximale Anzahl an Bildern, die das exportierte Modell im Modus predict gleichzeitig verarbeitet. |
data | str | None | Pfad zum dataset-YAML, das für die Quantisierung unerlässlich ist; für die Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name verwendet. Wenn dies bei quantize=8 weggelassen wird, wählt Ultralytics das Standard-Kalibrierungs-Dataset für die Modellaufgabe aus. |
fraction | float, int oder list | 1.0 | Kalibrierungs-Teilmenge als Verhältnis, Bildanzahl oder [train, val]-Verhältnisse/-Anzahlen; eine Liste schränkt train oder val ein, während test vollständig bleibt. |
device | str | None | Gibt das Gerät für den Export an: GPU (device=0), DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1). |
Bitte stelle sicher, dass du eine GPU mit CUDA-Unterstützung verwendest, wenn du nach TensorRT exportierst.
TensorRT 11.0 unterstützt DLA nicht; verwende TensorRT 10.x für device=dla:0 oder device=dla:1 oder exportiere eine TensorRT 11.0-GPU-Engine.
Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.
Exportieren von TensorRT mit INT8-Quantisierung#
Das Exportieren von Ultralytics YOLO-Modellen mit TensorRT und INT8-precision führt eine Quantisierung nach dem Training (PTQ) aus. TensorRT verwendet für PTQ eine Kalibrierung, die die Verteilung der Aktivierungen in jedem Aktivierungstensor misst, während das YOLO-Modell die Inferenz an repräsentativen Eingabedaten verarbeitet, und diese Verteilung dann verwendet, um Skalenwerte für jeden Tensor abzuschätzen. Jeder Aktivierungstensor, der für eine Quantisierung in Frage kommt, hat eine zugehörige Skala, die durch einen Kalibrierungsprozess abgeleitet wird.
TensorRT 11 hat die implizite Quantisierung und die IInt8Calibrator-Schnittstelle entfernt. Ab TensorRT 11 führt Ultralytics die INT8-Quantisierung mit der expliziten Quantisierung von NVIDIA ModelOpt durch, die Q/DQ-Knoten in den ONNX-Graphen einfügt, bevor eine streng typisierte Engine erstellt wird, und FP16 wird mit der ModelOpt AutoCast-Mischpräzisionskonvertierung angewendet. Die Argumente quantize=8, quantize=16 und data funktionieren auf dieselbe Weise; ModelOpt wird bei der ersten Verwendung automatisch installiert. Bei TensorRT 7-10 wird stattdessen der unten beschriebene Legacy-Kalibrator verwendet.
Bei der Verarbeitung implizit quantisierter Netzwerke nutzt TensorRT INT8 opportunistisch, um die Layer-Ausführungszeit zu optimieren. Wenn eine Schicht in INT8 schneller läuft und zugewiesene Quantisierungsskalen an ihren Dateneingängen und -ausgängen hat, wird dieser Schicht ein Kernel mit INT8-Präzision zugewiesen; andernfalls wählt TensorRT eine Präzision von entweder FP32 oder FP16 für den Kernel, basierend darauf, was für diese Schicht zu einer schnelleren Ausführungszeit führt.
Es ist entscheidend, sicherzustellen, dass für den Export mit INT8-Präzision dasselbe Gerät verwendet wird, das später auch die TensorRT-Modellgewichte für die Bereitstellung einsetzt, da die Kalibrierungsergebnisse je nach Gerät variieren können.
Konfiguration des INT8-Exports#
Die Argumente, die beim export für ein Ultralytics YOLO-Modell angegeben werden, beeinflussen die Leistung des exportierten Modells stark. Sie müssen zudem basierend auf den verfügbaren Geräteressourcen ausgewählt werden, allerdings sollten die Standardargumente für die meisten diskreten NVIDIA-GPUs der Ampere-Architektur (oder neuer) funktionieren. Der verwendete Kalibrierungsalgorithmus ist "MINMAX_CALIBRATION" für GPU-Exporte, während DLA-Exporte auf NVIDIA Jetson "ENTROPY_CALIBRATION_2" verwenden. Weitere Details zu den verfügbaren Optionen kannst du im TensorRT Developer Guide nachlesen. Ultralytics-Tests ergaben, dass "MINMAX_CALIBRATION" die beste Wahl für GPU-Exporte ist, und der Algorithmus wird basierend auf dem Exportgerät automatisch ausgewählt.
-
workspace: Steuert die Größe (in GiB) der Gerätespeicherzuweisung während der Konvertierung der Modellgewichte.-
Passe den Wert von
workspacean deine Kalibrierungsanforderungen und die verfügbaren Ressourcen an. Während ein größererworkspacedie Kalibrierungszeit verlängern kann, ermöglicht es TensorRT, einen größeren Bereich von Optimierungstaktiken zu untersuchen, was die Modellleistung und -genauigkeit möglicherweise verbessert. Umgekehrt kann ein kleinererworkspacedie Kalibrierungszeit verkürzen, aber die Optimierungsstrategien einschränken, was sich auf die Qualität des quantisierten Modells auswirkt. -
Der Standardwert ist
workspace=None, wodurch TensorRT Speicher automatisch zuweisen kann. Bei manueller Konfiguration muss dieser Wert möglicherweise erhöht werden, wenn die Kalibrierung abstürzt (ohne Warnung beendet wird). -
TensorRT meldet während des Exports
UNSUPPORTED_STATE, wenn der Wert fürworkspacegrößer ist als der dem Gerät zur Verfügung stehende Speicher, was bedeutet, dass der Wert fürworkspaceverringert oder aufNonegesetzt werden sollte. -
Wenn
workspaceauf den Maximalwert eingestellt ist und die Kalibrierung fehlschlägt/abstürzt, erwäge die Verwendung vonNonefür die automatische Zuweisung oder reduziere die Werte fürimgszundbatch, um den Speicherbedarf zu senken. -
Denke daran, dass die Kalibrierung für INT8 gerätespezifisch ist; das Ausleihen einer "High-End"-GPU für die Kalibrierung könnte zu einer schlechten Leistung führen, wenn die Inferenz später auf einem anderen Gerät ausgeführt wird.
-
-
batch: Die maximale Batch-Größe, die für die Inferenz verwendet wird. Während der Inferenz können kleinere Batches verwendet werden, aber die Inferenz akzeptiert keine Batches, die größer sind als angegeben.
Die Verwendung kleiner Batches kann während der INT8-Kalibrierung zu einer ungenauen Skalierung führen. Dies liegt daran, dass sich der Prozess basierend auf den gesehenen Daten anpasst. Kleine Batches erfassen möglicherweise nicht den vollständigen Wertebereich, was zu Problemen bei der endgültigen Kalibrierung führt. Die Verwendung einer größeren batch size trägt dazu bei, repräsentativere Kalibrierungsergebnisse sicherzustellen.
Experimente von NVIDIA führten zu der Empfehlung, bei der INT8-Quantisierungskalibrierung mindestens 500 Kalibrierungsbilder zu verwenden, die für die Daten deines Modells repräsentativ sind. Dies ist eine Richtlinie und keine strenge Anforderung, und du musst damit experimentieren, was erforderlich ist, um für deinen Datensatz gute Ergebnisse zu erzielen. Da die Kalibrierungsdaten für die INT8-Kalibrierung mit TensorRT erforderlich sind, stelle sicher, dass du das Argument data verwendest, wenn quantize=8 für TensorRT gilt, und verwende data="my_dataset.yaml", wodurch die Bilder aus der validation zur Kalibrierung herangezogen werden. Wenn beim Export nach TensorRT mit INT8-Quantisierung kein Wert für data übergeben wird, wird standardmäßig einer der "kleinen" Beispieldatensätze basierend auf der Modellaufgabe verwendet, anstatt einen Fehler auszugeben.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
quantize=8,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- Exporte mit dynamischen Achsen – dies ist beim Exportieren mit
quantize=8standardmäßig aktiviert, selbst wenn es nicht explizit festgelegt wird. Weitere Informationen findest du unter export arguments. - Legt eine maximale Batch-Größe von 8 für das exportierte Modell und die INT8-Kalibrierung fest.
- Zuweisung von 4 GiB Speicher anstelle der Zuweisung des gesamten Geräts für den Konvertierungsprozess.
- Verwendet das COCO-Dataset für die Kalibrierung, insbesondere die Bilder, die für die validation verwendet werden (insgesamt 5.000).
Kalibrierungs-Cache
TensorRT generiert eine Kalibrierungs-.cache, die wiederverwendet werden kann, um den Export zukünftiger Modellgewichte unter Verwendung derselben Daten zu beschleunigen. Dies kann jedoch zu einer schlechten Kalibrierung führen, wenn sich die Daten stark unterscheiden oder wenn der Wert von batch drastisch geändert wird. Unter diesen Umständen sollte die vorhandene .cache umbenannt und in ein anderes Verzeichnis verschoben oder vollständig gelöscht werden.
Vorteile der Nutzung von YOLO mit TensorRT INT8#
-
Reduzierte Modellgröße: Die Quantisierung von FP32 auf INT8 kann die Modellgröße um das Vierfache reduzieren (auf der Festplatte oder im Speicher), was zu schnelleren Downloadzeiten, geringerem Speicherbedarf und einem kleineren Speicher-Footprint bei der Bereitstellung eines Modells führt.
-
Geringerer Stromverbrauch: Operationen mit reduzierter Präzision für INT8-exportierte YOLO-Modelle können im Vergleich zu FP32-Modellen weniger Strom verbrauchen, insbesondere bei batteriebetriebenen Geräten.
-
Verbesserte Inferenzgeschwindigkeiten: TensorRT optimiert das Modell für die Zielhardware, was potenziell zu schnelleren Inferenzgeschwindigkeiten auf GPUs, eingebetteten Geräten und Beschleunigern führt.
Hinweis zu Inferenzgeschwindigkeiten
Bei den ersten Inferenzaufrufen mit einem nach TensorRT INT8 exportierten Modell ist mit längeren Vorverarbeitungs-, Inferenz- und/oder Nachverarbeitungszeiten als üblich zu rechnen. Dies kann auch auftreten, wenn imgsz während der Inferenz geändert wird, insbesondere wenn imgsz nicht mit dem bei der Export festgelegten Wert übereinstimmt (die Export-imgsz ist als „optimales“ TensorRT-Profil festgelegt).
Nachteile der Nutzung von YOLO mit TensorRT INT8#
-
Abnahmen bei den Evaluierungsmetriken: Die Verwendung einer geringeren Präzision bedeutet, dass
mAP,Precision,Recalloder jede andere Metrik zur Bewertung der Modellleistung wahrscheinlich etwas schlechter ausfällt. Sigmoid-Schichten werden auf einer höheren Präzision gehalten, um die Score-Kalibrierung zu bewahren, aber INT8 kann Konfidenzwerte dennoch verschieben, wähle den Betriebsschwellenwert also aus der F1-Kurve des INT8-Modells selbst. Siehe den Abschnitt zu den Leistungsergebnissen, um die Unterschiede inmAP50undmAP50-95beim Export mit INT8 auf einer kleinen Stichprobe verschiedener Geräte zu vergleichen. -
Erhöhte Entwicklungszeiten: Das Finden der "optimalen" Einstellungen für die INT8-Kalibrierung je nach Datensatz und Gerät kann eine erhebliche Menge an Tests erfordern.
-
Hardwareabhängigkeit: Kalibrierung und Leistungsgewinne können stark hardwareabhängig sein und Modellgewichte sind weniger übertragbar.
Ultralytics YOLO TensorRT Export-Leistung#
NVIDIA A100#
Getestet mit Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1
Siehe Detection Docs für Anwendungsbeispiele mit diesen Modellen, die auf COCO trainiert wurden und 80 vortrainierte Klassen umfassen.
Inferenzzeiten angezeigt für mean, min (am schnellsten) und max (am langsamsten) für jeden Test unter Verwendung von vortrainierten Gewichten yolov8n.engine
| Präzision | Eval-Test | Mittelwert (ms) | Min | Max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | Größe (Pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Vorhersagen | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Vorhersagen | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Vorhersagen | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
Consumer GPUs#
Getestet mit Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6
Inferenzzeiten angezeigt für mean, min (am schnellsten) und max (am langsamsten) für jeden Test unter Verwendung von vortrainierten Gewichten yolov8n.engine
| Präzision | Eval-Test | Mittelwert (ms) | Min | Max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | Größe (Pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Vorhersagen | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Vorhersagen | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Vorhersagen | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Embedded-Geräte#
Getestet mit JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1
Inferenzzeiten angezeigt für mean, min (am schnellsten) und max (am langsamsten) für jeden Test unter Verwendung von vortrainierten Gewichten yolov8n.engine
| Präzision | Eval-Test | Mittelwert (ms) | Min | Max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | Größe (Pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Vorhersagen | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Vorhersagen | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Vorhersagen | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Lies unseren Schnellstart-Leitfaden zu NVIDIA Jetson mit Ultralytics YOLO, um mehr über Setup und Konfiguration zu erfahren.
Lies unseren Schnellstart-Leitfaden zu NVIDIA DGX Spark mit Ultralytics YOLO, um mehr über Setup und Konfiguration zu erfahren.
Evaluierungsmethoden#
Erweitere die untenstehenden Abschnitte für Informationen darüber, wie diese Modelle exportiert und getestet wurden.
Exportkonfigurationen
Siehe export mode für Details zu den Argumenten der Exportkonfiguration.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=16)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)Vorhersageschleife
Siehe predict mode für zusätzliche Informationen.
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")
for _ in range(100):
result = model.predict(
[img] * 8, # batch=8 of the same image
verbose=False,
device="cuda",
)Validierungskonfiguration
Siehe val mode, um mehr über die Argumente der Validierungskonfiguration zu erfahren.
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet, or DOTAv1 for appropriate model task
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)Bereitstellung exportierter YOLO26 TensorRT-Modelle#
Nachdem du deine Ultralytics YOLO26-Modelle erfolgreich in das TensorRT-Format exportiert hast, bist du bereit, sie bereitzustellen. Ausführliche Anweisungen zur Bereitstellung deiner TensorRT-Modelle in verschiedenen Umgebungen findest du in den folgenden Ressourcen:
-
Ultralytics mit einem Triton Server bereitstellen: Unser Leitfaden zur Verwendung des Triton Inference Server von NVIDIA (ehemals TensorRT Inference Server) speziell für die Verwendung mit Ultralytics YOLO-Modellen.
-
Deep Neural Networks mit NVIDIA TensorRT bereitstellen: Dieser Artikel erklärt, wie man NVIDIA TensorRT verwendet, um Deep Neural Networks effizient auf GPU-basierten Bereitstellungsplattformen bereitzustellen.
-
End-to-End-KI für NVIDIA-basierte PCs: NVIDIA TensorRT-Bereitstellung: Dieser Blogbeitrag erklärt die Verwendung von NVIDIA TensorRT zur Optimierung und Bereitstellung von KI-Modellen auf NVIDIA-basierten PCs.
-
GitHub-Repository für NVIDIA TensorRT:: Dies ist das offizielle GitHub-Repository, das den Quellcode und die Dokumentation für NVIDIA TensorRT enthält.
Zusammenfassung#
In diesem Leitfaden haben wir uns auf die Konvertierung von Ultralytics YOLO26-Modellen in das NVIDIA TensorRT-Modellformat konzentriert. Dieser Konvertierungsschritt ist entscheidend, um die Effizienz und Geschwindigkeit von YOLO26-Modellen zu verbessern, sie effektiver zu machen und für verschiedene Bereitstellungsumgebungen geeignet zu gestalten.
Weitere Informationen zu den Verwendungsdetails findest du in der offiziellen TensorRT-Dokumentation.
Wenn du neugierig auf weitere Ultralytics YOLO26-Integrationen bist, bietet unsere Integrationsleitfaden-Seite eine umfangreiche Auswahl an informativen Ressourcen und Einblicken.
FAQ#
Um deine Ultralytics YOLO26-Modelle für eine optimierte NVIDIA GPU-Inferenz in das TensorRT-Format zu konvertieren, befolge diese Schritte:
-
Installiere das erforderliche Paket:
pip install ultralytics -
Exportiere dein YOLO26 Modell:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Weitere Details findest du in der YOLO26-Installationsanleitung und der export documentation.
-
Die Verwendung von TensorRT zur Optimierung von YOLO26 Modellen bietet mehrere Vorteile:
- Höhere Inferenzgeschwindigkeit: TensorRT optimiert die Modellschichten und verwendet Präzisionskalibrierung (INT8 und FP16), um die Inferenz zu beschleunigen, ohne die Genauigkeit wesentlich zu beeinträchtigen.
- Speichereffizienz: TensorRT verwaltet den Tensor-Speicher dynamisch, wodurch der Overhead reduziert und die GPU-Speicherauslastung verbessert wird.
- Layer Fusion: Kombiniert mehrere Schichten zu einzelnen Operationen, wodurch die Rechenkomplexität reduziert wird.
- Kernel Auto-Tuning: Wählt automatisch optimierte GPU-Kernel für jede Modellschicht aus, um maximale Leistung zu gewährleisten.
Um mehr zu erfahren, erkunde die offizielle TensorRT-Dokumentation von NVIDIA und unsere detaillierte TensorRT-Übersicht.
Ja, du kannst YOLO26 Modelle mit TensorRT unter Verwendung von INT8-Quantisierung exportieren. Dieser Prozess umfasst Post-Training-Quantisierung (PTQ) und Kalibrierung:
-
Export mit INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml") -
Inferenz ausführen:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Weitere Details findest du im Abschnitt zum Exportieren von TensorRT mit INT8-Quantisierung.
-
Die Bereitstellung von YOLO26 TensorRT Modellen auf einem NVIDIA Triton Inference Server kann mithilfe der folgenden Ressourcen erfolgen:
- Ultralytics YOLO26 mit Triton Server bereitstellen: Schritt-für-Schritt-Anleitung zur Einrichtung und Verwendung des Triton Inference Server.
- Deep Neural Networks mit NVIDIA TensorRT bereitstellen: NVIDIAs Leitfaden zur Bereitstellung von Deep-Learning-Modellen mit TensorRT für detaillierte Bereitstellungsoptionen und -konfigurationen.
Diese Anleitungen helfen dir, YOLO26 Modelle effizient in verschiedenen Bereitstellungsumgebungen zu integrieren.
Die Leistungsverbesserungen mit TensorRT können je nach verwendeter Hardware variieren. Hier sind einige typische Benchmarks:
-
NVIDIA A100:
- FP32 Inferenz: ~0,52 ms / Bild
- FP16 Inferenz: ~0,34 ms / Bild
- INT8 Inferenz: ~0,28 ms / Bild
- Leichte Reduzierung der mAP bei INT8-Präzision, aber deutliche Verbesserung der Geschwindigkeit.
-
Consumer-GPUs (z. B. RTX 3080):
- FP32 Inferenz: ~1,06 ms / Bild
- FP16 Inferenz: ~0,62 ms / Bild
- INT8 Inferenz: ~0,52 ms / Bild
Detaillierte Leistungs-Benchmarks für verschiedene Hardwarekonfigurationen findest du im Performance-Abschnitt.
Umfassendere Einblicke in die TensorRT-Leistung findest du in der Ultralytics-Dokumentation und unseren Leistungsanalyseberichten.
-