Experimentando com a Proposta da API de Armazenamento Cross-Origin no Transformers.js
Hugging Face
A proposta da API de Armazenamento Cross-Origin (COS) visa resolver downloads redundantes e o cache de recursos compartilhados de modelos de IA e runtime entre diferentes origens web. Atualmente, o Transformers.js sofre com armazenamento duplicado de pesos de modelos e arquivos Wasm devido ao isolamento do cache do navegador. O COS identifica arquivos por hash criptográfico em vez de URL, permitindo compartilhamento entre origens com integridade e controle de acesso.
O Transformers.js permite que desenvolvedores web executem modelos de IA no navegador por meio de pipelines específicos para tarefas. No entanto, modelos populares como Xenova/whisper-tiny.en são baixados e armazenados em cache separadamente por origem, resultando em armazenamento duplicado (por exemplo, 177 MB para um exemplo simples de Reconhecimento Automático de Fala). Até mesmo arquivos de runtime Wasm, como ort-wasm-simd-threaded.asyncify.wasm do ONNX Runtime, são armazenados em cache de forma redundante entre origens, apesar do conteúdo idêntico. Isso se deve ao isolamento do cache do navegador usando Chaves de Isolamento de Rede com base nos sites de nível superior e do quadro atual. A API proposta de Armazenamento Entre Origens (COS, na sigla em inglês) introduz o `navigator.crossOriginStorage`, que armazena arquivos identificados por um hash criptográfico (por exemplo, SHA-256). Os aplicativos podem solicitar um identificador de arquivo pelo hash; se presente, eles leem diretamente; caso contrário, baixam e armazenam o arquivo com opções de visibilidade: `origins: '*'` para compartilhamento global, uma lista de origens para compartilhamento restrito ou apenas no mesmo site. O navegador verifica o hash na escrita para garantir integridade, e a visibilidade só pode ser atualizada, nunca reduzida, para evitar restrições maliciosas. O COS é uma proposta em estágio inicial, ainda não implementada nativamente, mas pode ser testada por meio de uma extensão de navegador.
Fonte: Hugging Face blog —
original
