Glossar

ONNX (Open Neural Network Exchange)

Entdecken Sie, wie ONNX die Übertragbarkeit und Interoperabilität von KI-Modellen verbessert und die nahtlose Bereitstellung von Ultralytics YOLO-Modellen auf verschiedenen Plattformen ermöglicht.

In dem sich schnell entwickelnden Bereich der künstlichen Intelligenz (KI) und des maschinellen Lernens (ML) ist die effiziente Übertragung von Modellen zwischen verschiedenen Tools und Plattformen von entscheidender Bedeutung. ONNX (Open Neural Network Exchange) geht diese Herausforderung an, indem es ein speziell für KI-Modelle entwickeltes Open-Source-Format bereitstellt. Es fungiert als universeller Übersetzer, der es Entwicklern ermöglicht, ein Modell in einem Framework wie PyTorch zu trainieren und es dann mit einem anderen Framework oder einer Inferenz-Engine wie TensorFlow oder speziellen Laufzeiten wie ONNX Runtime einzusetzen. Diese Interoperabilität vereinfacht den Weg von der Forschung zur Produktion und fördert die Zusammenarbeit und Flexibilität innerhalb des KI-Ökosystems. ONNX wurde ursprünglich von Facebook AI Research und Microsoft Research entwickelt und ist heute ein florierendes Community-Projekt.

Relevanz von ONNX

Der Kernwert von ONNX liegt in der Förderung Portabilität und Interoperabilität innerhalb des Lebenszyklus der KI-Entwicklung. Anstatt an das Ökosystem eines bestimmten Frameworks gebunden zu sein, können Entwickler ONNX nutzen, um Modelle frei zwischen verschiedenen Tools und Hardware-Plattformen zu bewegen. Durch die Definition eines gemeinsamen Satzes von Operatoren (die Bausteine von neuronale Netze) und ein Standarddateiformat (.onnx), stellt ONNX sicher, dass die Struktur eines Modells und die gelernten Parameter (Gewichte) werden einheitlich dargestellt. Dies ist besonders vorteilhaft für Benutzer von Ultralytik YOLO Modelle, da Ultralytics unkomplizierte Methoden für Exportieren von Modellen in das ONNX-Format. Diese Exportfunktion ermöglicht es den Benutzern, Modelle wie YOLOv8 oder die neueste YOLO11 und sie auf einer Vielzahl von Hardware- und Software-Plattformen einsetzen, oft unter Verwendung optimierter Inferenzmaschinen für verbesserte Leistung und Hardware-Beschleunigung.

Wie ONNX funktioniert

ONNX erreicht die Interoperabilität durch mehrere technische Schlüsselmerkmale:

  • Gemeinsame Modelldarstellung: ONNX definiert einen Standardsatz von Berechnungsgraphen-Operatoren, wie z. B. Faltung oder Aktivierungsfunktionen, und ein gemeinsames Datentypsystem. Wenn ein Deep-Learning-Modell in ONNX konvertiert wird, werden seine Architektur und Parameter in diese gemeinsame Darstellung übersetzt.
  • Graphenbasierte Struktur: Modelle in ONNX werden als Berechnungsgraphen dargestellt. Knoten im Graphen stellen Operationen dar (wie Matrixmultiplikation oder Anwendung einer ReLU-Funktion), während Kanten den Datenfluss (Tensoren) zwischen diesen Operationen darstellen. Diese Graphenstruktur ist in vielen ML-Frameworks üblich und erleichtert die Konvertierung.
  • Versionierungssystem: ONNX verwaltet Versionen für seine Operator-Sets (Opsets). Dadurch wird die Abwärtskompatibilität gewährleistet, so dass Modelle, die mit älteren Opsets erstellt wurden, auch auf neueren Laufzeiten laufen, die diese Versionen unterstützen.
  • Erweiterbarkeit: ONNX definiert zwar einen Kernsatz von Operatoren, ermöglicht aber auch benutzerdefinierte Operatoren, so dass Frameworks und Hardware-Anbieter spezielle Funktionen unterstützen können.
  • Ökosystem und Werkzeuge: Ein reichhaltiges Ökosystem umgibt ONNX, einschließlich Bibliotheken für die Konvertierung von Modellen aus verschiedenen Frameworks (wie PyTorch oder TensorFlow), Tools für die Visualisierung und das Debugging von ONNX-Graphen und Laufzeiten wie ONNX Runtime, die für Hochleistungsinferenzen über verschiedene Hardware(CPU, GPU, spezielle Beschleuniger) optimiert sind.

Anwendungen von ONNX

ONNX dient als entscheidende Brücke zwischen Modell-Trainingsumgebungen und verschiedenen Einsatzzielen. Hier sind zwei konkrete Beispiele:

  1. Einsatz von Computer Vision-Modellen auf Edge-Geräten: Ein Entwickler trainiert ein Objekterkennungsmodell, z. B. ein Ultralytics YOLO-Modell, mit PyTorch auf einem leistungsstarken Server mit GPUs. Für den Einsatz auf ressourcenbeschränkten Edge-Geräten (wie einer intelligenten Kamera oder einer Drohne) exportiert er das Modell in das ONNX-Format. Diese ONNX-Datei kann dann mit Tools wie NVIDIA TensorRT oder Intels OpenVINO optimiert und für effiziente Echtzeit-Inferenzen direkt auf dem Gerät eingesetzt werden. Diese Flexibilität wird durch verschiedene Optionen für die Modellbereitstellung unterstrichen. Sie können Ultralytics-Lösungen anhand von Beispielen in verschiedenen Branchen erkunden.
  2. Framework-übergreifende Zusammenarbeit und Einsatz: Ein Forschungsteam entwickelt eine neuartige Modellarchitektur mit TensorFlow. Ein anderes Team möchte dieses Modell in eine bestehende Anwendung integrieren, die mit PyTorch erstellt wurde. Durch den Export des TensorFlow-Modells nach ONNX kann das zweite Team es einfach in seine PyTorch-Umgebung laden und verwenden oder es mit der standardisierten ONNX Runtime auf verschiedenen Serverkonfigurationen(Cloud oder On-Premise) einsetzen, ohne das ursprüngliche TensorFlow-Framework zu benötigen. Dies fördert eine einfachere Modellbereitstellung und Integration.

ONNX vs. Verwandte Konzepte

Es ist wichtig, ONNX von verwandten Begriffen zu unterscheiden:

  • Rahmenspezifische Formate: Formate wie das von PyTorch .pt/.pth oder TensorFlows SavedModel sind nativ für ihre jeweiligen Frameworks. ONNX fungiert als Vermittler, der die Konvertierung zwischen diesen Formaten oder die Bereitstellung über eine gemeinsame Laufzeitumgebung ermöglicht. TorchScript ist ein weiteres Format für die Serialisierung von PyTorch-Modellen, das manchmal als Alternative oder Vorläufer zum ONNX-Export verwendet wird.
  • Inferenz-Engines/Laufzeiten: Tools wie ONNX Runtime, TensorRT und OpenVINO sind Softwarebibliotheken, die für die effiziente Ausführung von ML-Modellen entwickelt wurden. Viele dieser Engines können ONNX-Modelle verwenden, wobei häufig weitere Optimierungen (wie Quantisierung oder Graphfusion) für bestimmte Hardwareziele vorgenommen werden. ONNX liefert die standardisierte Modelleingabe für diese Engines.

Zusammenfassend lässt sich sagen, dass ONNX ein wichtiger Standard ist, um Flexibilität und Interoperabilität in der Pipeline für maschinelles Lernen (MLOps) zu gewährleisten und es Entwicklern zu ermöglichen, die besten Tools für Training und Einsatz zu wählen, ohne durch Framework-Einschränkungen eingeschränkt zu werden. Plattformen wie Ultralytics HUB nutzen solche Formate, um den Weg von der Modellentwicklung zur realen Anwendung zu vereinfachen.

Werden Sie Mitglied der Ultralytics-Gemeinschaft

Beteiligen Sie sich an der Zukunft der KI. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten
Link in die Zwischenablage kopiert