# Kernels

As operações do PyTorch são de uso geral. Os fornecedores de hardware e a comunidade criam implementações especializadas que rodam mais rápido em plataformas específicas. A instalação desses kernels otimizados é um desafio, pois exige a compatibilização de versões de compiladores, toolkits CUDA e builds específicos da plataforma.

| plataforma | dispositivos compatíveis |
| :--- | :--- |
| GPUs da NVIDIA (CUDA) | Arquiteturas modernas com capacidade de computação 7.0+ (Volta, Turing, Ampere, Hopper, Blackwell) |
| GPUs AMD (ROCm) | Compatível com dispositivos compatíveis com ROCm |
| Apple Silicon (Metal) | Chips da série M (M1, M2, M3, M4 e mais novos) |
| GPUs da Intel (XPU) | Intel Data Center GPU Max Series e dispositivos compatíveis |

[Kernels](https://huggingface.co/docs/kernels/index) resolve isso distribuindo binários pré-compilados por meio do [Hub](https://huggingface.co/kernels-community). Ele detecta sua plataforma em tempo de execução e carrega automaticamente o binário adequado.

Quando `use_kernels=True`, o Transformers identifica camadas com implementações de kernel otimizadas disponíveis. Ele baixa e [armazena em cache](../installation#cache-directory) kernels do Hub apenas quando necessário, para reduzir o tempo de inicialização. Os kernels aceleram operações intensivas de computação, como atenção, normalização e operações fundidas.

Nem todas as operações possuem implementações de kernel. A biblioteca recorre ao PyTorch padrão quando nenhum kernel está disponível.

## Determinismo

Alguns kernels produzem resultados ligeiramente diferentes dos do PyTorch devido à reordenação de operações ou a estratégias de acumulação. Essas diferenças são funcionalmente equivalentes, mas afetam a reprodutibilidade.

Para um comportamento determinístico, tente o seguinte.

- Consulte a documentação do repositório de kernels para as garantias de determinismo. Por exemplo, o kernel SDPA em [gpt-oss-metal-kernels](https://huggingface.co/kernels-community/gpt-oss-metal-kernels#4-scaled-dot-product-attention-sdpa) corresponde à implementação do PyTorch 97% das vezes.
- Desative kernels específicos que afetam seu caso de uso.
- Defina as sementes aleatórias e as flags de determinismo do PyTorch.

## Recursos

- guia [Carregando kernels](./loading_kernels) para começar
- Repositório do GitHub [Kernels](https://github.com/huggingface/kernels)
- post no blog [Reforce seus modelos em 5 minutos com o Hugging Face Kernel Hub](https://huggingface.co/blog/hello-hf-kernels)

