Pile Rust+Wasm : une alternative puissante à Python
- Les applications Rust+Wasm ont une taille 100 fois plus petite que celles en Python, sont 100 fois plus rapides et peuvent s’exécuter en toute sécurité partout, sans aucun changement de l’accélération matérielle.
- Rust est le langage de l’AGI (intelligence artificielle générale), et permet de créer un programme Rust simple capable d’exécuter l’inférence du modèle llama2 à sa vitesse d’origine.
- L’application binaire compilée en Wasm (2 Mo) est entièrement portable sur des appareils dotés de divers accélérateurs matériels.
- Le runtime Wasm (WasmEdge) fournit un environnement d’exécution sûr et sécurisé dans le cloud.
Installation et exécution du programme Rust
- Étape 1. Installer WasmEdge et le plugin GGML : sur un appareil Linux ou Mac, utiliser les commandes ci-dessous pour l’installation.
- Étape 2. Télécharger l’application Wasm précompilée et le modèle : télécharger le modèle llama2 au format GGUF et, dans l’exemple, une version du modèle llama2 7B chat-tuned quantifiée en poids sur 5 bits.
- Étape 3. Exécuter : lancer l’application d’inférence wasm avec WasmEdge, lui passer le modèle GGUF, puis saisir une question pour dialoguer avec le modèle.
Configuration du comportement du modèle
- Il est possible de configurer la manière d’interagir avec le modèle à l’aide d’options en ligne de commande.
- Par exemple, on peut spécifier une longueur de contexte donnée, définir le nombre maximal de tokens à prédire dans chaque réponse, afficher des statistiques et diffuser la réponse du modèle vers
stdout. - Le programme génère environ 25 tokens par seconde sur un MacBook M2 d’entrée de gamme.
Agents et applications LLM
- Un serveur API compatible OpenAI est créé à l’aide de Rust et WasmEdge.
- Cela permet de créer des agents et des applications LLM avec des outils de développement compatibles OpenAI.
Les avantages de Rust+Wasm par rapport à Python
- La pile Rust+Wasm constitue une alternative puissante à la pile Python pour les applications d’inférence IA et fournit une infrastructure de cloud computing.
- Ultra-léger : l’application d’inférence ne pèse que 2 Mo, dépendances comprises.
- Très rapide : elle offre des performances natives C/Rust dans toutes les parties de l’application d’inférence.
- Portabilité : la même application en bytecode Wasm peut s’exécuter sur toutes les principales plateformes informatiques prenant en charge des accélérations matérielles hétérogènes.
- Installation, développement et déploiement faciles : sans dépendances complexes, il est possible de compiler un seul fichier Wasm avec des outils standards sur un ordinateur portable et de le déployer partout.
- Sûr et prêt pour le cloud : le runtime Wasm est conçu pour isoler du code utilisateur non fiable, peut être géré par des outils de conteneurisation et se déploie facilement sur des plateformes cloud-native.
Programme d’inférence Rust
- Le programme de démonstration d’inférence est écrit en Rust et compilé en Wasm.
- Le code source Rust est très simple et tient en seulement 40 lignes de code.
- Le programme Rust gère les entrées utilisateur, suit l’historique de la conversation, convertit le texte dans le template de chat de llama2 et exécute les tâches d’inférence via l’API WASI NN.
Exécution dans le cloud ou en edge
- Une fois le fichier bytecode Wasm obtenu, il peut être déployé sur tout appareil prenant en charge le runtime WasmEdge.
- WasmEdge s’installe avec le plugin GGML et exploite automatiquement diverses accélérations matérielles pour exécuter le modèle llama2.
Étapes suivantes
- Les outils WasmEdge GGML sont déjà disponibles et utilisés par des clients cloud-native, mais ils en sont encore à un stade précoce.
- Si vous souhaitez contribuer au projet open source et aider à façonner l’avenir de l’infrastructure d’inférence LLM, plusieurs tâches de bas niveau permettent de participer.
Autres modèles d’IA
- WasmEdge et WASI NN permettent de construire, en alternative à Python, des applications d’inférence à la fois légères, rapides, portables et sûres.
- Par exemple, le projet mediapipe-rs fournit une API Rust+Wasm pour les modèles Tensorflow mediapipe de Google.
L’avis de GN⁺
L’essentiel de cet article est de proposer, avec Rust et WebAssembly (Wasm), une alternative à Python pour l’inférence IA, offrant des avantages marqués en termes de taille, de vitesse, de portabilité et de sécurité. Cette pile technologique intègre une infrastructure de cloud computing afin d’améliorer les performances sur divers appareils et dans des environnements cloud, de résoudre les problèmes de dépendances complexes et de simplifier le développement comme le déploiement. Cette approche pourrait avoir un impact majeur, en particulier sur l’avenir de l’edge computing et de l’inférence IA, ce qui en fait un sujet particulièrement intéressant pour les passionnés de technologie.
1 commentaires
Avis Hacker News
llama.cpp, avec un retour d’expérience partagé sur le développement d’un framework de ML en Rust et WebGPU.llama.cpp, et la vitesse d’inférence comme la taille du binaire ne sont pas limitées par le choix du wrapper.