Transformers documentation

Ядра

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ядра

Операции PyTorch являются универсальными. Производители оборудования и сообщество создают специализированные реализации, которые работают быстрее на конкретных платформах. Установка этих оптимизированных ядер представляет собой сложную задачу, поскольку требует соответствия версий компиляторов, CUDA toolkits и платформенно-специфичных сборок.

платформаподдерживаемые устройства
NVIDIA GPU (CUDA)Современные архитектуры с вычислительной мощностью 7.0+ (Volta, Turing, Ampere, Hopper, Blackwell)
Видеокарты AMD (ROCm)Совместимо с устройствами, поддерживающими ROCm
Apple Silicon (Metal)Чипы серии M (M1, M2, M3, M4 и новее)
Intel GPU (XPU)Intel Data Center GPU Max Series и совместимые устройства

Kernels решает эту проблему, распространяя предварительно скомпилированные бинарные файлы через Hub. Он определяет вашу платформу во время выполнения и автоматически загружает нужный бинарный файл.

При use_kernels=True Transformers определяет слои, для которых доступны оптимизированные реализации ядер. Ядра загружаются с Hub и кэшируются только при необходимости, чтобы сократить время запуска. Ядра ускоряют вычислительно сложные операции, такие как внимание, нормализация и объединённые операции.

Не для всех операций существуют реализации на уровне ядра. Если ядро недоступно, библиотека использует стандартный PyTorch.

Детерминизм

Некоторые ядра дают результаты, слегка отличающиеся от результатов PyTorch, из-за изменения порядка операций или стратегий накопления. Эти различия функционально эквивалентны, но влияют на воспроизводимость.

Для детерминированного поведения попробуйте следующее.

  • См. документацию репозитория ядра для гарантий детерминизма. Например, ядро SDPA в gpt-oss-metal-kernels совпадает с реализацией PyTorch в 97% случаев.
  • Отключите конкретные ядра, которые влияют на ваш сценарий использования.
  • Установите случайные зерна и флаги детерминизма PyTorch.

Ресурсы

Update on GitHub