stamatios
← Voltar ao feed
Motor brilhante girando dentro de janela de navegador, kernels WebGPU da Hugging Face acelerando inferência de IA no browser
Open Source

Biblioteca reúne 207 kernels WebGPU para rodar IA direto no navegador

resumo de ~3 min

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.