Hugging Face Kernels: крупные обновления инфраструктуры

Hugging Face представила крупное обновление своего проекта Kernels, который занимается оптимизированными вычислительными ядрами. Основное нововведение, новый тип репозитория на Hub, называемый «kernel», который позволяет разработчикам загружать и администрировать оптимизированный код с явной поддержкой различных ускорителей, операционных систем и версий фреймворков.
Проект почти полностью переработан. На стороне безопасности реализованы три уровня защиты: воспроизводимость сборок через Nix (hermetic evaluation), встраивание SHA1 исходного кода в артефакт ядра, система доверенных издателей (только они по умолчанию могут загружать ядра; остальные требуют явного согласия через trust_remote_code), и подписание кода через Sigstore cosign с эфемерными ключами.
команда рефакторила CLI: инструменты kernels и kernel-builder теперь чётко разделены (kernels, библиотека для загрузки и подготовки, kernel-builder, инструмент сборки). Расширена поддержка фреймворков: добавлены Torch Stable ABI (позволяет писать ядра под Torch 2.9+, работающие с версиями ≥2.9) и Apache TVM FFI (стандартизированный ABI, работающий с PyTorch, Jax, CuPy). Завершена инструментальная база для агентной разработки ядер: агенты могут через интеграцию с HF Jobs автоматически собирать, тестировать и оптимизировать ядра, сравнивая производительность с baseline на разных ускорителях. Добавлены система карт (system cards) для документирования интерфейсов, методы has_kernel() и get_kernel_variants() для проверки совместимости, скрипты для инициализации окружения и исправления проблем с manylinux_2_28 (переход на динамическую линковку libstdc++).
Ключевые факты
- Kernels, новый тип репозитория на Hub, позволяющий разработчикам публиковать оптимизированный код с явной совместимостью по железу и фреймворкам
- Безопасность усилена тремя механизмами: воспроизводимые сборки через Nix, подписание кода Sigstore, система доверенных издателей (default-deny для неизвестного кода)
- Torch Stable ABI и Apache TVM FFI позволяют писать ядра, работающие с несколькими версиями PyTorch и переносимые между фреймворками (PyTorch, Jax, CuPy)
- Агенты теперь могут автоматически генерировать, собирать и оптимизировать ядра, используя интеграцию с HF Jobs для бенчмарков на разных железах
- Разделение CLI (kernels для загрузки, kernel-builder для сборки) и инструменты для проверки совместимости упрощают разработку и деплой
Почему это важно
Kernels, критическая часть пайплайна оптимизации в ML. Рукописные ядра (CUDA, Triton) дают ускорение, но требуют воспроизводимости, безопасности и кроссплатформенной совместимости. До сих пор разработчики либо писали ad-hoc оптимизации в своих приложениях, либо конкурировали в разных репозиториях без стандартизации. Новый тип репозитория на Hub делает ядра первоклассными гражданами экосистемы: они видны, индексируются, и на них есть единые требования (сборка через Nix, подписание). Это открывает путь для агентной оптимизации, когда ИИ-агент может итеративно генерировать и тестировать ядра на разном железе, получая оптимизацию без ручной работы.
Кому это важно
Разработчикам ML-приложений (нужна максимальная производительность на конкретном железе), авторам фреймворков (нужна поддержка расширенных ядер), командам инфраструктуры (нужна безопасность и воспроизводимость), исследователям (нужны инструменты для агентной оптимизации). Компаниям, стоящим на дорогом GPU-железе, оптимизация на 20, 30% сэкономит миллионы. Hugging Face позиционирует Kernels как инструмент для сообщества: любой разработчик может загрузить ядро в Hub, и он станет доступен тысячам.
Как это применить
Разработчикам ядер: запросить статус доверенного издателя в настройках профиля на Hub, использовать kernel-builder для сборки через Nix (есть скрипт one-click или Terraform setup), подписать код через Sigstore (cosign), загрузить в Hub. Пользователям: для доверенного издателя, просто from kernels import get_kernel(); для неизвестного, добавить trust_remote_code=True. Для проверки совместимости: вызвать has_kernel() или get_kernel_variants() перед загрузкой ядра. Агентам: использовать kernel-builder CLI (оптимизирован для программного использования), HF Jobs для бенчмарков на разных железах, итеративно улучшать производительность.
Можно ли доверять
Механизмы безопасности Hugging Face проверены сообществом: Nix для воспроизводимости, промышленного уровня, Sigstore cosign, стандарт в Linux-сообществе. Система доверенных издателей, manual review на каждого нового автора, но не скейлится для массового расширения. Подписание через эфемерные ключи (lifetime ограничена), защита даже при компрометации учётного записи Hub (злоумышленник не может заново подписать перехваченное ядро). Код signing пока не enforced при загрузке (Hugging Face ещё тестирует), но может быть включена позже. Основной риск, допущение о доверии: нужно верить, что Hugging Face корректно проверяет доверенные издатели и что их инфраструктура не скомпрометирована.
Риски и подводные камни
Система доверенных издателей создаёт барьер для новых разработчиков (нужно просить доступ, ждать ревью). Воспроизводимость через Nix требует специфичных знаний и может замедлить разработку. При переходе на динамическую линковку libstdc++ возможны проблемы с совместимостью на очень старых системах (Hugging Face утверждает, что использует официальный manylinux_2_28, но это нужно проверять per-kernel). Агентная оптимизация пока в зачаточном состоянии, рабочие процессы ещё эволюционируют, нет стабильного API. Если ядро оптимизировано под одно поколение железа (напр. A100), оно может быть медленнее на новом (H100), требует переоптимизации.
«Kernels, мост между разработчиками ядер и пользователями ML-приложений. Новый тип репозитория на Hub позволяет видеть тренды через ядра, модели и приложения, которые их используют.»
— Hugging Face, пост о Kernels