Transformers documentation
Kernels
Kernels
Esta página documenta os utilitários de configuração de kernels.
kernelize
Registre temporariamente os wrappers de kernel ocultos para que kernelize possa descobri-los e substituí-los.
KernelConfig
classe transformers.KernelConfig
< source >( 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.
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
< source >( 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:
- Cada layer_name no mapeamento é registrado no modelo (ou seja, o modelo contém um módulo com um kernel_layer_name correspondente).
- 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.
- Cada chave de dispositivo em um dict é uma de “cuda”, “rocm”, “xpu”, “npu”, “neuron”, “tpu” ou “mps”.
- Cada chave trust remote code deve ser um bool.
- Cada chave de revisão ou versão deve existir de forma mutuamente exclusiva, caso tenha sido passada explicitamente.
- 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).
- 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”.