Glossar

ONNX (Open Neural Network Exchange)

Entdecke, wie ONNX die Übertragbarkeit und Interoperabilität von KI-Modellen verbessert und den nahtlosen Einsatz von Ultralytics YOLO Modellen auf verschiedenen Plattformen ermöglicht.

Trainiere YOLO Modelle einfach
mit Ultralytics HUB

Mehr erfahren

Im sich schnell entwickelnden Bereich der künstlichen Intelligenz (KI) und des maschinellen Lernens (ML) ist es wichtig, Modelle effizient zwischen verschiedenen Tools und Plattformen auszutauschen. ONNX (Open Neural Network Exchange) geht diese Herausforderung an, indem es ein Open-Source-Format speziell für KI-Modelle bereitstellt. Es fungiert als universeller Übersetzer, der es Entwicklern ermöglicht, ein Modell in einem Framework zu trainieren, z. B. PyTorchtrainieren und es dann mit einem anderen Framework oder einer Inferenz-Engine, wie TensorFlow oder spezialisierte Laufzeiten verwenden. Diese Interoperabilität vereinfacht den Weg von der Forschung zur Produktion.

Relevanz von ONNX

Der Kernwert von ONNX liegt in der Förderung von Portabilität und Interoperabilität innerhalb des KI-Ökosystems. Anstatt in das Ökosystem eines bestimmten Frameworks eingespannt zu sein, können Entwickler/innen ONNX nutzen, um Modelle frei zu bewegen. Durch die Definition eines gemeinsamen Satzes von Operatoren und eines Standarddateiformats stellt ONNX sicher, dass die Struktur eines Modells und die gelernten Parameter(Gewichte) einheitlich dargestellt werden. Dies ist besonders vorteilhaft für Nutzer von Ultralytics YOLO Modellen, da Ultralytics einfache Methoden für den Export von Modellen in das ONNX bereitstellt. Mit dieser Exportfunktion können Nutzer Modelle wie YOLOv8 oder YOLO11 auf einer Vielzahl von Hardware- und Softwareplattformen einsetzen und dabei häufig optimierte Inferenz-Engines für eine bessere Leistung verwenden.

So funktioniert ONNX

ONNX erreicht die Interoperabilität durch mehrere Schlüsselfunktionen:

  • Gemeinsame Modelldarstellung: Sie definiert einen Standardsatz von Operatoren (wie Faltungsschichten oder Aktivierungsfunktionen) und Datentypen. Wenn ein Modell in ONNX konvertiert wird, wird seine Architektur in diese gemeinsame Sprache übersetzt.
  • Graph-basierte Struktur: Modelle werden als Rechengraphen dargestellt, wobei die Knoten Operationen und die Kanten den Datenfluss (Tensoren) darstellen. Diese Struktur wird von den meisten Deep-Learning-Systemen verwendet.
  • Erweiterbarkeit: ONNX definiert zwar einen Kernsatz von Operatoren, ermöglicht aber auch benutzerdefinierte Operatoren und damit die Unterstützung neuer Modellarchitekturen.
  • Versionierung: ONNX pflegt Operator-Versionen, um die Abwärtskompatibilität zu gewährleisten. Das bedeutet, dass Modelle, die mit älteren Versionen erstellt wurden, auch dann noch verwendet werden können, wenn sich der Standard weiterentwickelt.

Anwendungen von ONNX

ONNX wird häufig eingesetzt, um die Lücke zwischen Modell-Trainingsumgebungen und Einsatzzielen zu schließen. Hier sind zwei Beispiele:

  1. Optimierter Einsatz auf Edge-Geräten: Ein Entwickler trainiert ein Objekterkennungsmodell mit Ultralytics YOLO auf einem leistungsstarken Server mit GPUs. Um dieses Modell auf ressourcenbeschränkten Endgeräten einzusetzen, exportiert er das Modell nach ONNX. Das ONNX kann dann mit Tools wie NVIDIA TensorRT für NVIDIA oder Intel OpenVINO für Intel optimiert werden, um schnellere und effizientere Echtzeit-Inferenzen zu erhalten. Weitere Informationen findest du in unserem Leitfaden zu den Optionen für die Modellbereitstellung.
  2. Framework-übergreifende Zusammenarbeit: Ein Forschungsteam entwickelt eine neue Modellkomponente in PyTorch. Ein anderes Team, das für die Integration dieser Komponente in eine größere, mit TensorFlow erstellte Anwendung verantwortlich ist, kann die Komponente als ONNX erhalten. Dadurch entfällt die Notwendigkeit einer komplexen Codeübersetzung oder der Pflege separater Modellversionen für verschiedene Frameworks, was die Zusammenarbeit innerhalb von Organisationen wie den auf unserer Kundenseite aufgeführten erleichtert.

Verwandte Konzepte

Zum Verständnis von ONNX gehören oft verwandte Technologien:

  • ONNX Runtime: Dies ist eine leistungsstarke Inferenz-Engine, die speziell für die effiziente Ausführung von ONNX auf verschiedenen HardwareplattformenCPU, GPUusw.). Während ONNX das Format definiert, stellt ONNX Runtime die Ausführungsumgebung bereit.
  • TensorRT: Ein SDK von NVIDIA für hochleistungsfähige Deep Learning Inferenzen, das ONNX Modelle zur Optimierung auf NVIDIA GPUs importieren kann. Ultralytics bietet die Integration vonTensorRT an.
  • OpenVINO: Ein Intel für die Optimierung und den Einsatz von KI-Inferenzen, das ONNX für die Ausführung auf Intel unterstützt.
  • Modell Export: Der Prozess der Konvertierung eines trainierten Modells aus seinem ursprünglichen Rahmenformat (z. B. PyTorch .pt) in ein standardisiertes Format wie ONNX.
  • Modellbereitstellung: Der Gesamtprozess, bei dem ein trainiertes Modell für die Nutzung in einer Produktionsumgebung zur Verfügung gestellt wird, wobei ONNX eine Schlüsselrolle bei der Vereinfachung der plattformübergreifenden Kompatibilität spielt. Du kannst die Bereitstellung deiner ONNX mit Plattformen wie Ultralytics HUB verwalten.

Durch die Erleichterung des Modellaustauschs und -einsatzes spielt ONNX eine wichtige Rolle dabei, den KI-Entwicklungszyklus flexibler und effizienter zu gestalten.

Alles lesen