Exécution de LLM dans le navigateur : comment nous utilisons WebGPU et WebLLM pour une édition de CV axée sur la confidentialité
Chaque outil de CV basé sur l’IA sur le marché envoie aujourd’hui vos données à un serveur. Ils vous diront que c’est “sécurisé”. Ils indiqueront les badges de conformité SOC 2. Mais voici la réalité technique : si votre CV quitte votre appareil, il n’est plus exclusivement le vôtre. Il réside dans une base de données, dans un fichier journal, dans un pipeline de formation ou dans une violation de données en attente de se produire.
Nous avons refusé d’accepter ce compromis. Nous avons donc construit quelque chose de différent : un rédacteur de CV IA entièrement côté client qui exécute un modèle de langage de 500 millions de paramètres directement dans votre navigateur à l’aide de WebGPU et Transformers.js. Aucune clé API. Aucune inférence de nuage. Pas de serveur.
Dans cette plongée technique approfondie, vous apprendrez :
- Pourquoi l’IA sans serveur est la seule architecture véritablement privée pour les documents sensibles
- Comment WebGPU déverrouille l’inférence accélérée par GPU dans le navigateur
- La pile exacte que nous avons utilisée (Astro, Transformers.js, Xenova/Qwen1.5-0.5B-Chat)
- Les défis d’ingénierie liés à l’envoi d’un modèle de 300 Mo vers un onglet de navigateur
- Benchmarks de performances et chiffres de latence réels
Le paradoxe de la confidentialité des outils d’IA modernes
Les rédacteurs de CV d’IA ont explosé en popularité. Des outils comme Teal, Resume.io et Jobscan proposent une « réécriture de puces alimentée par l’IA » qui semble magique — jusqu’à ce que vous lisiez les petits caractères. Presque tous fonctionnent sur une architecture client-serveur :
- Vous collez votre CV dans un formulaire Web
- Vos données sont cryptées pendant le transit (TLS)
- Il est décrypté sur un serveur cloud
- Une API LLM (OpenAI, Anthropic ou un modèle auto-hébergé) le traite
- Le texte réécrit est renvoyé
Cela semble sécurisé en surface. Mais la surface d’attaque est énorme :
- Les journaux du serveur peuvent conserver votre CV complet pour le débogage - Les API LLM tierces peuvent s’entraîner sur vos données, sauf si vous payez pour des niveaux d’entreprise
- Les violations de données exposent des CV contenant des adresses personnelles, des numéros de téléphone, des antécédents professionnels et des données salariales.
- ** Lacunes de conformité ** — la plupart des outils ne sont pas conformes au RGPD pour les utilisateurs de l’UE car ils ne peuvent pas garantir la suppression
** L’essentiel : ** Si votre CV touche un serveur, vous faites confiance à un tiers pour ne pas lire, enregistrer, divulguer ou monétiser votre document professionnel le plus sensible. Ce n’est pas un pari que nous sommes prêts à demander à nos utilisateurs de faire.
Pourquoi l’IA côté client change tout
L’IA côté client renverse complètement l’architecture. Au lieu d’envoyer vos données au modèle, nous envoyons le modèle à vos données. Le LLM se télécharge directement dans la mémoire de votre navigateur, s’exécute sur votre GPU ou CPU local et ne transmet jamais le texte de votre CV depuis votre appareil.
Les implications en matière de confidentialité sont absolues :
- Zéro appel réseau contenant les données de votre CV
- Zéro journal du serveur avec vos informations personnelles
- Zéro API LLM tierce avec des politiques de données opaques
- Zéro risque de violation de données de notre infrastructure — car nous n’avons pas d’infrastructure qui touche vos données
Mais l’IA côté client n’est pas seulement une question de confidentialité. Il offre également des avantages tangibles en termes de performances :
- Aucune latence lors des allers-retours vers un centre de données distant
- Aucune limite de débit ni de quotas API
- Aucune porte d’abonnement pour les fonctionnalités d’IA
- Capacité hors ligne une fois le modèle mis en cache
WebGPU : le navigateur en tant que moteur de calcul
Jusqu’à récemment, exécuter des LLM dans le navigateur était irréalisable sur le plan informatique. WebGL était la seule API GPU disponible et elle a été conçue pour les graphiques et non pour le calcul à usage général. Puis WebGPU est arrivé.
Qu’est-ce que le WebGPU ?
WebGPU est un standard Web de nouvelle génération qui expose les capacités GPU modernes (Vulkan, Metal, DirectX 12) directement à JavaScript. Contrairement à WebGL, il prend en charge les shaders de calcul GPU à usage général, ce qui le rend idéal pour les opérations matricielles lourdes comme l’inférence de réseau neuronal.
Capacités clés qui rendent les LLM du navigateur possibles :
- Pipelines de calcul — Exécutez des noyaux de multiplication matricielle massivement parallèles
- Modèle de mémoire unifiée — Accès direct au tampon GPU sans copies coûteuses CPU-GPU
- Langages Shader — Écrivez WGSL (WebGPU Shading Language) pour les noyaux d’inférence personnalisés
- Multiplateforme — Fonctionne sur Chrome, Edge, Firefox et Safari avec des performances natives
WebGPU vs WebGL pour l’inférence LLM
| Fonctionnalité | WebGL | WebGPU |
|---|---|---|
| Calculer les shaders | ❌ Non | ✅ Oui |
| Opérations matricielles | Lent (simulé) | Natif, parallèle |
| Efficacité de la mémoire | Surcharge CPU-GPU élevée | Unifié, faible surcharge |
| Vitesse d’inférence LLM | ~10-20 jetons/sec | ~50-100 jetons/s |
| Prise en charge du navigateur | Universel | Navigateurs modernes (94 %+) |
Pour notre cas d’utilisation (réécriture des puces de CV avec un modèle de 500 M de paramètres) WebGPU offre une inférence 4 à 5 fois plus rapide qu’une solution de secours uniquement CPU et 2 à 3 fois plus rapide qu’une approche basée sur WebGL.
Notre pile : Astro + Transformers.js + Xenova/Qwen1.5
Construire un réécrivain d’IA côté client a nécessité des choix technologiques prudents. Nous avions besoin d’un framework rapide, minimal et compatible avec les calculs lourds côté navigateur. Voici l’architecture exacte sur laquelle nous avons atterri.
Framework : Astro
Nous avons choisi Astro pour sa philosophie zéro-JS-par défaut. La plupart des outils de CV sont des applications React surchargées qui contiennent plus de 500 Ko de JavaScript avant même que l’utilisateur ne puisse coller son CV. Astro nous permet de fournir du HTML statique pour la page de destination et le blog, puis d’hydrater uniquement les composants interactifs (l’éditeur, le panneau IA) si nécessaire.
Pourquoi Astro est important pour l’IA côté client :
- Le chargement initial de la page est inférieur à 50 Ko de JavaScript
- Le modèle d’IA lourd se charge à la demande lorsque l’utilisateur clique sur “Réécrire avec l’IA”.
- Pas de surcharge d’hydratation pour le contenu statique comme notre blog ou nos pages marketing
AI Runtime : Transformers.js
Hugging Face’s Transformers.js est le pont qui rend cela possible. Il s’agit d’un portage de la bibliothèque Python Transformers vers ONNX Runtime Web, permettant à des modèles pré-entraînés de s’exécuter dans le navigateur via des solutions de secours WebGPU ou WebGL.
Détails techniques clés :
- Les modèles sont quantifiés en INT8 pour réduire la taille et l’empreinte mémoire
- Nous utilisons le backend ONNX Runtime Web avec un fournisseur d’exécution WebGPU
- Le pipeline gère la tokenisation, l’inférence et le décodage de bout en bout dans le navigateur
Choix du modèle : Xenova/Qwen1.5-0.5B-Chat
Nous avons évalué plusieurs modèles avant de choisir Qwen1.5-0.5B-Chat via les ports Xenova ONNX :
Critères de sélection :
- Assez petit pour être téléchargé (~ 300 Mo quantifiés) sans détruire l’expérience utilisateur
- Fort suivi des instructions pour les invites « réécrivez cette puce pour avoir plus d’impact »
- Licence permissive pour un usage commercial
- Inférence rapide sur les GPU grand public (génération inférieure à 3 secondes pour les réécritures de puces courtes)
Nous avons testé Llama-2-7B, Mistral-7B et Phi-2. Tous étaient trop volumineux (1,5 Go+) ou trop lents pour une inférence en temps réel par le navigateur. Qwen1.5-0.5B trouve le juste milieu : assez petit pour être pratique, suffisamment performant pour être utile.
Les défis d’ingénierie dont personne ne parle
Envoyer un modèle de 300 Mo dans un onglet de navigateur semble simple en théorie. En pratique, il s’agissait d’un effort d’ingénierie de plusieurs mois. Voici les trois problèmes les plus difficiles que nous avons résolus.
Défi 1 : Téléchargements progressifs du modèle
Un téléchargement de 300 Mo sur une connexion 4G prendrait 2 à 3 minutes et déclencherait probablement un délai d’attente du navigateur. Nous avons implémenté un système de téléchargement progressif :
- Le modèle est divisé en fragments de 10 Mo
- Chaque fragment est téléchargé avec une logique de nouvelle tentative et une interruption exponentielle
- Une interface utilisateur de barre de progression personnalisée flotte dans le coin supérieur droit affichant les Mo téléchargés en temps réel
- Le modèle est mis en cache dans IndexedDB après le premier téléchargement, de sorte que les visites suivantes se chargent instantanément
Résultat : Les nouveaux utilisateurs voient un téléchargement d’environ 45 secondes sur le haut débit moyen. Les utilisateurs qui reviennent obtiennent un chargement de modèle en moins de 2 secondes à partir du cache.
Défi 2 : Gestion du cycle de vie du contexte WebGPU
Les contextes des appareils WebGPU sont capricieux. Si un utilisateur change d’onglet, réduit le navigateur ou met son ordinateur portable en veille, le contexte GPU peut être perdu. Nous avons dû créer un système de récupération de contexte robuste :
- Détecter les événements
gpu.lostet réinitialiser gracieusement le pipeline d’inférence - Revenir à l’inférence CPU (WASM) si WebGPU devient indisponible
- Fournissez un message clair sur l’interface utilisateur : “Passer en mode CPU – la réécriture peut prendre un peu plus de temps.”
Résultat : Le réécrivain AI fonctionne de manière fiable sur Chrome, Edge et Firefox, même sur les systèmes avec une gestion de l’énergie agressive.
Défi 3 : Pression mémoire sur les machines à 8 Go de RAM
Un modèle de 500 M de paramètres dans INT8 consomme toujours environ 600 Mo de mémoire GPU/CPU. En combinaison avec l’analyse PDF, l’éditeur de texte enrichi Quill et notre tableau Kanban, nous repoussions les limites des ordinateurs portables économiques.
Nos optimisations :
- Chargement différé — Le modèle n’est téléchargé que lorsque l’utilisateur clique explicitement sur “Réécrire”.
- Expulsion du modèle — Si l’utilisateur n’a pas utilisé le panneau AI depuis 10 minutes, nous libérons le modèle de la mémoire (il reste dans IndexedDB pour un rechargement rapide)
- Inférence hors thread principal — Toutes les opérations LLM s’exécutent dans un Web Worker pour empêcher le gel de l’interface utilisateur
Résultat : Le scanner fonctionne correctement sur les machines avec 8 Go de RAM, y compris les Chromebooks de milieu de gamme.
Benchmarks de performances : chiffres réels
Nous avons comparé notre réécrivain d’IA côté client à des alternatives basées sur le cloud dans des conditions identiques. Voici ce que nous avons trouvé :
| Métrique | Notre IA côté client | API Cloud (GPT-4o-mini) | API Cloud (Claude Haiku) |
|---|---|---|---|
| Latence de première inférence | 45s (téléchargement) + 2,3s | 1,2 s | 1,8 s |
| Latence d’inférence ultérieure | 2,3 s | 1,2 s | 1,8 s |
| Confidentialité | Absolu (réseau zéro) | Journaux du serveur + rétention API | Journaux du serveur + rétention API |
| Capable hors ligne | Oui | Non | Non |
| Limites de taux | Aucun | Oui (plafonds RPM/TPM) | Oui (plafonds RPM/TPM) |
| Coût pour l’utilisateur | Gratuit | Abonnement de 5 à 20 $/mois | Abonnement de 5 à 20 $/mois |
| Propriété des données | 100% utilisateur | Dépend de la plateforme | Dépend de la plateforme |
Le compromis est clair : Les nouveaux utilisateurs sacrifient environ 45 secondes pour le téléchargement du modèle. Après cela, chaque réécriture est gratuite, privée, illimitée et compatible hors ligne. Pour un outil qui gère des données de carrière sensibles, nous pensons que c’est le bon compromis.
Pourquoi cette architecture est importante pour l’avenir de l’IA Web
Nous ne construisons pas seulement un scanner de CV. Nous prouvons que l’avenir de l’IA ne nécessite pas de renoncer à vos données.
Toutes les grandes entreprises d’IA poussent l’inférence dans le cloud parce que c’est rentable. Mais la capacité technique d’une IA puissante et privée côté client est déjà là. WebGPU est mature. Transformers.js est prêt pour la production. Les modèles quantifiés sont étonnamment performants.
Ce que cela signifie pour les utilisateurs :
- Vous pouvez obtenir une aide pour votre CV alimentée par l’IA sans confier à un tiers vos antécédents professionnels
- Vous pouvez utiliser des outils d’IA sur le Wi-Fi des avions, les pare-feu d’entreprise ou les réseaux restrictifs
- Vous êtes propriétaire de vos données, des pondérations de votre modèle et de vos sorties d’inférence
Ce que cela signifie pour les développeurs :
- Le navigateur est une cible légitime de déploiement de l’IA
- Vous pouvez créer des fonctionnalités NLP sophistiquées sans factures API
- L’architecture axée sur la confidentialité est un différenciateur concurrentiel, pas une limitation
Comment essayer notre réécrivain IA côté client
Notre scanner ATS privé inclut le réécrivain IA en tant que fonctionnalité intégrée. Voici comment cela fonctionne :
- Téléchargez votre CV (PDF ou DOCX) — entièrement analysé dans le navigateur, jamais téléchargé
- Sélectionnez n’importe quelle puce dans l’éditeur de texte enrichi
- Cliquez sur « Réécrire avec l’IA » : le modèle est téléchargé (première fois uniquement) et génère une version plus puissante et optimisée pour les mots clés.
- Comparez, modifiez et acceptez la suggestion — le tout sans un seul appel réseau transportant vos données
→ Essayez le rééditeur de CV privé par IA dans notre scanner côté client
Points à retenir
- L’IA côté client utilisant WebGPU et Transformers.js est prête pour la production pour la réécriture de CV et les tâches PNL
- WebGPU offre une inférence 4 à 5 fois plus rapide que les approches utilisant uniquement le processeur et est pris en charge par plus de 94 % des navigateurs modernes.
- Un modèle de 500 M de paramètres (Qwen1.5-0.5B-Chat) est suffisant pour une réécriture de puces de haute qualité tout en restant sous 300 Mo
- Les téléchargements progressifs, la mise en cache IndexedDB et les Web Workers sont essentiels pour expédier des modèles volumineux sur des appareils grand public.
- Les avantages en matière de confidentialité sont absolus : zéro journal du serveur, zéro rétention d’API, zéro risque de violation de données
Le navigateur Web n’est plus seulement un visualiseur de documents. Il s’agit d’un environnement de calcul d’IA sécurisé et privé. Et nous ne faisons que commencer.
Vous voulez le voir en action ? Lancez notre scanner ATS privé avec réécriture IA intégrée →