AccueilActualités informatiqueONNX Runtime Web apporte des modèles ML dans le navigateur

ONNX Runtime Web apporte des modèles ML dans le navigateur

Microsoft étend son Runtime ONNX (Open Neural Network Exchange) avec une extension pour l’utilisation du navigateur. ONNX Runtime Web (ORT Web) est destiné à remplacer onnx.js à moyen terme afin de fournir aux développeurs JavaScript en particulier de meilleures options pour fournir des modèles d’apprentissage automatique directement dans le navigateur et les y exécuter. Entre autres choses, ORT Web devrait offrir une couverture de modèle plus large et une meilleure performance en inférence.

Sommaire

Alors qu’ONNX Runtime est conçu comme un moteur d’inférence pour une utilisation multiplateforme et qu’il fonctionne avec des frameworks ML très répandus tels que TensorFlow, PyTorch et SciKit Learn, Microsoft souhaite désormais élargir considérablement la gamme d’utilisations des applications basées sur le ML avec ORT Web. L’exécution dans le navigateur devrait non seulement offrir de meilleures performances, mais aussi permettre aux développeurs d’exécuter plus facilement les applications sur une grande variété de plates-formes sans avoir à fournir des pilotes et des bibliothèques individuels.

ORT Web utilise l’infrastructure matérielle des CPU et des GPU via deux backends distincts : WebAssembly (Wasm) et WebGL. Pour compiler le code C++ du moteur d’exécution ONNX CPU natif pour WebAssembly, Microsoft utilise la chaîne d’outils de compilation open source Emscripten. Ceci afin de s’assurer que le backend Wasm peut utiliser la gamme complète des fonctions du Runtime ONNX sur les CPUs, y compris tous les opérateurs, les modèles ONNX quantifiés et le Mini-Runtime. Lors de l’initialisation, ORT Web vérifie également si l’environnement existant supporte également des fonctions telles que le multithreading et SIMD (Single Instruction, Multiple Data) – SIMD en particulier n’est pas encore disponible dans tous les navigateurs pour WebAssembly.

Lire aussi

Afin d’utiliser l’accélération matérielle des GPU pour l’inférence et de pouvoir appliquer des fonctions d’optimisation telles que Pack Mode, Data Cache, Code Cache et Node Fusion, ORT Web accède aux processeurs via un backend WebGL. L’API JavaScript, qui est conforme à la norme OpenGL ES 2.0, est disponible pour un certain nombre de navigateurs sur les systèmes d’exploitation Windows, Linux, macOS, Android et iOS, mais par rapport à Wasm, les développeurs doivent encore tenir compte de certaines limitations. Une matrice de compatibilité mise à jour dans le dépôt GitHub du Runtime ONNX contient des indications concrètes.

ORT Web peut être utilisé de deux manières : via un tag de script ou un bundler. L’exemple de code suivant montre comment l’API d’inférence d’un modèle ML peut être appelée via les deux backends.

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);

Les APIs pour évaluer le modèle dans ORT Web sont similaires à celles du runtime ONNX natif, en créant d’abord une session d’inférence du runtime ONNX avec le modèle, puis en exécutant la session avec des données d’entrée. La démo ORT Web peut être utilisée pour démontrer son utilisation dans le navigateur dans différents scénarios. Des informations supplémentaires sur ONNX Runtime Web sont résumées dans un article de blog.


(carte)

Plus d'articles