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 wie ONNX Runtime. 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 Übertragbarkeit und Interoperabilität innerhalb des Lebenszyklus der KI-Entwicklung. Anstatt an das Ökosystem eines bestimmten Frameworks gebunden zu sein, können Entwickler/innen ONNX nutzen, um Modelle frei zwischen verschiedenen Tools und Hardwareplattformen 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 und die gelernten Parameter eines Modells (Gewichte) werden einheitlich dargestellt. Dies ist besonders vorteilhaft für Nutzer von Ultralytics YOLO Modelle, denn Ultralytics bietet einfache Methoden für Modelle ins ONNX exportieren. Diese Exportfunktion ermöglicht es den Nutzern, Modelle wie YOLOv8 oder die neueste YOLO11 und setzen sie auf einer Vielzahl von Hardware- und Software-Plattformen ein, oft unter Verwendung optimierter Inferenzmaschinen für verbesserte Leistung und Hardware-Beschleunigung.

So funktioniert ONNX

ONNX erreicht die Interoperabilität durch mehrere wichtige technische Merkmale:

  • 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 die Multiplikation einer Matrix oder die 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 sichergestellt, 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 Tools: ONNX ist von einem reichhaltigen Ökosystem umgeben, einschließlich Bibliotheken zur Konvertierung von Modellen aus verschiedenen Frameworks (wie PyTorch oder TensorFlow), Tools zum Visualisieren und Debuggen von ONNX und Laufzeiten wie ONNX Runtime, die für hochleistungsfähige Inferenzen auf unterschiedlicher Hardware (CPU, GPU, spezialisierte Beschleuniger).

Anwendungen von ONNX

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

  1. Einsatz von Computer Vision Modellen auf Edge Devices: Ein Entwickler trainiert ein Objekterkennungsmodell, z. B. ein Ultralytics YOLO , mit PyTorch auf einem leistungsstarken Server mit GPUs. Für den Einsatz auf ressourcenbeschränkten Edge-Geräten (z. B. einer Smart-Kamera oder einer Drohne) exportiert er das Modell in das ONNX . Diese ONNX kann dann mit Tools wie NVIDIA TensorRT oder OpenVINO vonIntel 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. Du kannst Ultralytics Lösungen für Beispiele in verschiedenen Branchen erkunden.
  2. Rahmenübergreifende Zusammenarbeit und Einsatz: Ein Forschungsteam entwickelt eine neue Modellarchitektur mit TensorFlow. Ein anderes Team möchte dieses Modell in eine bestehende Anwendung integrieren, die mit PyTorch. Durch den Export des TensorFlow nach ONNX kann das zweite Team es einfach in seine PyTorch laden und verwenden oder es mit der standardisierten ONNX Runtime auf verschiedenen Serverkonfigurationen(Cloud oder On-Premise) einsetzen, ohne das ursprüngliche TensorFlow zu benötigen. Dies erleichtert die Bereitstellung und Integration von Modellen.

ONNX vs. Verwandte Konzepte

Es ist wichtig, ONNX von verwandten Begriffen zu unterscheiden:

  • Rahmenspezifische Formate: Formate wie das von PyTorch .pt/.pth oder TensorFlow's 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 , das manchmal als Alternative oder Vorläufer des ONNX verwendet wird.
  • Inference Engines/Runtimes: Werkzeuge wie ONNX Runtime, TensorRTund OpenVINO sind Softwarebibliotheken, mit denen ML-Modelle effizient ausgeführt werden können. Viele dieser Engines können ONNX nutzen, wobei oft weitere Optimierungen (wie Quantisierung oder Graphenfusion) 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.

Alles lesen