Transformers documentation
Kernels
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 resolve isso distribuindo binários pré-compilados por meio do Hub. 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 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 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 para começar
- Repositório do GitHub Kernels
- post no blog Reforce seus modelos em 5 minutos com o Hugging Face Kernel Hub