
Biblioteca reúne 207 kernels WebGPU para rodar IA direto no navegador
O que foi lançado
A equipe de WebAI da Hugging Face anunciou a biblioteca @huggingface/kernels, um carregador em JavaScript que baixa, prepara e executa kernels WebGPU otimizados diretamente do Hugging Face Hub. O lançamento vem acompanhado de uma coleção inicial de 207 kernels publicados como repositórios individuais na organização webgpu-kernels, sob licença Apache-2.0.
Por que começar pelos kernels
Um modelo rodando no navegador se torna uma sequência de operações de GPU: multiplicações de matrizes, normalizações, convoluções, primitivas de atenção, quantização e transformações de layout. O WebGPU oferece uma API portável, e o WGSL uma linguagem comum para os shaders, mas portabilidade não implica desempenho: workgroup sizes, padrões de acesso à memória, vetorização, tipos de dados e estratégias de fusão afetam o resultado, e a melhor escolha varia com formato de entrada, dispositivo, navegador e recursos disponíveis. Como runtimes de nível mais alto só podem ser tão eficientes quanto as operações que despacham, tornar esses kernels individualmente verificáveis, mensuráveis e versionados permite melhorar a base de forma independente mantendo um contrato estável para as camadas superiores.
Um repositório de kernel, não apenas um shader
Cada kernel tem seu próprio repositório e um "kernel card" que documenta semântica, entradas, saídas, atributos, tipos de dados e exemplos prontos. O exemplo ai.onnx.Add, uma soma elemento a elemento com broadcasting multidirecional usada em conexões residuais e bias, documenta variantes para formas iguais, broadcasting vetorizado, processamento escalar e broadcasting geral - ilustrando por que variantes são necessárias.
O repositório inclui manifest. (fonte de verdade do contrato de operação), metadata. (identificador, digests e proveniência), test. (casos de correção), bench. (casos de benchmark e ajuste) e arquivos *.wgsl.jinja com implementações WGSL parametrizadas. A versão selecionada no carregador refere-se ao contrato do kernel, distinta de opset do ONNX ou revisão de modelo.
Como carregar e quanto ganha
A instalação é feita via npm (@huggingface/kernels@preview) e exige navegador com suporte a WebGPU, que varia conforme navegador, sistema, GPU e driver. O método getKernel recebe o ID do repositório no Hub e uma versão do contrato.
No comparativo contra o ORT WebGPU (ONNX Runtime Web 1.30.0-dev) em uma GPU Apple M4, os autores partiram de 1.756 casos de teste e mantiveram os 809 em que ambos os lados produziram saídas correspondentes e tempos confiáveis. Os kernels da coleção foram 2,57x mais rápidos pela média geométrica e 1,90x pela mediana, com 629 vitórias, 176 derrotas e 4 empates. Destaques individuais incluem Add (3,52x), Softmax (2,11x), LayerNormalization (2,22x) e casos extremos: um Einsum bilinear i,ij,j de tamanho 4096 rodou em 0,136 ms contra 1.396 ms do ORT WebGPU (mais de 10.000x mais rápido), e um CumSum por linha em [256, 4096] foi 301x mais rápido.
As medições cronometraram apenas o trabalho na GPU, excluindo carregamento, criação de sessões, upload de entradas, compilação de shaders e leitura de saídas. Os autores alertam que os números se referem a operações isoladas, não a modelos completos, que casos curtos podem se beneficiar do cache da GPU, e que o desempenho exato varia entre GPUs e navegadores - sendo os casos extremos atípicos e não uma promessa geral.
Fleet e a base compartilhada para WebAI
A Hugging Face também lançou o Fleet, um conjunto de benchmark e testes no navegador que executa e pontua os kernels no hardware do usuário. Com consentimento, cada execução contribui com evidências privadas que ajudam a identificar falhas específicas de dispositivo (resultados incorretos, casos patologicamente lentos), comparar variantes e melhorar as regras de seleção, cobrindo uma variedade de dispositivos que um laboratório convencional não alcançaria.
A equipe está trabalhando com o time do ONNX Runtime para subir essas melhorias ao upstream em benefício do ecossistema ONNX Runtime Web. Os 207 kernels são descritos como ponto de partida, não estado final: eles integram o ecossistema de kernels do Hub ao lado de kernels para CUDA, ROCm, Metal e outras plataformas, e formam a base de baixo nível para os próximos passos da pilha de inferência no navegador, incluindo a conexão com ferramentas de nível mais alto e a expansão da cobertura de operações.