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

Esta página documenta os utilitários de configuração de kernels.

kernelize

transformers.kernelize

< >

( model: PreTrainedModelmode: Mode | None = None )

Registre temporariamente os wrappers de kernel ocultos para que kernelize possa descobri-los e substituí-los.

KernelConfig

classe transformers.KernelConfig

< >

( kernel_mapping = Noneuse_local_kernel = Falseinherit_mapping = True )

Classe de configuração de kernel. Esta classe é usada para configurar o mapeamento de kernel para um modelo.

create_compatible_mapping

< >

( modelcompile = False )

Transforma um kernel_mapping simples da forma: { “RMSNorm”: (“kernels-community/layer_norm:LlamaRMSNorm”, {“version”: 1, “trust_remote_code”: True}), … },

ou para um caminho local:

{ “RMSNorm”: “/home/user/liger_kernels:LigerRMSNorm”, … },

em um mapeamento aninhado:

{ “RMSNorm”: { “cuda”: { Mode.INFERENCE: LayerRepository( repo_id=“kernels-community/layer_norm”, layer_name=“LlamaRMSNorm”, version=1, trust_remote_code=True, ) } } }

ou para um caminho local:

{ “RMSNorm”: { “cuda”: { Mode.INFERENCE: LocalLayerRepository( repo_path=Path(“/home/user/liger_kernels”), layer_name=“LigerRMSNorm”, ) } } }

que é compatível com a biblioteca kernels.

O dispositivo é inferido a partir dos parâmetros do modelo, caso não seja fornecido. O Mode é inferido a partir do estado de treinamento do modelo.

sanitize_kernel_mapping

< >

( model )

Parâmetros

  • model — A instância do modelo cujos módulos são verificados em busca de atributos kernel_layer_name registrados.

Exceções

ValueError

  • ValueError — Se um layer_name não estiver registrado no modelo, se um device não for suportado, ou se um repo_name não for uma string válida no formato ‘org/repo:layer_name’.

Valida o kernel_mapping para garantir que:

  1. Cada layer_name no mapeamento é registrado no modelo (ou seja, o modelo contém um módulo com um kernel_layer_name correspondente).
  2. Cada valor de kernel é
    • ou uma string no formato ‘org/repo:layer_name’ ou uma tupla com o mesmo conteúdo como string e um dicionário de {“revision”/“version/trust_remote_code”: …},
    • ou um dicionário que mapeia os tipos de dispositivo suportados para os valores acima.
  3. Cada chave de dispositivo em um dict é uma de “cuda”, “rocm”, “xpu”, “npu”, “neuron”, “tpu” ou “mps”.
  4. Cada chave trust remote code deve ser um bool.
  5. Cada chave de revisão ou versão deve existir de forma mutuamente exclusiva, caso tenha sido passada explicitamente.
  6. Cada repo_name é um nome de repositório e de camada válido no formato ‘org/repo:layer_name’ (ou seja, uma string que contém tanto uma barra quanto dois-pontos).
  7. Se um caminho local for detectado, ele deve estar no formato ‘/abs/path:layer_name’, em que o caminho absoluto aponta para o repositório do kernel, como “/home/user/layer_norm”.
Update on GitHub