Transformers documentation

Kernels

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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.

plataformadispositivos 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

Update on GitHub