Analyse des améliorations de performances des modèles d'IA en utilisant Wasm à la pointe

DEV - 30/09
TL; DR: WebAssembly (WASM) vous permet d'expédier le même module d'inférence AI à travers un bord sauf-différent ...

TL; DR: WebAssembly (WASM) vous permet d'expédier le même module d'inférence AI sur des périphériques de bord très différents, avec un sable fort et une vitesse presque native lors de l'utilisation de threads SIMD +. Vous trouverez ci-dessous une configuration minimale pour mesurer la latence, le débit, la mémoire et le démarrage à froid:

Inférence du processeur natif (node onnxruntime)

Inférence du processeur WasM (onnxruntime-webExécution via webassembly + simd + threads)

Nous utiliserons un modèle de petite vision (Squeezenet) pour garder les choses rapidement.

Pourquoi Wasm

  • Portabilité: un module → De nombreux processeurs / OSS.
  • Sécurité: Strong Sandbox limite le rayon de souffle sur les boîtes de bord partagées.
  • Performance: avec des threads SIMD + et AOT / JIT, WasM atterrit souvent près du CPU natif; Les starts froids sont généralement plus rapides que les conteneurs en rotation.

Disposition du projet

Modèles WasM-Edge-Aai / ├─ / │ └fique Squeezenet.onnx ├─ Données / │ └fique
Entrez le mode de sortie en mode plein écran

Modèle: Utilisez n'importe quel petit ImageNet ONNX (par exemple, Squeezenet 1.1). Image: Toute petite image RVB (par exemple, 224 × 224 ou nous redimensions).

1) Installer le modèle DEPS et Fetch

MKDIR -P WASM-Edge-Aai / {Modèles, données, SRC} CD WasM-Edge-AI NPM Init -Y # Native CPU Runtime NPM I ONNXRUNTIME-NODE # WASM Runtime (exécute dans Node via WebAssembly) npm i onnxrunttime-web # Image + Tensir Pidusage # (Get Model & Image) Curl -l -o Modèles / Squeezenet.onnx https://github.com/onnx/models/raw/main/vision/classification/squeezenet/Model/Squeezenet1.1-7.onnx Curl -L -o Data / Cat.jpg https://raw.githubusercontent.com/onnx/models/main/vis...
[Courte citation de 8% de l'article original]
Loading...