# Kernels

Operasi PyTorch bersifat umum. Vendor perangkat keras dan komunitas membuat implementasi khusus yang berjalan lebih cepat di platform tertentu. Menginstal kernel yang dioptimalkan ini merupakan tantangan karena memerlukan pencocokan versi compiler, toolkit CUDA, dan build yang spesifik untuk platform.

| platform | perangkat yang didukung |
| :--- | :--- |
| GPU NVIDIA (CUDA) | Arsitektur modern dengan kemampuan komputasi 7.0+ (Volta, Turing, Ampere, Hopper, Blackwell) |
| GPU AMD (ROCm) | Kompatibel dengan perangkat yang didukung ROCm |
| Apple Silicon (Metal) | Chip M-series (M1, M2, M3, M4 dan yang lebih baru) |
| GPU Intel (XPU) | Intel Data Center GPU Max Series dan perangkat yang kompatibel |

[Kernels](https://huggingface.co/docs/kernels/index) menyelesaikan masalah ini dengan mendistribusikan biner yang sudah dikompilasi melalui [Hub](https://huggingface.co/kernels-community). Platform Anda dideteksi saat runtime dan biner yang tepat dimuat secara otomatis.

Ketika `use_kernels=True`, Transformers mengidentifikasi lapisan yang memiliki implementasi kernel teroptimasi yang tersedia. Ia mengunduh dan [meng-cache](../installation#cache-directory) kernel dari Hub hanya saat diperlukan untuk mengurangi waktu startup. Kernel mempercepat operasi yang intensif komputasi seperti attention, normalisasi, dan operasi yang digabungkan (fused).

Tidak semua operasi memiliki implementasi kernel. Perpustakaan ini kembali ke PyTorch standar ketika tidak ada kernel yang tersedia.

## Determinisme

Beberapa kernel menghasilkan hasil yang sedikit berbeda dari PyTorch karena pengurutan ulang operasi atau strategi akumulasi. Perbedaan ini secara fungsional ekuivalen tetapi memengaruhi reproduktibilitas.

Untuk perilaku deterministik, coba langkah-langkah berikut.

- Periksa dokumentasi repositori kernel untuk jaminan determinisme. Sebagai contoh, kernel SDPA di [gpt-oss-metal-kernels](https://huggingface.co/kernels-community/gpt-oss-metal-kernels#4-scaled-dot-product-attention-sdpa) cocok dengan implementasi PyTorch 97% dari waktu.
- Nonaktifkan kernel tertentu yang memengaruhi kasus penggunaan Anda.
- Set seed acak dan flag deterministik PyTorch.

## Sumber daya

- panduan [Memuat kernel](./loading_kernels) untuk memulai
- Repositori GitHub [Kernels](https://github.com/huggingface/kernels)
- artikel blog [Perkuat Model Anda dalam 5 Menit dengan Hugging Face Kernel Hub](https://huggingface.co/blog/hello-hf-kernels)

