Performance Web
La nouvelle API de Chrome pourrait vous faire économiser 177 Mo en permettant aux modèles d'IA de partager leur cache entre sites web
L'API Cross-Origin Storage proposée par Google vise à éliminer les téléchargements redondants de modèles d'IA et d'environnements d'exécution Wasm en identifiant les ressources via le hachage SHA-256 plutôt que l'URL. Transformers.js, WebLLM et wllama l'expérimentent déjà, avec Whisper qui permet à lui seul d'économiser plus de 177 Mo par chargement en double.

Voici le problème : vous construisez une application web basée sur l'IA avec Transformers.js. Lors de la première visite, le navigateur télécharge les poids du modèle et les fichiers de l'environnement d'exécution WebAssembly, les mettant en cache localement. Ensuite, vous chargez une deuxième application sur une origine différente qui utilise exactement le même modèle, par exemple, le populaire modèle de reconnaissance vocale Whisper. Le navigateur télécharge et met en cache ces mêmes mégaoctets à nouveau. Pour les grands modèles, cette duplication peut gaspiller des centaines de mégaoctets de bande passante et d'espace disque par utilisateur. C'est plus qu'une nuisance ; c'est un véritable gaspillage. minimax-speech-28-brings-human-warmth-to-ai-voices-with-native-filler-words-and-high-fidelity-cloning
L'équipe Chrome de Google travaille sur une solution. La proposition Cross-Origin Storage (COS) API est une spécification en phase précoce qui introduit une interface dédiée navigator.crossOriginStorage. Au lieu de stocker les ressources mises en cache par URL et origine, le modèle actuel, qui partitionne les caches pour des raisons de sécurité, COS identifie les fichiers par leur hachage cryptographique SHA-256. Cela signifie que, qu'une ressource ait été récupérée initialement par https://site-a.com ou https://site-b.com, si les octets sont identiques, le navigateur peut les servir depuis un espace de stockage partagé unique. the-specialization-revolution-how-smaller-models-are-redefining-ais-future
Comment fonctionne COS
L'API est délibérément modelée sur le système de fichiers privé d'origine (OPFS), déjà familier aux développeurs web. Pour récupérer un fichier, une application appelle navigator.crossOriginStorage.requestFileHandle(hash), où hash est un objet contenant l'algorithme (actuellement SHA-256) et la valeur hexadécimale. Si le fichier est déjà stocké, la méthode renvoie un FileSystemFileHandle pour la lecture. Sinon, l'application peut revenir à une récupération réseau, puis stocker le résultat avec { create: true, origins: '*' } pour le rendre disponible globalement.
Le contrôle de la visibilité est granulaire : les développeurs peuvent définir origins sur '*' pour les ressources publiques, une liste explicite d'origines autorisées pour les ressources propriétaires, ou l'omettre entièrement pour un partage limité au même site. Une décision de conception délibérée empêche de réduire la visibilité. Une fois qu'un fichier est stocké globalement, toute tentative ultérieure de restreindre ses origines est ignorée silencieusement, empêchant ainsi une exploitation abusive potentielle.
Intégrité par défaut
Chaque écriture dans COS est automatiquement vérifiée par rapport au hachage déclaré. Si les octets ne correspondent pas, l'écriture échoue. Cela donne aux consommateurs une garantie d'intégrité implicite que les téléchargements HTTP actuels ne fournissent pas systématiquement. Pour les modèles d'IA téléchargés depuis des réseaux de diffusion de contenu, cela signifie que les développeurs et les utilisateurs peuvent être sûrs d'obtenir exactement les poids prévus. why-generating-an-article-on-command-misses-the-point-of-journalism
Protection de la vie privée
Le stockage inter-origines soulève inévitablement le spectre du suivi inter-sites. COS y répond avec deux mécanismes. Premièrement, le champ explicite origins encourage les développeurs à limiter la visibilité aux seules origines qui ont besoin d'accès. Deuxièmement, même pour les fichiers déclarés globalement, le navigateur peut supprimer la confirmation de la présence d'un fichier s'il a été rencontré sur trop peu d'origines distinctes, renvoyant un échec plutôt que de confirmer l'existence du fichier. Les membres de l'équipe Chrome notent que cette atténuation est encore en cours d'affinement. Les développeurs sont invités à toujours gérer un échec en revenant au réseau.
Transformers.js pilote COS
La bibliothèque Transformers.js, qui permet aux développeurs web d'exécuter des modèles de transformateurs directement dans le navigateur via ONNX Runtime, a déjà introduit un support expérimental de COS. Une seule ligne de code permet de l'activer :
import { env } from "https://cdn.jsdelivr.net/npm/@huggingface/transformers@4.2.0";
env.experimental_useCrossOriginStorage = true;Lorsqu'elle est activée, la bibliothèque résout le hachage SHA-256 pour chaque fichier de modèle suivi par Xet et vérifie COS avant le téléchargement. Lors des tests, cela élimine les téléchargements en double de modèles comme Xenova/whisper-tiny.en et de l'environnement d'exécution Wasm partagé, économisant plus de 177 Mo pour le seul modèle ASR Whisper. Les mêmes améliorations s'appliquent à WebLLM et wllama, qui ont également intégré le support COS. kog-laneformer-2b-the-latency-first-model-that-redefines-small-scale-inference
Essayez-le dès aujourd'hui
Aucun navigateur n'implémente encore l'API COS nativement, mais les développeurs peuvent installer l'extension Cross-Origin Storage pour Chrome, qui injecte un polyfill navigator.crossOriginStorage. Avec l'extension active, visiter deux applications de démonstration différentes utilisant le même modèle montre que la deuxième application se charge instantanément depuis COS plutôt que de retélécharger les poids.
L'équipe Chrome sollicite activement des commentaires sur la proposition via le dépôt Cross-Origin Storage. Une implémentation dans le navigateur lui-même apporterait ces économies de performance et de stockage à tous les utilisateurs du web sans nécessiter d'extension. how-local-llms-like-gemma-and-qwen-are-taming-open-source-repository-triage-at-scale