Запуск моделей машинного обучения прямо в браузере давно казался спасением от растущих счетов за облачные GPU, однако скорость вычислений неизменно упиралась в ограничения низкоуровневой трансляции инструкций на клиентском оборудовании. Хотя стандартные веб-графические API гарантируют запуск кода во всех современных браузерах, реальная вычислительная производительность сильно колеблется в зависимости от пропускной способности памяти, конфигурации рабочих групп и исполнения локальных шейдеров. Для команд разработчиков, стремящихся сократить инфраструктурные издержки и снять вопросы комплаенса за счет локального инференса, создание надежных клиентских приложений требует оптимизации шейдеров на низком уровне.

Чтобы преодолеть эту фрагментацию, Hugging Face выпустила библиотеку `@huggingface/kernels` и стартовый набор из 207 открытых WebGPU-ядер под лицензией Apache-2.0. Проект под руководством Нико Мартина и Джошуа Ксеновы из команды WebAI нацелен на самый нижний слой стека, где высокоуровневые нейросети распадаются на базовые математические операции.

Низкоуровневые операции и слой оптимизации

Когда модель запускается в браузере, среда выполнения делит ее на элементарные математические подпрограммы: матричные умножения, нормализации, свертки, слои внимания, шаги квантования и трансформации раскладки тензоров. Хотя WebGPU предоставляет единый API для всех браузеров, а WGSL выступает стандартизированным синтаксисом шейдеров, один и тот же код шейдера часто демонстрирует непредсказуемую пропускную способность на разном потребительском кремнии.

Как отметили Мартин и Ксенова в описании релиза, практический инференс в браузере требует слаженной работы всех компонентов:

«Одна из главных целей команды WebAI в Hugging Face — сделать запуск моделей в браузере максимально быстрым и удобным. Этот процесс охватывает несколько уровней: моделям нужны понятные браузеру представления, средам выполнения — эффективные планы исполнения, а низкоуровневым GPU-операциям — способность выжимать максимум из совершенно разных устройств и браузерных движков».

Поскольку скорость веб-рантаймов целиком зависит от производительности вызываемых подпрограмм, изоляция и стандартизация этих модулей позволяет разработчикам точечно оптимизировать каждое ядро. Скорость локального инференса заметно зависит от размерности тензоров, распределения рабочих групп, векторизации и стратегий кэширования памяти. Поэтому универсальная оптимизация не работает без модульных и параметризованных операций.

Шейдеры как модульные репозитории

Вместо монолитных шейдеров Hugging Face оформила каждую операцию как независимый репозиторий в организации `webgpu-kernels` на платформе Hugging Face Hub. Каждый репозиторий содержит спецификации интерфейса, шаблоны WGSL, тесты корректности, бенчмарки и документацию по реализации.

Параметрические шаблоны WGSL генерируют код шейдеров прямо на лету, подстраиваясь под размерности тензоров и лимиты конкретного чипа. Загрузчик `@huggingface/kernels` для JavaScript автоматически скачивает, компилирует и передает эти ядра из Hub напрямую в браузерный рантайм без необходимости собирать сложные нативные цепочки компиляции.

Краудсорсинговое профилирование железа с помощью Fleet

Чтобы справиться с огромным разнообразием потребительских видеокарт, команда представила Fleet — инструмент для бенчмаркинга и профилирования прямо в браузере. Внутренние лаборатории не способны протестировать все возможные комбинации GPU, версий драйверов и браузерных движков, поэтому Fleet запускает тесты непосредственно на устройствах пользователей, замеряя производительность и точность вычислений.

С согласия пользователей Fleet собирает телеметрию, выявляя просадки скорости и ошибки округления на разных архитектурах. Для инженерных команд, которые внедряют клиентский инференс ради экономии на облачных серверах и безопасной обработки конфиденциальных данных без задержек сети, эти данные дают надежную основу для стабильного запуска ИИ в браузере.

Hugging FaceСнижение затратЛокальный ИИОпенсорс ИИМашинное обучение