Команда Hugging Face представила фундаментальный сдвиг в области браузерного инференса: библиотеку @huggingface/kernels и репозиторий с оптимизированными WebGPU-ядрами. Это не просто набор шейдеров, а структурированная система версионирования, тестирования и загрузки GPU-операций прямо с Hugging Face Hub. Цель — обеспечить максимальную производительность локального AI в браузере, минуя накладные расходы общих рантаймов.
01Архитектура: Ядро как программный артефакт
Каждое ядро (kernel) — это отдельный репозиторий с четким контрактом. Вместо разрозненных WGSL-файлов вы получаете пакет, включающий манифест, тесты корректности и бенчмарки. Это позволяет рантаймам динамически выбирать оптимальную реализацию операции под конкретное железо и браузер.
Структура репозитория ядра включает:
- manifest.json: Источник истины. Определяет входные/выходные данные, атрибуты, ограничения типов и правила вывода форм.
- metadata.json: Идентификатор ядра, дайджесты и происхождение.
- test.json: Кейсы для проверки корректности (correctness cases).
- bench.json: Кейсы для бенчмарков и тюнинга.
- *.wgsl.jinja: Шаблоны шейдеров WGSL, которые компилируются в зависимости от запроса и устройства.
version в API относится к контракту JavaScript-интерфейса, а не к версии модели или ONNX opset. Это позволяет эволюционировать реализации шейдеров, не ломая совместимость приложений.02Бенчмарки: @huggingface/kernels vs ORT WebGPU
Сравнение проводилось в рамках кросс-платформенного тестирования. Из множества тестовых кейсов отобраны те, где результаты совпали. В среднем новые ядра работают заметно быстрее по геометрическому среднему и медиане.
Ниже приведены результаты для ключевых операций:
| Операция | Кейсов | @huggingface/kernels | ORT WebGPU | Ускорение |
|---|---|---|---|---|
| Add | — | — | — | — |
| MatMul | — | — | — | — |
| Softmax | — | — | — | — |
| LayerNormalization | — | — | — | — |
Отдельные кейсы показывают экстремальные различия. Например, сложные случаи билинейного Einsum и Row-wise CumSum демонстрируют значительное ускорение по сравнению с ORT.
03Интеграция: Загрузка и запуск
Библиотека @huggingface/kernels выступает мостом между репозиторием на Hub и вашим приложением. Она автоматически скачивает, подготавливает и запускает ядра. Требуется браузер с поддержкой WebGPU.
Установка:
npm install @huggingface/kernels@previewПроверка поддержки WebGPU в JS:
const isSupported = "gpu" in navigator;Пример загрузки и выполнения операции сложения (bias-add):
import { getKernel } from "@huggingface/kernels";
// Загрузка ядра с указанием версии контракта
const add = await getKernel("webgpu-kernels/ai.onnx.Add", { version: 1 });
// Выполнение операции
const { c } = await add({
a: {
data: new Float32Array([1, 2, 3, 4, 5, 6]),
shape: [2, 3],
},
b: {
data: new Float32Array([10, 20, 30]),
shape: [3],
},
});
// Результат c имеет shape [2, 3] благодаря автоматическому выводу формы из манифестаБиблиотека автоматически выводит форму выхода и тип данных на основе манифеста и входных тензоров. Для тяжелых операций, таких как ai.onnx.MatMul, паттерн вызова остается неизменным, что обеспечивает масштабируемость.
04Fleet: Краудсорсинговое тестирование
Параллельно запущен инструмент Fleet — система бенчмарков в браузере. Он позволяет пользователям добровольно запускать тесты на своем оборудовании. Результаты (с согласия пользователя) анонимизируются и помогают разработчикам находить узкие места, ошибки корректности и оптимизировать варианты шейдеров для реального железа, которое невозможно покрыть в лабораторных условиях.
05Кому подойдёт / что запустится
- Разработчики браузерных AI-приложений: Если вы строите инференс прямо в клиенте, переход на
@huggingface/kernelsдаст значительный прирост FPS и снижение задержек по сравнению с ORT WebGPU. - Создатели кастомных рантаймов: Структура репозиториев (манифест + WGSL + тесты) служит эталонной реализацией для интеграции WebGPU-операций в свои движки.
- Железо: Требуется GPU с поддержкой WebGPU. Архитектура предназначена для кросс-браузерной совместимости (Chrome, Edge, Firefox, Safari). Для локального запуска на десктопах с NVIDIA/AMD видеокартами потребуется актуальная версия браузера и драйверов. Источник: Hugging Face ↗
