ONNX
# ONNX

ONNX (Open Neural Network Exchange) [ˈo:nʏks] ist ein offenes Format zur Repräsentation von Deep-Learning-Modellen. Mit ONNX können KI-Entwickler Modelle zwischen verschiedenen Tools austauschen und die für sie beste Kombination dieser Tools wählen. ONNX wird von Microsoft, Amazon, Facebook und weiteren Partnern als Open-Source-Projekt gemeinsam entwickelt und unterstützt.

ONNX ermöglicht es, Modelle in einem Framework zu trainieren und danach zur Gesichtserkennung, Erkennung von Gesten oder Objekten etc. auf ein anderes Framework zu übertragen. Hierdurch können Entwickler die jeweils passende Kombination von Werkzeugen einsetzen. ONNX-Modelle wurden 2019 in Caffe2, Microsoft Cognitive Toolkit, MXNet, PyTorch und OpenCV unterstützt, und es gibt Schnittstellen für viele andere gängige Frameworks und Bibliotheken.

Die LF AI Foundation, eine Unterorganisation der Linux Foundation, ist eine Organisation zum Aufbau eines Ökosystems zur Unterstützung von Open-Source-Innovationen in den Bereichen künstliche Intelligenz (KI), maschinelles Lernen (ML) und Deep Learning (DL). Sie hat am 14. November 2019 ONNX als Graduate-Level-Projekt aufgenommen. Diese Verlagerung von ONNX unter das Dach der LF AI Foundation wurde als wichtiger Meilenstein bei der Etablierung von ONNX als herstellerneutraler Open-Format-Standard angesehen.

Der ONNX Model Zoo ist eine Sammlung von vortrainierten Modellen im Deep Learning Bereich, die im ONNX Format erhältlich sind. Zu jedem Modell gibt es Jupyter-Notebooks für das Modelltraining und die Durchführung von Inferenzen mit dem trainierten Modell. Die Notebooks sind in Python geschrieben und enthalten Links zum Trainingsdatensatz sowie Verweise auf das wissenschaftliche Originaldokument, das die Modellarchitektur beschreibt.

## ONNX.js

ONNX.js ist eine JavaScript-Bibliothek zum Ausführen von ONNX-Modellen in Webbrowsern und auf Node.js. Mit ONNX.js können Webentwickler vorab trainierte ONNX-Modelle direkt im Webbrowser einbinden und testen. Dies bringt folgende Vorteile: Reduzierung der Server-Client-Kommunikation, Schutz der Benutzerdaten, plattformübergreifendes Maschinelles Lernen ohne Installation von Software auf dem Client.

ONNX.js kann sowohl auf der CPU als auch auf der GPU ausgeführt werden. Für den Betrieb auf der CPU wird WebAssembly verwendet. Hierdurch wird das Modell mit nahezu nativer Geschwindigkeit ausgeführt. Darüber hinaus nutzt ONNX.js Web Worker, um eine „multi-threaded“ Umgebung zur Parallelisierung der Datenverarbeitung bereitzustellen. Die empirische Auswertung zeigt sehr vielversprechende Leistungssteigerungen auf der CPU, indem sie die Vorteile von WebAssembly und Web Workers voll ausschöpft. Zur Ausführung auf GPUs dient WebGL, einen Standard für den Zugriff auf GPU-Funktionen.

