ONNX Runtime Web holt ML-Modelle in den Browser
Als Ergänzung der ONNX Runtime soll ORT Web onnx.js ablösen, um Machine-Learning-Modelle im Browser bereitzustellen und auszuführen.
Microsoft baut seine ONNX (Open Neural Network Exchange) Runtime mit einer Erweiterung für den Browsereinsatz aus. ONNX Runtime Web (ORT Web) soll mittelfristig onnx.js ablösen, um insbesondere JavaScript-Entwicklerinnen und -entwicklern bessere Möglichkeiten zu verschaffen, Machine-Learning-Modelle direkt im Browser bereitzustellen und dort ausführen zu können. ORT Web soll unter anderem eine breitere Modellabdeckung sowie höhere Leistung bei der Inferenz bieten.
Cross Platform
Während ONNX Runtime als Inferenz-Engine für die Cross-Platform-Verwendung konzipiert ist und mit verbreiteten ML-Frameworks wie TensorFlow, PyTorch und SciKit Learn zusammenarbeitet, will Microsoft das Einsatzspektrum für ML-basierte Anwendungen mit ORT Web nun noch deutlich erweitern. Das Ausführen im Browser soll nicht nur höhere Leistung bieten, sondern es Entwicklerinnen und Entwicklern auch einfacher gestalten, die Applikationen auf den unterschiedlichsten Plattformen zu betreiben, ohne dafür individuelle Treiber und Libraries bereitstellen zu müssen.
ORT Web nutzt dabei die Hardwareinfrastruktur aus CPUs und GPUs über zwei getrennte Backends: WebAssembly (Wasm) und WebGL. Um den C++-Code der nativen ONNX Runtime CPU Engine für WebAssembly zu kompilieren, greift Microsoft auf die Open-Source-Compiler-Toolchain Emscripten zurück. Auf diese Weise soll sichergestellt werden, dass das Wasm-Backend möglichst den kompletten Funktionsumfang der ONNX Runtime auf CPUs nutzen kann, einschließlich sämtlicher Operatoren, quantisierter ONNX-Modelle sowie der Mini-Runtime. Beim Initialisieren prüft ORT Web zudem, ob die vorhandene Umgebung auch Funktionen wie Multi-Threading und SIMD (Single Instruction, Multiple Data) unterstützt – insbesondere SIMD steht derzeit noch nicht in allen Browsern für WebAssembly zur Verfügung.
Lesen Sie auch
Machine Learning im Browser mit TensorFlow.js
WebAssembly- und WebGL-Backends
Um die Hardwarebeschleunigung von GPUs für die Inferenz zu nutzen und Optimierungsfunktionen wie Pack Mode, Data Cache, Code Cache und Node Fusion anwenden zu können, greift ORT Web über ein WebGL-Backend auf die Prozessoren zu. Die mit dem Standard OpenGL ES 2.0 konforme JavaScript-API steht für eine Reihe von Browsern auf den Betriebssystemen Windows, Linux, macOS, Android und iOS parat, im Vergleich zu Wasm müssen Entwicklerinnen und Entwickler jedoch noch einige Einschränkungen berücksichtigen. Eine aktualisierte Kompatibilitätsmatrix im GitHub-Repository der ONNX Runtime enthält konkrete Hinweise.
ORT Web lässt sich auf zwei Arten nutzen: über ein Skript-Tag oder einen Bundler. Das folgende Code-Beispiel zeigt, wie sich die API zur Inferenz eines ML-Modells über die beiden Backends aufrufen lässt.
const ort = require('onnxruntime-web');
// create an inference session, using WebGL backend. (default is 'wasm')
const session = await ort.InferenceSession.create('./model.onnx', { executionProviders: ['webgl'] });
ďż˝
// feed inputs and run
const results = await session.run(feeds);
Die APIs zur Bewertung des Modells in ORT Web ähneln jenen der nativen ONNX Runtime, wobei zunächst eine ONNX-Runtime-Inferenzsitzung mit dem Modell erstellt und anschließend die Sitzung mit Eingabedaten ausgeführt wird. Anhand der ORT Web Demo lässt sich der Einsatz im Browser in verschiedenen Szenarien nachvollziehen. Weitergehende Informationen zu ONNX Runtime Web fasst ein Blogbeitrag zusammen.
(map)