Exécuter des LLM dans le navigateur : WebLLM, Transformers.js et ONNX Runtime Web en 2026
技术架构
Les LLM N'Ont Plus Besoin de Serveurs
GPT-4 nécessite des API cloud ? C'est la pensée de 2024. En 2026, les modèles de 7B paramètres fonctionnent fluidement dans le navigateur, et vos données ne quittent jamais votre appareil.
Confidentialité + Coût Zéro + Hors Ligne = Les trois avantages décisifs de l'IA côté navigateur
Chronologie de l'Évolution de l'IA dans le Navigateur
2023 Q4 WebLLM lancé, Llama 2 à 2 tok/s dans le navigateur
2024 Q2 Transformers.js publié, écosystème Hugging Face connecté
2024 Q4 Support complet WebGPU, accélération d'inférence 5x
2025 Q2 ONNX Runtime Web supporte WebGPU, niveau entreprise
2025 Q4 Percée en quantification, modèles 7B compressés à 3 Go
2026 Q2 Gemma 3 4B atteint 25 tok/s dans le navigateur — point d'inflexion de qualité
Trois Frameworks en un Coup d'Œil
| Framework | Focus | Technologie Principale | Idéal Pour |
|---|---|---|---|
| WebLLM | Inférence LLM haute performance | WebGPU + MLCEngine | Chat, complétion de code |
| Transformers.js | Inférence ML full-stack | ONNX + WASM/WebGPU | NLP, vision, audio |
| ONNX Runtime Web | Moteur d'inférence entreprise | ONNX + WebGPU/WASM | Déploiement en production |
WebLLM — Le Roi de la Performance des LLM dans le Navigateur
Architecture
┌──────────────────────────────────────────────────┐
│ Couche Application │
│ Chat UI │ Complétion Code │ Résumé │ ... │
├──────────────────────────────────────────────────┤
│ Moteur WebLLM │
│ ChatModule │ Pipeline │ Tokenizer │ Scheduler │
├──────────────────────────────────────────────────┤
│ MLCEngine (Optimisation de Compilation) │
│ Model Compile │ Kernel Opt │ Quantization │
├──────────────────────────────────────────────────┤
│ Runtime WebGPU │
│ Compute Shader │ GPU Buffer │ Pipeline State │
└──────────────────────────────────────────────────┘
Démarrage Rapide
import { CreateMLCEngine } from "@mlc-ai/web-llm";
const engine = await CreateMLCEngine("gemma-3-4b-it-q4f16_1-MLC", {
initProgressCallback: (progress) => {
console.log(`Loading: ${(progress.progress * 100).toFixed(1)}%`);
},
});
const reply = await engine.chat.completions.create({
messages: [
{ role: "system", content: "You are a helpful AI assistant." },
{ role: "user", content: "Write a quicksort in TypeScript" },
],
temperature: 0.7,
max_tokens: 1024,
stream: true,
});
for await (const chunk of reply) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
Modèles Supportés et Performance (Juin 2026)
| Modèle | Paramètres | Taille Quantifiée | Vitesse (tok/s) | Premier Chargement |
|---|---|---|---|---|
| Gemma 3 4B IT | 4B | 2,3 Go | 25 | 8s |
| Phi-4 Mini | 3.8B | 2,1 Go | 28 | 7s |
| Qwen2.5 3B | 3B | 1,8 Go | 32 | 6s |
| SmolLM2 1.7B | 1.7B | 1,0 Go | 45 | 4s |
| Qwen2.5 0.5B | 0.5B | 0,4 Go | 85 | 2s |
Environnement de test : M3 MacBook Pro / Chrome 126 / WebGPU
Transformers.js — L'Écosystème Hugging Face dans le Navigateur
Avantage Principal : L'Écosystème de Modèles le Plus Riche
import { pipeline } from "@xenova/transformers";
const classifier = await pipeline("text-classification", "Xenova/distilbert-base-uncased-finetuned-sst-2-english");
const result = await classifier("This browser AI is amazing!");
// [{ label: "POSITIVE", score: 0.9998 }]
Pipelines Supportés
| Pipeline | Cas d'Usage | Modèle Exemple |
|---|---|---|
| text-classification | Analyse de sentiment | distilbert-sst2 |
| question-answering | Système question-réponse | distilbert-qa |
| summarization | Résumé | distilbart-cnn |
| translation | Traduction | opus-mt-en-zh |
| image-classification | Classification d'images | vit-base-patch16 |
| automatic-speech-recognition | Reconnaissance vocale | whisper-tiny |
ONNX Runtime Web — Moteur d'Inférence Entreprise
Utilisation de Base
import ort from "onnxruntime-web";
async function runInference(modelPath: string, input: Float32Array) {
const session = await ort.InferenceSession.create(modelPath, {
executionProviders: ["webgpu", "wasm"],
graphOptimizationLevel: "all",
});
const inputTensor = new ort.Tensor("float32", input, [1, input.length]);
const results = await session.run({ input: inputTensor });
return results.output.data;
}
Stratégie de Sélection du Fournisseur
function getBestProvider(): string {
if (navigator.gpu) return "webgpu";
if (document.createElement("canvas").getContext("webgl2")) return "webgl";
return "wasm";
}
Benchmarks de Performance : Comparaison Complète
Inférence LLM (Gemma 3 4B, quantification 4 bits)
| Métrique | WebLLM | Transformers.js | ONNX Runtime Web |
|---|---|---|---|
| Vitesse (tok/s) | 25 | 18 | 22 |
| Premier Chargement | 8s | 12s | 10s |
| Mémoire | 3,2 Go | 3,8 Go | 3,5 Go |
| Streaming | ✅ | ✅ | ❌ |
| Compatibilité OpenAI API | ✅ | ❌ | ❌ |
Stratégies de Déploiement en Production
Dégradation Élégante
async function createEngineWithFallback() {
if (navigator.gpu) {
try { return await CreateMLCEngine("gemma-3-4b-it-q4f16_1-MLC"); }
catch (e) { console.warn("WebGPU failed, falling back to smaller model"); }
}
try { return await CreateMLCEngine("SmolLM2-1.7B-q4f16_1-MLC"); }
catch (e) { console.warn("Small model failed, falling back to API"); }
return new APIFallbackEngine({ endpoint: "/api/chat" });
}
Support Hors Ligne avec Service Worker
const MODEL_CACHE = "ai-models-v1";
self.addEventListener("install", (event) => {
event.waitUntil(
caches.open(MODEL_CACHE).then((cache) =>
cache.addAll(["/models/smolm2-1.7b-q4.onnx", "/models/tokenizer.json"])
)
);
});
Matrice de Décision
Votre besoin ?
├─ Chat / IA Conversationnelle → ✅ WebLLM
├─ IA Multimodale → ✅ Transformers.js
├─ Production Entreprise → ✅ ONNX Runtime Web
├─ App Offline-First → ✅ WebLLM + Service Worker
└─ Prototype Rapide → ✅ Transformers.js
Tendances H2 2026
| Tendance | Description |
|---|---|
| WebGPU Universel | Support Safari 18+, plus de problèmes de compatibilité |
| MoE dans le Navigateur | Modèles creux Mixtral exécutés dans le navigateur |
| Fine-tuning sur Appareil | Poids LoRA téléchargés, modèles personnalisés sans serveur |
| API Web AI du W3C | Capacités IA natives du navigateur standardisées |
Résumé
- L'IA dans le navigateur est passée du « jouet » à l'« outil » — modèle 4B à 25 tok/s est utilisable
- Trois frameworks, trois forces — WebLLM rapide, Transformers.js complet, ONNX stable
- La confidentialité est la fonctionnalité clé — Les données ne quittent jamais le navigateur, coût serveur zéro
- La stratégie de dégradation est essentielle — WebGPU → petit modèle → API cloud, disponibilité garantie
Si votre produit IA envoie encore chaque requête vers le cloud en 2026, vous ne gaspillez pas seulement les coûts serveur — vous passez à côté de la protection de la confidentialité, le plus grand différenciateur.
Essayez ces outils exécutés localement dans le navigateur — aucune inscription requise →
#WebLLM#Transformers.js#ONNX#WebGPU#浏览器AI#边缘推理#大模型#本地AI