Transformers documentation
Kernels
Kernels
Esta página documenta las utilidades de configuración de kernels.
kernelize
Registra temporalmente los envoltorios de kernel ocultos para que kernelize pueda descubrirlos y reemplazarlos.
KernelConfig
clase transformers.KernelConfig
< source >( kernel_mapping = Noneuse_local_kernel = Falseinherit_mapping = True )
Clase de configuración de kernel. Esta clase se utiliza para configurar el mapeo de kernel de un modelo.
Transforma un simple kernel_mapping de la forma: { “RMSNorm”: (“kernels-community/layer_norm:LlamaRMSNorm”, {“version”: 1, “trust_remote_code”: True}), … },
o para una ruta local:
{ “RMSNorm”: “/home/user/liger_kernels:LigerRMSNorm”, … },
en un mapeo anidado:
{ “RMSNorm”: { “cuda”: { Mode.INFERENCE: LayerRepository( repo_id=“kernels-community/layer_norm”, layer_name=“LlamaRMSNorm”, version=1, trust_remote_code=True, ) } } }
o para una ruta local:
{ “RMSNorm”: { “cuda”: { Mode.INFERENCE: LocalLayerRepository( repo_path=Path(“/home/user/liger_kernels”), layer_name=“LigerRMSNorm”, ) } } }
que es compatible con la biblioteca kernels.
El dispositivo se infiere a partir de los parámetros del modelo si no se proporciona. El modo se infiere a partir del estado de entrenamiento del modelo.
sanitize_kernel_mapping
< source >( model )
Parámetros
- model — La instancia del modelo cuyos módulos se verifican para comprobar si tienen atributos kernel_layer_name registrados.
Lanza
ValueError
ValueError— Si un layer_name no está registrado en el modelo, si un device no es compatible, o si un repo_name no es una cadena válida de ‘org/repo:layer_name’.
Valida el kernel_mapping para asegurarse de que:
- Cada layer_name en el mapeo se registra en el modelo (es decir, el modelo contiene un módulo con un kernel_layer_name coincidente).
- Cada valor de kernel es
- una cadena de la forma ‘org/repo:layer_name’ o una tupla con la misma cadena y un diccionario de {“revision”/“version/trust_remote_code”: …},
- o un diccionario que mapea los tipos de dispositivos admitidos a dichos valores, como se muestra arriba.
- Cada clave de dispositivo en un dict es una de “cuda”, “rocm”, “xpu”, “npu”, “neuron”, “tpu” o “mps”.
- Cada clave trust remote code debe ser un bool.
- Cada clave de revisión o versión debe existir de forma mutuamente exclusiva si se ha pasado explícitamente.
- Cada repo_name es un nombre de repositorio y capa válido en el formato ‘org/repo:layer_name’ (es decir, una cadena que contiene tanto una barra diagonal como dos puntos).
- Si se detecta una ruta local, debe estar en el formato ‘/abs/path:layer_name’, donde la ruta absoluta apunta al repositorio del kernel, como “/home/user/layer_norm”.