4.7 Modellexport und Edge-Bereitstellung

Warum das wichtig ist

Im vorherigen Kapitel haben wir erklärt, wie man ein benutzerdefiniertes YOLO-Modell trainiert und erfolgreich Inferenz auf Jetson ausführt. In diesem Stadium war das Modell noch im .pt-Format gespeichert, dem nativen Format, das im PyTorch-Ökosystem üblich ist. Dies ist ein guter Ausgangspunkt, weil es belegt, dass die Trainingsergebnisse korrekt sind und das Modell bereits Objekterkennung auf dem Zielgerät durchführen kann.

Im vorherigen Kapitel haben wir erklärt, wie man ein benutzerdefiniertes YOLO-Modell trainiert und erfolgreich Inferenz auf Jetson ausführt. In diesem Stadium war das Modell noch im .pt-Format gespeichert, dem nativen Format, das im PyTorch-Ökosystem üblich ist. Dies ist ein guter Ausgangspunkt, weil es belegt, dass die Trainingsergebnisse korrekt sind und das Modell bereits Objekterkennung auf dem Zielgerät durchführen kann.

image-20260402114356086

Doch das Modell auf Jetson ausführen zu können, bedeutet nicht, dass es bereits in seiner besten Bereitstellungsform ist. Die .pt-Datei ist hauptsächlich für Training, Validierung und Entwicklung gedacht, wo Flexibilität wichtiger ist als Ausführungseffizienz. Für die tatsächliche Edge-Bereitstellung, insbesondere auf eingebetteten Plattformen wie Jetson, geht es uns um weit mehr als nur darum, ob das Modell läuft. Wir kümmern uns auch darum, wie schnell es läuft, wie viel Speicher es verbraucht, wie stabil sein Durchsatz ist und wie gut es in die Leistungs- und thermischen Grenzen des Geräts passt.

image-20260402114750724

Mit anderen Worten: Ein trainierter Checkpoint ist nur ein Teil der Bereitstellungspipeline. Damit ein YOLO-Modell für reale Jetson-Anwendungen wirklich geeignet ist, müssen wir es in der Regel in ein bereitstellungsfreundlicheres Format konvertieren und für die eingebettete Inferenz weiter optimieren. Dies ist der Schlüsselschritt, der die Lücke zwischen Computer-Vision-Entwicklung und Edge-Engineering schließt.

Daher lautet die wichtige Frage nach dem Training eines Modells nicht einfach "Kann es laufen?", sondern vielmehr "Kann es effizient auf Jetson laufen?" Um diese Frage zu beantworten, müssen wir verstehen, warum Modelloptimierung notwendig ist.


Warum brauchen wir Modelloptimierung?

Modelloptimierung ist notwendig, weil das ursprünglich trainierte Modell normalerweise nicht für die Beschränkungen eingebetteter Hardware ausgelegt ist. Während des Trainings besteht das Hauptziel darin, gute Genauigkeit und Konvergenz zu erreichen. Bei der Bereitstellung ändert sich das Ziel jedoch. Wir benötigen, dass das Modell schnelle Inferenz, niedrige Latenz, hohen Durchsatz, geringen Speicherverbrauch und gute Energieeffizienz liefert.

image-20260402115153469

Dies ist besonders wichtig für Jetson-Geräte. Im Vergleich zu Desktop-GPUs oder Cloud-Servern verfügen Jetson-Plattformen über begrenztere Rechenressourcen, Speicherbandbreite und Energiebudget. In vielen Edge-KI-Szenarien wie Robotik, intelligenten Kameras, industrieller Inspektion oder autonomen Systemen muss das Modell Daten in Echtzeit verarbeiten. Ist die Inferenz zu langsam, kann das System Frames verlieren, zu spät reagieren oder die Anforderungen der Anwendung nicht erfüllen.

Ein YOLO-Modell direkt im .pt-Format auszuführen, bringt häufig unnötigen Overhead durch die PyTorch-Laufzeit mit sich. Dieser Ansatz ist zwar bequem zum Testen und Prototyping, aber nicht ideal, um die maximale Leistung aus Jetson-Hardware herauszuholen. Das Modell mag korrekt funktionieren, nutzt die GPU aber möglicherweise nicht so effizient wie möglich. Infolgedessen kann die Latenz hoch bleiben, der Durchsatz begrenzt sein und die Ressourcennutzung größer als nötig sein.

Modelloptimierung hilft, diese Probleme zu lösen. Indem wir das Modell exportieren und für die Inferenz optimieren, können wir die Art und Weise verbessern, wie das Netzwerk auf der Zielhardware ausgeführt wird. Dazu kann das Reduzieren redundanter Operationen, das Fusionieren von Schichten, die Auswahl effizienterer Kernel, das Senken der Präzision von FP32 auf FP16 oder INT8 und die Verbesserung der Speichernutzung gehören. Diese Optimierungen können die Bereitstellungsleistung erheblich verbessern, ohne die Gesamtaufgabe des Modells zu verändern.

Für die Jetson-Bereitstellung bringt die Optimierung mehrere praktische Vorteile:

1. Niedrigere Latenz

Ein schnelleres Modell bedeutet, dass jeder Eingangs-Frame schneller verarbeitet werden kann. Dies ist entscheidend für Echtzeitaufgaben wie Objekterkennung und -verfolgung.

2. Höherer Durchsatz

Optimierung ermöglicht es dem System, mehr Frames pro Sekunde zu verarbeiten, was für Videoanalyse und Multistream-Anwendungen wichtig ist.

3. Geringerer Speicherverbrauch

Eingebettete Geräte verfügen über begrenzte Speicherressourcen. Ein optimiertes Modell kann den Speicher-Footprint reduzieren und die Systemstabilität verbessern.

4. Bessere Energieeffizienz

Jetson-Geräte werden häufig in Edge-Umgebungen eingesetzt, in denen der Energieverbrauch wichtig ist. Ein effizienteres Modell kann dem System helfen, länger und zuverlässiger zu laufen.

5. Bessere Auslastung der Hardware

Die Optimierung ermöglicht es dem Modell, die NVIDIA-GPU-Beschleunigung besser zu nutzen, anstatt sich stark auf die generische Frameworkausführung zu verlassen.

Aus diesen Gründen ist die Modelloptimierung nicht nur eine optionale Verbesserung. Sie ist ein notwendiger Schritt, um ein trainiertes YOLO-Modell in eine praktische Edge-KI-Lösung zu verwandeln, die unter realen Bereitstellungsbedingungen effizient läuft.


Was ist TensorRT?

image-20260402181431191

TensorRT ist NVIDIAs Hochleistungs-Framework und Laufzeit für Deep-Learning-Inferenz. Es ist speziell darauf ausgelegt, trainierte neuronale Netze zu optimieren und sie effizient auf NVIDIA-Hardware, einschließlich Jetson-Geräten, auszuführen.

Einfach ausgedrückt ist TensorRT das Tool, das hilft, ein trainiertes Modell in eine besser für die Bereitstellung geeignete Form zu konvertieren. Anstatt das Modell durch ein universelles Deep-Learning-Framework laufen zu lassen, baut TensorRT eine optimierte Inferenz-Engine, die auf die Ziel-NVIDIA-GPU zugeschnitten ist. Dadurch kann das Modell schneller und effizienter ausgeführt werden.

img

Für Jetson spielt TensorRT eine zentrale Rolle bei der Bereitstellung, da es die Fähigkeiten von NVIDIA-Embedded-GPUs voll ausschöpft. Es führt eine Vielzahl von Optimierungen durch, wie zum Beispiel:

  • Layer-Fusion, die mehrere Operationen zu einem effizienteren Ausführungspfad kombiniert
  • automatische Kernel-Auswahl, die die beste Implementierung für die Hardware auswählt
  • Präzisionsoptimierung, wie FP16- oder INT8-Beschleunigung
  • Speicheroptimierung, die unnötige Speicherbewegungen reduziert und die Laufzeiteffizienz verbessert

Infolgedessen kann TensorRT die Inferenzleistung eines YOLO-Modells im Vergleich zur direkten Ausführung des originalen .pt-Modells erheblich steigern.

image-20260402182425008

Ein üblicher Jetson-Bereitstellungsworkflow sieht so aus:

PyTorch .pt-Modell -> ONNX-Modell -> TensorRT-Engine -> Jetson-Inferenz

In diesem Workflow:

  • ist das .pt-Modell das Trainingsergebnis
  • dient das ONNX-Modell als Zwischenformat zum Austausch
  • ist die TensorRT-Engine das optimierte Bereitstellungsartefakt, das für die Inferenz auf Jetson verwendet wird

Dieser Prozess zeigt, dass TensorRT nicht nur ein Konverter ist, sondern eine zentrale Optimierungs- und Ausführungsschicht für die eingebettete KI-Bereitstellung.

Aus technischer Sicht ist TensorRT wichtig, weil es ein Modell, das lediglich trainier- und testbar ist, in eines verwandelt, das wirklich bereitstellbar und effizient ist. Für Jetson-Anwender ist TensorRT oft der wichtigste Schritt, um eine praktische Echtzeitleistung zu erreichen.

Mit anderen Worten: Ein trainierter Checkpoint ist nur ein Teil der Bereitstellungspipeline. Damit ein YOLO-Modell für reale Jetson-Anwendungen wirklich geeignet ist, müssen wir es in der Regel in ein bereitstellungsfreundlicheres Format konvertieren und für die eingebettete Inferenz weiter optimieren. Dies ist der Schlüsselschritt, der die Lücke zwischen Computer-Vision-Entwicklung und Edge-Engineering schließt.

Häufige Modellformate

FormatHauptrolle
PyTorch checkpointflexibel für Training und Experimente
ONNXportables Zwischenformat
TensorRT engineoptimiertes Laufzeitformat für NVIDIA-Hardware

Genauigkeit vs. Geschwindigkeit vs. Energie

Ein genaueres Modell ist oft größer, langsamer und verbraucht mehr Energie, während ein schnelleres Modell oft leichter, aber weniger genau ist. Bei der realen Bereitstellung müssen wir also ein Gleichgewicht finden, das zum Gerät und zur Aufgabe passt. Edge-Bereitstellung ist immer eine Frage von Kompromissen.

Häufig wägt man ab zwischen:

  • Modellgenauigkeit
  • Inferenzgeschwindigkeit
  • Speichernutzung
  • thermischen und Energiegrenzen

Präzisionsmodi

Modellpräzision bedeutet, wie viele Bits zum Speichern von Zahlen im Modell verwendet werden, etwa Gewichte und Aktivierungen. Höhere Präzision wie FP32 behält mehr numerische Details, während niedrigere Präzision wie FP16 oder INT8 weniger Bits verwendet. Niedrigere Präzision kann die Inferenz schneller machen und weniger Speicher verbrauchen, was auf Edge-Geräten wie Jetson sehr hilfreich ist. Wird die Präzision jedoch zu stark reduziert, kann das Modell an Genauigkeit verlieren, sodass wir Geschwindigkeit und Zuverlässigkeit ausbalancieren müssen.

Codebeispiel

Export nach ONNX

bash
yolo export model=yolo26s.pt format=onnx imgsz=640

Export nach TensorRT auf Jetson

bash
yolo export model=yolo26s.pt format=engine imgsz=640 half=True device=0

Nützliche Jetson-Laufzeitbefehle

bash
#turn on max mode
sudo nvpmodel -m 0
#turn on jetson clocks
sudo jetson_clocks

Probieren Sie es aus

bash
cd 4.7-Model-Export-and-Edge-Deployment/code
python compare_yolo26_pt_vs_engine.py --video ./cat.mp4

🚀 Beobachten Sie die Veränderungen der Inferenzlatenz des optimierten Modells

4月3日

Häufige Missverständnisse

  • "Wenn das Modell erfolgreich exportiert wird, ist die Bereitstellung gelöst."
    • Der Export ist nur ein Schritt. Die Laufzeitvalidierung ist weiterhin wichtig.
  • "Das schnellste Modell ist immer das beste Modell."
    • Ein schnelleres Modell ist nicht nützlich, wenn es wichtige Fälle übersieht.
  • "INT8 ist immer besser als FP16."
    • INT8 kann stark sein, aber nur, wenn die Genauigkeit akzeptabel bleibt.

Übungen / Reflexion

  1. Exportieren Sie ein trainiertes Modell nach ONNX und notieren Sie den Befehl.
  2. Vergleichen Sie schriftlich, wofür checkpoint, ONNX und TensorRT engine jeweils am besten geeignet sind.
  3. Stellen Sie sich vor, ein Modell ist genau, aber zu langsam. Listen Sie drei Wege auf, die Bereitstellung praktischer zu gestalten.
  4. Erklären Sie, warum der Energiemodus auf einem Edge-Gerät wichtig ist.

Zusammenfassung

Modellexport und Edge-Bereitstellung sind keine nachträglichen Gedanken. Sie sind Teil des vollständigen Computer-Vision-Workflows. Nachdem ein Lernender Daten, Training und Auswertung verstanden hat, besteht die nächste Herausforderung darin, dieses Modell in etwas Praktisches für reale Hardware zu verwandeln.

Empfohlener nächster Schritt

Fahren Sie fort mit 4.8 Echtzeit-Vision-Pipeline-Frameworks.

Referenzen