Přeskočit na obsah
U sebe doma 4 min čtení

Hugging Face zveřejnil 207 WebGPU kernelů pro prohlížeč, loader k nim vyšel jako náhled

Organizace webgpu-kernels na Hubu nese 207 výpočetních programů pro grafický čip pod licencí Apache 2.0 a balíček @huggingface/kernels je z prohlížeče stáhne a spustí. Proti ONNX Runtime Web vyšly podle blogu 2,57× rychlejší, jenže na jediném čipu Apple M4, proti vývojovému sestavení a jen u 809 z 1 756 případů. Celý model z nich zatím nikdo neposkládá, napojení na vyšší vrstvy teprve přijde.

Grafická karta Nvidia GeForce RTX 5060 Ti od PNY, pohled zepředu
Grafická karta GeForce RTX 5060 Ti. WebGPU dává prohlížeči přístup k výpočtům na kartě bez ohledu na výrobce čipu. Foto: FreeMediaKid!, Wikimedia Commons (CC BY-SA 4.0)

Hugging Face zveřejnil 1. září první vrstvu svého plánu na rychlý běh modelů v prohlížeči: organizaci webgpu-kernels s 207 kernely a knihovnu @huggingface/kernels, která je z Hubu stáhne a spustí. Kernel je tu jeden výpočetní program pro grafický čip, třeba násobení matic, softmax nebo normalizace vrstvy, napsaný v jazyce WGSL, který prohlížeče spouštějí přes rozhraní WebGPU. Podepsaní jsou Nico Martin a Joshua (na Hubu Xenova) z týmu WebAI.

Každý kernel je samostatný repozitář

Podle výpisu rozhraní Hubu vzniklo všech 207 repozitářů 31. srpna a všechny nesou licenci Apache 2.0. Jména prozrazují, odkud sada vychází: 175 kernelů má předponu ai.onnx, tedy operátory standardu ONNX, a 32 předponu com.microsoft, což jsou rozšiřující operátory ONNX Runtime, například MultiHeadAttention, PagedAttention, MoE nebo MatMulNBitsQkv pro násobení s kvantovanými váhami. Je to tedy táž sada operací, kterou dnes v prohlížeči vykonává ONNX Runtime Web, jen rozložená na kusy.

V každém repozitáři leží manifest.json se smlouvou operace (vstupy, výstupy, atributy, odvození tvaru výstupu), test.json s případy správnosti, bench.json s případy pro měření a šablony *.wgsl.jinja, ze kterých se shader skládá až pro konkrétní tvar dat a zařízení. Jeden kernel proto mívá víc variant. Sčítání dvou stejně velkých tenzorů jde vektorizovanou cestou, sčítání s rozšířením tvarů potřebuje jiné indexování a běhové prostředí si vybere samo.

Na Hubu je to zdaleka největší skupina. Z 506 kernelů, které rozhraní api/kernels vypisuje k 2. září, jich 207 patří WebGPU, 174 CUDA, 24 platformě XPU od Intelu, 23 ROCm a 20 Metalu; 82 nemá platformu uvedenou. Je to vlastní součet z výpisu, ne číslo z blogu.

Loader je náhled a říká to sám

Balíček @huggingface/kernels vyšel na npm 1. září ve verzi 0.0.1-preview.1: šest souborů, 259 kB po rozbalení, licence Apache 2.0. Jeho README začíná větou, že jde o časný náhled a rozhraní se ještě může změnit. Volání getKernel("webgpu-kernels/ai.onnx.Add", { version: 1 }) sleduje větev v1 repozitáře, která se s opravami posouvá; kdo chce neměnné bajty, předá místo verze čtyřicetimístný otisk commitu. Kernel od jiného vydavatele než z organizace webgpu-kernels loader odmítne, dokud nedostane trustRemoteCode: true. Je to kód, který poběží na grafickém čipu čtenáře, a README to říká přesně těmito slovy.

Zrychlení 2,57×, měřené na jednom čipu

Blog srovnává kernely s WebGPU backendem ONNX Runtime Web na grafickém čipu Apple M4. Z 1 756 testovacích případů zůstalo 809, u kterých obě strany daly shodný výsledek a spolehlivý čas. V nich vyšly kernely Hugging Face rychlejší 2,57× po geometrickém průměru a 1,90× v mediánu, s 629 výhrami, 176 prohrami a čtyřmi remízami. U čtyř běžných operací uvádí tabulka 3,52× pro Add, 2,11× pro Softmax, 2,22× pro LayerNormalization a jen 1,14× pro MatMul, tedy pro násobení matic, které v jazykovém modelu spotřebuje nejvíc času. Extrémy jako víc než 10 000× u jednoho případu Einsum nebo 301× u CumSum označuje blog sám za výjimky, kde obecná implementace narazila na pomalou cestu.

Tři věci u toho čísla platí. Měřil se jen čas na grafickém čipu, bez načtení kernelu, kompilace shaderu a přenosu dat tam a zpět. Protistranou bylo vývojové sestavení onnxruntime-web 1.30.0-dev.20260826, nahrané na npm 27. srpna, ne poslední stabilní vydání 1.29.0 z 24. srpna. A jde o jednotlivé operace, ne o celý model; jak se rozdíl projeví u hotové sítě, blog neuvádí. Autoři k tomu píšou, že zlepšení chtějí spolu s týmem ONNX Runtime přenést i do něj, takže obě strany srovnání se mají časem potkat.

Fleet sbírá měření z cizích počítačů

Výkon WebGPU se liší podle čipu, prohlížeče i ovladače, a tak Hugging Face spustil k sadě i Fleet: stránku, která kernely na počítači návštěvníka otestuje, změří a vrátí mu kartu s hodnocením. Se souhlasem se výsledek odešle jako podklad pro hledání chyb a výběr variant na zařízeních, ke kterým tým sám nemá přístup. Na stránce visí ukázkové karty pro Apple M4 Max a GeForce RTX 5060.

Kde to vůbec poběží

Kernely potřebují prohlížeč s WebGPU, tedy s objektem navigator.gpu. Podle dat projektu Can I use ho mají zapnutý Chrome a Edge od verze 113 a Safari na iOS od 26.0. Na počítači ho Safari zapíná jen na macOS 26 a novějším a Firefox jen na Windows a na macOS 26 s čipem Apple Silicon; na Linuxu zůstává ve Firefoxu za příznakem a u Chromu závisí na hardwaru a ovladači. Podíl prohlížečů s plnou podporou počítá Can I use na 84 %, s částečnou na 3 % (podle StatCounteru za červenec 2026).

Model z toho zatím neposkládáte

Sada je stavebnice operací, ne běhové prostředí. Blog to říká otevřeně: kernely jsou první vrstva a napojení na nástroje pro celé modely teprve přijde. Ukázka v dokumentaci sčítá šest čísel a autoři sami dodávají, že v takové velikosti stojí cesta na grafický čip víc než výpočet. Kdo dnes chce spustit model v prohlížeči, dál sáhne po ONNX Runtime Web nebo Transformers.js. Nová sada je zatím pro ty, kdo si běhové prostředí staví sami, nebo kdo chce porovnat vlastní shader s referenčním.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. U sebe doma

    Projekt llama.cpp přestal převádět pět vah Qwen3-TTS 0,6B na 16 bitů

    Sestavení b10760 mění převod pomocného souboru pro model Qwen3-TTS 0,6B. Pět vah zůstane ve 32 bitech, protože mezivýsledek o hodnotě kolem 145 tisíc překračoval limit…

  2. U sebe doma

    Nová cesta v llama.cpp zrychluje dávkové zpracování IQ vah na procesoru

    Sestavení b10726 přidalo procesorový panel, který u IQ kvantizací dekóduje osm řádků vah najednou. Autor změny naměřil při dávce 512 na AMD EPYC 9654 podle modelu a…

  3. U sebe doma

    llama-quantize si na velký tenzor bere nejvýš osm gigabajtů operační paměti

    Kvantizační nástroj z llama.cpp si na každý tenzor alokoval dva pomocné bloky po čtyřech bajtech na parametr, takže u opravdu velké vkládací tabulky šly nároky do stovek…

  4. U sebe doma

    llama.cpp podporuje od sestavení b10665 DSpark pro Nemotron 3.5

    Sestavení llama.cpp b10665 z 28. srpna umí vedle hlavního Nemotronu 3.5 načíst samostatný draft model DSpark od Nvidie. Ten přidá 1,35 GB dat k 21,58 GB cílového…