Présentation de WebLLM

WebLLM est un moteur d’inférence de grands modèles de langage (LLM) conçu pour fonctionner entièrement dans le navigateur. Développé par MLC‑AI, il repose sur les standards WebGPU et WebAssembly afin d’exploiter le GPU du client sans recourir à un serveur distant. La version publiée en 2024 supporte les modèles quantifiés 4‑bit et 8‑bit, dont LLaMA‑2‑7B‑Chat et Falcon‑7B, et permet de lancer la génération de texte en temps réel depuis une page web.

Architecture et mécanismes d’inférence

Le pipeline de WebLLM s’appuie sur le compilateur TVM qui transforme les graphes de calcul du modèle en kernels WebGPU. Chaque couche du réseau est traduite en code WGSL (WebGPU Shading Language) puis empaquetée dans un module WebAssembly. Cette double couche garantit que les opérations de matrice‑vecteur sont exécutées directement sur le GPU du navigateur, réduisant les copies de données entre CPU et GPU.

La quantisation 4‑bit (format q4f16_1) diminue la taille du modèle de plus de 75 % par rapport à la version FP16, ce qui rend possible le chargement d’un modèle 7 B paramètres dans la mémoire limitée d’un navigateur (environ 2 GB). Le moteur charge les poids de façon asynchrone via fetch et les stocke dans des buffers GPU, évitant ainsi les goulots d’étranglement liés au réseau après le premier téléchargement.

import { init } from "@mlc-ai/web-llm";
const model = await init({
  model: "Llama-2-7b-chat-hf-q4f16_1",
  device: "webgpu"
});
const output = await model.generate("Explain quantum tunneling.");
console.log(output);

Performances et limites

Sur un laptop équipé d’un GPU Intel Iris Xe, WebLLM génère un token toutes les 120 ms pour le modèle LLaMA‑2‑7B‑Chat quantifié 4‑bit. Cette cadence correspond à environ 8 tokens par seconde, soit un facteur 2,5 d’amélioration par rapport à une exécution purement CPU. Sur un GPU dédié Nvidia RTX 3060, le même modèle atteint 70 ms par token, soit 14 tokens par seconde.

Les performances dépendent fortement de la bande passante du GPU et de la capacité de la mémoire vidéo. Les navigateurs qui ne supportent pas encore WebGPU (Safari 15, versions antérieures de Chrome) ne peuvent exécuter WebLLM qu’en mode CPU, avec un ralentissement d’un ordre de grandeur. De plus, la quantisation 4‑bit introduit une perte de précision de l’ordre de 0,2 % sur les scores de perplexité, ce qui se traduit parfois par des réponses légèrement moins cohérentes que la version FP16.

Enfin, le modèle doit être hébergé sur un serveur compatible CORS pour que le navigateur puisse le récupérer. L’absence de support de streaming de poids depuis certains CDN peut augmenter le temps de démarrage jusqu’à 5 s pour les modèles de 7 B paramètres.