Suchen

Definition Was ist ONNX (Open Neural Network Exchange)?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

ONNX – Open Neural Network Exchange – ist ein gemeinschaftliches Projekt von Microsoft und Facebook. Es definiert ein offenes Format zur Repräsentation von Deep-Learning-Modellen in verschiedenen Frameworks. Die Modelle lassen sich ohne großen Anpassungsaufwand zwischen Machine Learning Frameworks wie Caffe2, MXNet, Microsoft Cognitive Toolkit oder PyTorch verschieben.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Die Abkürzung ONNX steht für Open Neural Network Exchange. Es handelt sich um ein offenes Format zur Repräsentation von Deep-Learning-Modellen in verschiedenen Frameworks. ONNX ist aus einem gemeinschaftlichen Projekt von Facebook und Microsoft entstanden, das mittlerweile von vielen weiteren Unternehmen wie IBM, Intel, AMD, Huawei, ARM, Qualcomm, NVIDIA und anderen unterstützt wird. Mit dem ONNX-Format ist es möglich, die Modelle ohne größeren Anpassungsaufwand zwischen verschiedenen Machine-Learning-Frameworks wie Caffe2, MXNet, Microsoft Cognitive Toolkit oder PyTorch zu verschieben.

Entwickler können die für den jeweiligen Zweck optimale Kombination zwischen Modell und Framework wählen und müssen keine aufwendige Migration oder Transformation der Modelle durchführen. Wesentliche Bestandteile von ONNX sind Definitionen für Berechnungsgraphen, Operatoren, Funktionen und Standard-Datentypen. Die Interoperabilität der Modelle in den verschiedenen Frameworks verkürzt die Entwicklungszeiten für Anwendungen im Umfeld der Künstlichen Intelligenz und nutzt vorhandene Ressourcen besser aus. So lässt sich ein Modell beispielsweise in einem Framework trainieren und in einem anderen zu Inferenz-Zwecken betreiben. ONNX ist mit MIT-Lizenz über GitHub frei verfügbar. Die aktuelle Version (Stand April 2019) ist 1.5.0.

Die Motivation für ONNX

Deep Learning in neuronalen Netzen basiert auf Berechnungen unter Verwendung spezifischer Graphen und bereitgestellter Daten. Jedes Framework stellt Graphen etwas anders dar und nutzt teils eigene Mechanismen und Methoden. So kommen beispielsweise statische oder dynamische Graphen zum Einsatz. Frameworks stellen in sich geschlossene Einheiten aus Graphen, Schnittstellen und Laufzeitumgebungen dar und sind für bestimmte Einsatzzwecke optimiert. Je nach Anforderung wählen Entwickler das jeweils für ihre Zwecke am besten geeignete Framework. Allerdings kann es passieren, dass für Training und Inferenz eines Modells die Verwendung verschiedener Frameworks sinnvoll wäre. In diesem Fall entsteht immenser Aufwand die Modelle aufgrund der unterschiedlichen Graphendarstellungen zu transformieren und zu migrieren.

ONNX soll einen Ausweg aus diesem Dilemma bieten, indem es ein einheitliches Format zur Repräsentation von Deep-Learning-Modellen in verschiedenen Frameworks bereitstellt. Da es sich um ein offenes Format handelt, ist ONNX vielseitig nutzbar und sorgt für eine bessere Interoperabilität im Umfeld des Deep Learnings.

Die technischen Merkmale von ONNX

ONNX arbeitet mit Bibliotheken und Schnittstellen, die den Import und Export von Modellen erlauben. Die wichtigsten Inhalte von Open Neural Network Exchange sind die Definitionen des Graphen, der Operatoren, der Funktionen und der Standard-Datentypen. Die Berechnungsgraphen bestehen aus einer Abfolge von Knoten, die einen sogenannten azyklischen Graphen bilden. Jeder Knoten im Graphen hat ein oder mehrere Ein- und Ausgänge. Frameworks, die ONNX unterstützen, stellen Implementierungen der ONNX-Operatoren zur Verfügung und sorgen so für die Portabilität der Modelle.

Vorteile durch den Einsatz von ONNX

Der Einsatz von ONNX bietet eine ganze Reihe Vorteile. Deep-Learning-Modelle lassen sich mit wenig Aufwand zwischen verschiedenen Frameworks verschieben. Entwickler sind dadurch in der Lage, das jeweils für ihre Zwecke am besten geeignete Framework auszuwählen. Es lassen sich unterschiedliche Frameworks für das gleiche Modell beispielsweise in der Entwicklung, in der Produktion, in der Trainingsphase oder für die Inferenz einsetzen. Entwicklungszeiten verkürzen sich und Innovationen sind schneller am Markt verfügbar. Zudem werden vorhandene Hard- und Softwareressourcen besser genutzt. Ein Deep-Learning-Modell ist nicht mehr fest an ein bestimmtes Framework gebunden. Verändert sich der Markt oder stehen neue Frameworks mit besserer Eignung für ein bestimmtes Modell zur Verfügung, ist ein schneller und einfacher Umstieg möglich. Hardwarehersteller profitieren durch ONNX, indem sie dank des austauschbaren Formats und der Interoperabilität der Modelle eine größere Zielgruppe ansprechen.

Was ist der ONNX Model Zoo?

Für ONNX existiert ein sogenannter ONNX Model Zoo. Es handelt sich um eine Sammlung von Deep-Learning-Modellen für verschiedene Einsatzbereiche, die im ONNX-Format verfügbar und bereits vortrainiert sind. Zu jedem Modell werden sogenannte Jupyter Notebooks mitgeliefert. Ein Jupyter Notebook ist eine Open-Source-Web-Applikation, die es ermöglicht, Live-Code, Dokumente, Visualisierungen, Texte und Gleichungen zu erstellen und zu teilen. Die Notebooks sind in Python geschrieben und enthalten im Fall des ONNX Model Zoos Beschreibungen des Modells und Links zu den Trainingsdaten.

Was ist ONNX.js?

Bei ONNX.js handelt es sich um eine JavaScript-Bibliothek. Sie führt Berechnungen ONNX-basierter Modelle direkt in einem Webbrowser aus. Rechner mit Browser lassen sich ohne die Notwendigkeit der Installation zusätzlicher Software für maschinelles Lernen verwenden. ONNX.js nutzt sowohl die Rechenleistung der CPU als auch der GPU. Um auf die GPU zuzugreifen, kommt die JavaScript-Programmierschnittstelle WebGL zum Einsatz.

(ID:46056251)

Über den Autor