Das Open Neural Network Exchange (ONNX) ist ein offenes Ökosystem und ein Standard zur Darstellung von Modellen des maschinellen Lernens. Es bietet eine gemeinsame Darstellung für KI-Algorithmen, die es ermöglicht, Modelle zwischen verschiedenen Frameworks, Werkzeugen und Hardwareplattformen zu übertragen. ONNX wird von einer kollaborativen Gemeinschaft aus Technologieunternehmen und Forschungsorganisationen gesteuert und zielt darauf ab, die Entwicklung und den Einsatz von neuronalen Netzen und anderen Systemen des maschinellen Lernens zu optimieren.
ONNX ist auf GitHub verfügbar, wo seine Spezifikationen, Operatoren und Werkzeuge gepflegt werden. Das Format definiert ein erweiterbares Berechnungsgraphenmodell, eingebaute Operatoren und Standarddatentypen, wobei der Schwerpunkt auf Inferenz (Auswertung) und nicht auf Training liegt. Es verwendet Protocol Buffers als Containerformat, was eine effiziente Serialisierung und Kompatibilität über verschiedene Sprachen und Systeme hinweg gewährleistet.
Geschichte
ONNX wurde ursprünglich unter dem Codenamen „Toffee“ vom PyTorch-Team bei Facebook entwickelt. Im September 2017 wurde es in ONNX umbenannt und von Facebook und Microsoft öffentlich angekündigt. Die Ankündigung positionierte das Format als Mittel zur Förderung der Interoperabilität im schnell wachsenden Bereich des Deep Learning.
In den Monaten nach der Einführung erklärten mehrere große Technologieunternehmen ihre Unterstützung für die Initiative, darunter IBM, Huawei, Intel, AMD, Arm und Qualcomm. Im Oktober 2017 erweiterte Microsoft sein Engagement, indem es ankündigte, dass seine Cognitive Toolkit und die Project Brainwave Plattform in ONNX integriert werden. Im darauffolgenden Jahr erhielt das Projekt breitere institutionelle Unterstützung: Im November 2019 wurde ONNX als Graduiertenprojekt unter der Linux Foundation AI aufgenommen, ein Schritt, der seine Governance und seinen Open-Source-Status festigte. Im Oktober 2020 trat Zetane Systems dem ONNX-Ökosystem als Mitglied bei und erweiterte die Gemeinschaft weiter.
Zielsetzung
Das Hauptziel von ONNX ist es, die Interoperabilität zwischen Frameworks zu ermöglichen. Entwickler können Modelle in einem Framework wie PyTorch oder TensorFlow erstellen und sie in das ONNX-Format exportieren, um sie in einer anderen Umgebung zu verwenden. Diese Fähigkeit ist in verschiedenen Phasen des Entwicklungsprozesses besonders wertvoll, einschließlich Training, Architekturdesign, Modellevaluierung und Bereitstellung auf mobilen oder eingebetteten Geräten. Durch die Entkopplung der Modelldarstellung von spezifischen Software-Stapeln reduziert ONNX die Abhängigkeit von einem einzelnen Anbieter und vereinfacht die Zusammenarbeit zwischen Teams.
Ein weiteres wichtiges Ziel ist die gemeinsame Optimierung. ONNX bietet eine gemeinsame Darstellung, die Hardwarehersteller und Softwareentwickler nutzen können, um Leistungsoptimierungen für neuronale Netze über mehrere Frameworks hinweg anzuwenden. Dies bedeutet, dass eine einzelne Optimierungstechnik, wie z.B. Operator-Fusion oder Quantisierung, Modellen aus verschiedenen Quellen zugutekommen kann und die Ausführung auf GPUs, CPUs und spezialisierten KI-Beschleunigern beschleunigt.
Format und Struktur
ONNX-Modelle werden als gerichtete azyklische Graphen (DAGs) dargestellt, wobei jeder Knoten einem Operatoraufruf entspricht. Die Knoten haben definierte Ein- und Ausgänge, die einen Datenflussgraphen bilden, der die Berechnung beschreibt. Der Graph wird von Metadaten begleitet, die Eigenschaften wie Modellversion, Autor und Trainingsinformationen dokumentieren. Eingebaute Operatoren sind in jedem ONNX-konformen Framework garantiert verfügbar, was eine grundlegende Funktionalität über alle Implementierungen hinweg sicherstellt.
Das Format ist erweiterbar und ermöglicht das Hinzufügen benutzerdefinierter Operatoren und Datentypen für spezielle Anwendungsfälle. Diese Flexibilität hat ONNX zu einer Brücke zwischen Forschungsumgebungen wie PyTorch und Produktionsumgebungen sowie zwischen Edge-Geräten und Cloud-Infrastrukturen gemacht.
Ökosystem und Akzeptanz
ONNX hat Beiträge von einer breiten Palette von Organisationen erhalten, darunter Cloud-Anbieter, Halbleiterunternehmen und Forschungslabore. Diese Partner haben Werkzeuge zur Konvertierung von Modellen in das ONNX-Format und zurück sowie Laufzeitumgebungen entwickelt, die ONNX-Graphen effizient ausführen. Das Ökosystem unterstützt wichtige Frameworks wie PyTorch und TensorFlow und ermöglicht einen reibungslosen Übergang vom Training zur Bereitstellung.
Hardwarehersteller nutzen ONNX als gemeinsames Ziel für Optimierungen. Durch die Anwendung von Leistungsoptimierungen auf ONNX-Graphen können sie eine breite Palette von Modellen erreichen, ohne für jedes Framework individuelle Lösungen entwickeln zu müssen. Dies hat ONNX zu einem Schlüsselelement bei der Bereitstellung von Modellen auf Geräten gemacht, die von Mobiltelefonen bis zu Cloud-Servern reichen.
Die Linux Foundation AI hostet das Projekt, bietet eine anbieterneutrale Governance und fördert die Zusammenarbeit zwischen Wettbewerbern. Diese Struktur spiegelt andere Open-Source-Initiativen wider und stellt sicher, dass sich der Standard mit Beiträgen aus der gesamten Gemeinschaft weiterentwickelt.
Inhalt und technischer Aufbau
Im Kern definiert ONNX ein erweiterbares Berechnungsgraphenmodell. Jeder Graph ist eine Liste von Knoten, die eine azyklische Struktur bilden, wobei jeder Knoten einen Operatoraufruf darstellt. Der Graph wird durch Metadaten ergänzt, die Informationen über den Zweck, die Version und den Autor des Modells enthalten. Eingebaute Operatoren wie Matrixmultiplikation, Faltung und Aktivierungsfunktionen sind spezifiziert und in jedem ONNX-fähigen Framework verfügbar.
Das Containerformat ist Protocol Buffers, ein sprachneutraler Serialisierungsmechanismus, der kompakt und weit verbreitet ist. Diese Wahl erleichtert den Austausch von Modellen über verschiedene Programmiersprachen und Systeme hinweg, einschließlich C++, Python und Java.
Betrieblicher Ablauf
Ein typischer ONNX-Workflow beginnt mit dem Training eines Modells in einem einzelnen Framework wie PyTorch oder TensorFlow. Anschließend wird das Modell in das ONNX-Format exportiert. Dieser Exportprozess erfasst den Berechnungsgraphen des Modells, einschließlich seiner Operatoren und Parameter, in einer standardisierten Datei. Sobald das Modell im ONNX-Format vorliegt, kann es in andere Systeme geladen werden, um es zu testen, zu validieren oder für die Produktion bereitzustellen.
Da ONNX hardwareunabhängig ist, kann dieselbe Modelldatei auf verschiedenen Laufzeitumgebungen ausgeführt werden, einschließlich CPUs, GPUs und speziellen KI-Chips. Diese Flexibilität ist für moderne KI-Anwendungen von entscheidender Bedeutung, da das Training oft auf leistungsstarken Clustern erfolgt, während die Inferenz auf Geräten mit begrenzten Ressourcen am Rand des Netzwerks stattfinden muss. Die gemeinsame Darstellung erleichtert auch das Benchmarking und den Vergleich von Modellen über verschiedene Frameworks hinweg.
Ökosystem und Akzeptanz
ONNX wurde von einer breiten Palette von Organisationen in der KI-Branche übernommen, darunter Cloud-Anbieter, Chiphersteller und Softwareentwickler. Seine Governance unter der Linux Foundation AI hat zur Transparenz und zur gemeinschaftsgetriebenen Entwicklung beigetragen. Die Spezifikationen des Projekts werden versioniert und öffentlich gepflegt, was Beiträge von Forschern und Ingenieuren auf der ganzen Welt ermöglicht.
Siehe auch
Kategorien
- machine-learning
- open-source
- interoperability
- neural-networks