Streszczenie AI
Hugging Face wypuścił bibliotekę @huggingface/kernels, w której znajdziesz ponad 200 zoptymalizowanych kernelów WebGPU – każdy jako wersjonowany pakiet na Hubie z pełną dokumentacją, testami i benchmarkami, co umożliwia szybkie i sprawdzone uruchamianie operacji sieci neuronowych bezpośrednio w przeglądarce. W porównaniu z ORT WebGPU, kolekcja ta boi się średnio 2,6‑krotnie szybciej na wielu przypadkach, a narzędzie Fleet pozwala użytkownikom testować i benchmarkować kernale na własnym sprzęcie. Dzięki npm i łatwemu interfejsowi getKernel, deweloperzy mogą szybko eksperymentować z WebGPU i efektywnie integrować je w swoich aplikacjach AI.
Spis treści:
- Czym są WebGPU kernels i dlaczego mają znaczenie
- Struktura i publikacja kernelów na Hubie
- Jak korzystać z @huggingface/kernels w aplikacji
- Wydajność: wyniki benchmarków i znaczenie wariantów
- Fleet: benchmarking i testy w przeglądarce
- Praktyczne zastosowania i integracja z ekosystemem
- Podsumowanie techniczne
- Źródła
Hugging Face udostępnił bibliotekę @huggingface/kernels z ponad 200 zoptymalizowanymi kernelami WebGPU, które pozwalają uruchamiać operacje sieci neuronowych bezpośrednio w przeglądarce z wykorzystaniem GPU. Każde jądro jest publikowane jako osobny, wersjonowany pakiet na Hubie, z dokumentacją, testami poprawności i przypadkami benchmarkowymi, co ułatwia integrację i porównywanie implementacji.
Czym są WebGPU kernels i dlaczego mają znaczenie
WebGPU to nowoczesny standard programistyczny umożliwiający dostęp do akceleracji GPU w przeglądarce, będący następcą WebGL i oferujący lepszą wydajność dzięki bezpośredniejszej interakcji z urządzeniami graficznymi. W praktyce uruchomienie modelu w przeglądarce sprowadza się do sekwencji operacji GPU: mnożenia macierzy, normalizacji, uwagi (attention), kwantyzacji, transformacji układu danych i wielu innych.
Portowalność WebGPU nie oznacza automatycznie wysokiej wydajności: dwa shadery mogą realizować tę samą operację i dawać identyczny wynik, ale zachowywać się zupełnie inaczej na różnych akceleratorach. Kluczowe czynniki wpływające na wydajność to m.in. rozmiary workgroup, wzorce dostępu do pamięci, wektoryzacja, typy danych i strategie łączenia operacji (fusion). Dlatego optymalne jądra stanowią fundament szybkiego wnioskowania w przeglądarce – wyższe warstwy (runtime) mogą być tak szybkie, jak operacje, które wywołują.
Struktura i publikacja kernelów na Hubie
Każde jądro w kolekcji ma własny repozytorium i „kartę” (kernel card) dokumentującą semantykę operacji, wejścia/wyjścia, atrybuty, obsługiwane typy danych, pliki źródłowe oraz gotowy przykład użycia z @huggingface/kernels. Przykładowo, ai.onnx.Add realizuje dodawanie element-po-elemencie z wielokierunkowym broadcastingiem; karta opisuje dwa wejścia, kształt wyjścia po broadcastingu, obsługiwane typy i dostępne warianty dla różnych kształtów i urządzeń.
Za kartą repozytorium znajdują się artefakty pozwalające zrozumieć i ocenić implementację: interfejs jest inspektowalny bez czytania WGSL, przypadki poprawności i wydajności „podróżują” razem z kodem, a opublikowane wersje mogą być ładowane explicite, zamiast polegać na niewersjonowanym URL pliku. Taka struktura zamienia shader w wielokrotnego użytku artefakt programistyczny, a jednocześnie może służyć jako referencyjna implementacja dla deweloperów budujących własne kernale WebGPU.
Jak korzystać z @huggingface/kernels w aplikacji
Bibliotekę instaluje się z npm, a uruchamianie kernelów wymaga przeglądarki z obsługą WebGPU (dostępność zależy od przeglądarki, OS, GPU i sterownika; w JS można sprawdzić poprzez "gpu" in navigator). @huggingface/kernels stanowi most między repozytorium kernela a aplikacją: wywołuje się getKernel z ID repozytorium na Hubie i wersją kontraktu, a następnie wywołuje zwróconą funkcję z typed danymi wejściowymi i kształtami tensorów.
Przykładowy schemat użycia (dla operacji dodawania z broadcastingiem):
- załadowanie kernela:
const kernel = await getKernel("repo-id", { version: 1 }); - przygotowanie tensorów wejściowych z kształtami i danymi;
- wywołanie
kernel(a, b)i otrzymanie tensora wyjściowego z automatycznie wyznaczonym kształtem i typem.
Nawet przy bardzo małych operacjach (np. dodawanie sześciu liczb) koszt rundy GPU dominuje nad samą matematyką, ale wzorzec wywołania pozostaje ten sam dla ciężkich operacji, gdzie optymalizacja realnie się opłaca – np. mnożenie macierzy ai.onnx.MatMul. Co ważne, wersjonowanie kontraktu (version: 1) jest oddzielone od ONNX opset czy rewizji modelu, co pozwala aplikacjom polegać na stabilnym interfejsie JS, podczas gdy implementacje kerneli ewoluują w tle.
Wydajność: wyniki benchmarków i znaczenie wariantów
Hugging Face porównał swoją kolekcję z ONNX Runtime Web (ORT WebGPU) na GPU Apple M4, używając wersji ONNX Runtime Web 1.30.0-dev.20260826-b1f76d586a. Spośród 1756 przypadków testowych Across 207 operacji, po odrzuceniu niezgodnych wyników i niestabilnych pomiarów, pozostało 809 przypadków, w których obie strony dawały zgodne wyniki i wiarygodne czasy.
W tych porównaniach kernale Hugging Face były średnio 2,57× szybsze (średnia geometryczna) i 1,90× szybsze w medianie, z 629 wygranymi, 176 przegranymi i 4 remisami. Niektóre przypadki wykazywały ekstremalne różnice: trudny biliniowy Einsum (i,ij,j z rozmiarem 4096) wykonał się w 0,136 ms vs 1396 ms w ORT WebGPU (ponad 10 000× szybciej), a wierszowy CumSum na kształcie
był 301× szybszy (0,016 ms vs 4,784 ms).
Pomiary obejmowały wyłącznie pracę wykonaną na GPU, z pominięciem setupu (ładowanie kerneli, tworzenie sesji, wgrywanie danych, kompilacja shaderów, odczyt wyników). Krótkie workloady są trudniejsze do precyzyjnego mierzenia, a małe przypadki mogą korzystać z cache GPU, więc wyniki należy traktować jako użyteczne porównanie, a nie obietnicę dla każdej aplikacji. Są to też wyniki dla pojedynczych operacji, nie całych modeli – rzeczywista wydajność będzie się różnić w zależności od GPU i przeglądarki.
Dlaczego kernale potrzebują wariantów? Równe kształty mogą używać bezpośredniej, wektoryzowanej ścieżki, podczas gdy wejścia z broadcastingiem wymagają innej logiki indeksowania. Opublikowany kernel Add zawiera warianty dla: równych kształtów, wektoryzowanego broadcastingu, przetwarzania skalarnego i ogólnego broadcastingu, a runtime może wybrać implementację pasującą do bieżącego wywołania i urządzenia bez zmiany API widocznego dla aplikacji.
Fleet: benchmarking i testy w przeglądarce
Równolegle z publikacją kerneli Hugging Face uruchomił Fleet – przeglądarkowy zestaw do testowania poprawności i wydajności kernelów na konkretnym sprzęcie użytkownika. Fleet pozwala uruchomić testy i benchmarki bezpośrednio w przeglądarce i zobaczyć, jak kernale zachowują się na danym urządzeniu.
Za zgodą użytkownika każde uruchomienie prywatnie wnosi „dowody” (correctness & performance evidence), które pomagają wykrywać awarie specyficzne dla urządzenia, porównywać warianty i ulepszać reguły wyboru implementacji. Celem jest wykorzystanie szerokiego, rzeczywistego pokrycia sprzętowego, aby kernale były szybsze i bardziej niezawodne dla wszystkich.
Praktyczne zastosowania i integracja z ekosystemem
Kolekcja 207 kerneli to punkt wyjścia, a nie stan końcowy – niezależna publikacja na Hubie daje wspólne miejsce do inspekcji kontraktów, porównywania implementacji, odtwarzania testów poprawności i poprawiania wydajności bez osadzania każdego shadera w każdym runtime. WebGPU kernale współistnieją z innymi kernelami na Hubie (CUDA, ROCm, Metal, XPU) i mogą być filtrowane, sortowane i eksplorowane jak dowolny inny artefakt.
W praktyce oznacza to, że deweloperzy aplikacji WebAI mogą:
- ładować zoptymalizowane operacje bezpośrednio z Huba, zamiast implementować własne shadery od zera;
- korzystać z gotowych przykładów i testów poprawności, co skraca czas integracji i zmniejsza ryzyko błędów;
- wnosić dane z własnego sprzętu poprzez Fleet, pomagając ulepszyć dobór wariantów pod różne GPU i przeglądarki.
Hugging Face współpracuje również z zespołem ONNX Runtime, aby upstreamować te usprawnienia iBenefit szerszy ekosystem ONNX Runtime Web. Długoterminowo kernale WebGPU stanowią niskopoziomowy fundament dla kolejnych warstw stosu wnioskowania w przeglądarce, które mają być podłączane do wyższego poziomu narzędzi do modeli.
Podsumowanie techniczne
Kluczowe cechy inicjatywy WebGPU kernels od Hugging Face to:
- ponad 200 kerneli pokrywających operacje używane w wielu architekturach ML, każdy jako osobny, wersjonowany pakiet z dokumentacją i testami;
- biblioteka
@huggingface/kernelsumożliwiająca ładowanie i wywoływanie kerneli z Huba w aplikacji JS/TS; - znaczące przyspieszenia względem ORT WebGPU w wielu operacjach (średnio 2,57×, z pojedynczymi przypadkami >10 000×);
- Fleet jako mechanizm zbierania danych o wydajności i poprawności z rzeczywistych urządzeń użytkowników.
Dla zespołów budujących aplikacje AI w przeglądarce oznacza to możliwość szybszego prototypowania i wdrażania modeli z wykorzystaniem gotowych, dobrze przetestowanych kerneli, a dla społeczności – wspólną bazę do iteracyjnego poprawiania wydajności WebGPU na różnych urządzeniach.





