Технологии
Hugging Face выпустила 207 WebGPU-ядер для локального AI
Библиотека @huggingface/kernels загружает versioned GPU-операции прямо из Hub, а Fleet собирает проверки скорости и корректности на реальных браузерах. На Apple M4 отобранные тесты показали медианное ускорение 1,9 раза против ORT WebGPU.

Hugging Face открыла `@huggingface/kernels` — минимальную JavaScript-библиотеку для загрузки и запуска оптимизированных WebGPU-ядер из Hugging Face Hub. Вместе с loader опубликована стартовая коллекция из 207 операций под лицензией Apache-2.0 и Fleet — браузерный стенд, который проверяет скорость и корректность на устройстве пользователя.
Релиз нацелен на нижний слой browser inference. Любая модель в браузере в итоге раскладывается на matrix multiplication, normalization, convolution, attention, quantization и преобразования layout. WebGPU даёт переносимый доступ к GPU, а WGSL — общий язык shaders, но одинаково корректные реализации могут резко отличаться по скорости на разных ускорителях, драйверах и размерах входа.
Каждое ядро публикуется как проверяемый пакет
Вместо каталога отдельных shaders Hugging Face создала по репозиторию и kernel card на операцию. `manifest.json` описывает inputs, outputs, attributes, ограничения типов и правила вычисления shapes. `metadata.json` хранит идентификатор, digests и provenance; `test.json` — случаи проверки корректности; `bench.json` — benchmark и tuning cases; файлы `*.wgsl.jinja` содержат параметризованные реализации WGSL.
Такая упаковка отделяет стабильный контракт от изменяемой оптимизации. Приложение вызывает `getKernel` с ID репозитория и версией контракта, передаёт typed data и shapes, а loader выводит форму результата и выделяет память. Версия контракта не равна ONNX opset, `since_version` оператора или revision модели — это отдельная зависимость JavaScript-интерфейса.
Одна операция может иметь несколько вариантов
Пример `ai.onnx.Add` показывает multidirectional broadcasting. Для одинаковых shapes можно выбрать прямой vectorized path, для broadcasting нужен другой расчёт индексов, а общий вариант покрывает редкие формы. Runtime способен подобрать реализацию под конкретный вызов и устройство, не меняя API приложения. Для сложных операций вроде `ai.onnx.MatMul` правильный variant заметно важнее, чем в демонстрации сложения шести чисел.
Установить preview можно командой `npm install @huggingface/kernels@preview`. Для выполнения требуется браузер с WebGPU; наличие интерфейса проверяется выражением `"gpu" in navigator`. Фактическая доступность всё равно зависит от сочетания браузера, операционной системы, GPU и драйвера.
Бенчмарк показал ускорение, но только на уровне операций
Hugging Face сравнила коллекцию с ONNX Runtime Web `1.30.0-dev.20260826-b1f76d586a` на Apple M4 GPU. Из 1756 тестов авторы оставили 809, где обе стороны выдавали совпадающий результат и надёжное время. На этой выборке kernels были быстрее в 629 случаях, медленнее в 176 и дали четыре ничьи; geometric mean speedup составил 2,57 раза, медиана — 1,90 раза.
Для Add опубликовано 3,52x, Softmax — 2,11x, LayerNormalization — 2,22x, MatMul — 1,14x. Некоторые slow paths дали экстремальные цифры: один bilinear Einsum ускорился более чем в десять тысяч раз, а row-wise CumSum — в 301 раз. Авторы прямо предупреждают, что это необычные случаи, а не ожидаемое ускорение каждого приложения.
Измерялось GPU-время операции без загрузки kernel, создания session, передачи входов, компиляции shader и чтения результата. Это benchmark primitives, не полных моделей. Поэтому из 1,90x на выбранных тестах нельзя заключить, что чат-бот или vision-модель ускорится в браузере в те же 1,90 раза.
Fleet превращает разнообразие устройств в тестовую сеть
WebGPU особенно чувствителен к hardware и browser stack, поэтому результат одного M4 недостаточен. Fleet запускает correctness и performance checks локально и показывает поведение kernels на конкретном устройстве. С согласия пользователя прогон отправляет приватные evidence-данные, помогающие находить неверные результаты, патологически медленные случаи и улучшать правила выбора вариантов.
Подход создаёт цикл: versioned репозиторий фиксирует контракт, loader исполняет операцию, Fleet собирает наблюдения, а новые версии исправляют ошибки и оптимизируют device-specific пути. Hugging Face также сообщает о работе с командой ONNX Runtime над переносом улучшений в более широкую экосистему ONNX Runtime Web.
Почему это важно
Локальный AI часто обсуждают через размер модели и квантование, но пользователь ощущает качество всего стека. Если базовая операция компилируется долго или попадает на медленный путь конкретного GPU, компактная модель всё равно будет неудобной. Публичные контракты, тесты и benchmark cases делают низкоуровневую производительность отдельным переиспользуемым продуктом, а не скрытой частью каждого runtime.
Практический вывод для web-разработчиков — тестировать полный сценарий на собственной матрице устройств. Нужно отдельно измерять cold start, загрузку kernels, shader compilation, transfer данных, память и end-to-end latency модели, а также закреплять версии контрактов. `@huggingface/kernels` даёт перспективный фундамент для browser AI, но заявленное ускорение следует подтверждать на своей модели и hardware до production-внедрения.