Transformers documentation
Kernels
Kernels
Las operaciones de PyTorch son de uso general. Los fabricantes de hardware y la comunidad crean implementaciones especializadas que se ejecutan más rápido en plataformas específicas. Instalar estos kernels optimizados es un desafío porque requiere coincidir con las versiones del compilador, los toolkits de CUDA y las compilaciones específicas de la plataforma.
| plataforma | dispositivos compatibles |
|---|---|
| GPUs de NVIDIA (CUDA) | Arquitecturas modernas con capacidad de cómputo 7.0+ (Volta, Turing, Ampere, Hopper, Blackwell) |
| GPUs de AMD (ROCm) | Compatible con dispositivos compatibles con ROCm |
| Apple Silicon (Metal) | Chips de la serie M (M1, M2, M3, M4 y más nuevos) |
| GPUs de Intel (XPU) | Intel Data Center GPU Max Series y dispositivos compatibles |
Kernels resuelve esto distribuyendo binarios precompilados a través del Hub. Detecta tu plataforma en tiempo de ejecución y carga el binario adecuado automáticamente.
Cuando use_kernels=True, Transformers identifica las capas con implementaciones de kernel optimizadas disponibles. Descarga y almacena en caché los kernels desde el Hub solo cuando es necesario para reducir el tiempo de inicio. Los kernels aceleran operaciones intensivas de cálculo, como la atención, la normalización y las operaciones fusionadas.
No todas las operaciones tienen implementaciones de kernel. La biblioteca recurre a PyTorch estándar cuando no hay un kernel disponible.
Determinismo
Algunos núcleos producen resultados ligeramente diferentes a los de PyTorch debido al reordenamiento de operaciones o a las estrategias de acumulación. Estas diferencias son funcionalmente equivalentes, pero afectan la reproducibilidad.
Para un comportamiento determinista, prueba lo siguiente.
- Consulte la documentación del repositorio de kernels para conocer las garantías de determinismo. Por ejemplo, el kernel SDPA en gpt-oss-metal-kernels coincide con la implementación de PyTorch el 97% de las veces.
- Desactiva los kernels específicos que afectan a tu caso de uso.
- Establecer semillas aleatorias y banderas deterministas de PyTorch.
Recursos
- guía de Carga de kernels para empezar
- Repositorio de GitHub Kernels
- artículo de blog Mejora tus modelos en 5 minutos con el Hugging Face Kernel Hub