Transformers documentation
Kernels
Kernels
Les opérations PyTorch sont polyvalentes. Les fabricants de matériel et la communauté créent des implémentations spécialisées qui s'exécutent plus rapidement sur des plateformes spécifiques. L'installation de ces noyaux optimisés est un défi, car elle nécessite d'aligner les versions des compilateurs, les toolkits CUDA et les builds spécifiques à la plateforme.
| plateforme | appareils pris en charge |
|---|---|
| GPU NVIDIA (CUDA) | Les architectures modernes avec une capacité de calcul 7.0+ (Volta, Turing, Ampere, Hopper, Blackwell) |
| GPU AMD (ROCm) | Compatible avec les appareils pris en charge par ROCm |
| Apple Silicon (Metal) | Puces de la série M (M1, M2, M3, M4 et plus récentes) |
| GPU Intel (XPU) | Intel Data Center GPU Max Series et appareils compatibles |
Kernels résout ce problème en distribuant des binaires précompilés via le Hub. Il détecte votre plateforme à l'exécution et charge automatiquement le binaire approprié.
Lorsque use_kernels=True, Transformers identifie les couches pour lesquelles des implémentations de noyaux optimisés sont disponibles. Il télécharge et met en cache les noyaux depuis le Hub uniquement si nécessaire, afin de réduire le temps de démarrage. Les noyaux accélèrent les opérations de calcul intensif telles que l'attention, la normalisation et les opérations fusionnées.
Toutes les opérations ne disposent pas d'implémentations de noyaux. La bibliothèque bascule sur PyTorch standard lorsqu'aucun noyau n'est disponible.
Déterminisme
Certains noyaux produisent des résultats légèrement différents de ceux de PyTorch en raison du réordonnancement des opérations ou des stratégies d’accumulation. Ces différences sont fonctionnellement équivalentes, mais elles affectent la reproductibilité.
Pour un comportement déterministe, essayez ce qui suit.
- Consultez la documentation du dépôt de noyaux pour les garanties de déterminisme. Par exemple, le noyau SDPA de gpt-oss-metal-kernels correspond à l’implémentation PyTorch 97 % du temps.
- Désactivez les noyaux spécifiques qui affectent votre cas d'utilisation.
- Définir les graines aléatoires et les drapeaux déterministes de PyTorch.
Ressources
- guide Chargement des noyaux pour commencer
- Dépôt GitHub Kernels
- l'article de blog Améliorez vos modèles en 5 minutes avec le Hugging Face Kernel Hub