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 (v4.57.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Kernels

This page documents the kernels configuration utilities.

KernelConfig

class transformers.KernelConfig

< >

( kernel_mapping = {} )

Kernel configuration class. This class is used to configure the kernel mapping for a model.

create_compatible_mapping

< >

( model compile = False )

Transforms a simple kernel_mapping of the form: { “RMSNorm”: “kernels-community/layer_norm:LlamaRMSNorm”, … },

or

{ “RMSNorm”: { “cuda”: “kernels-community/layer_norm:LlamaRMSNorm”, “rocm”: “kernels-community/layer_norm:LlamaRMSNorm”, … }, … }

into a nested mapping:

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

that’s compatible with the kernels library.

The device is inferred from the model’s parameters if not provided. The Mode is inferred from the model’s training state.

sanitize_kernel_mapping

< >

( model )

Parameters

  • model — The model instance whose modules are checked for registered kernel_layer_name attributes.

Raises

ValueError

  • ValueError — If a layer_name is not registered in the model, if a device is not supported, or if a repo_name is not a valid ‘org/repo:layer_name’ string.

Validates the kernel_mapping to ensure that:

  1. Each layer_name in the mapping is registered in the model (i.e., the model contains a module with a matching kernel_layer_name).
  2. Each kernel value is either a string of the form ‘org/repo:layer_name’ or a dict mapping device types (“cuda”, “rocm”, “xpu”) to such strings.
  3. Each device key in a dict is one of “cuda”, “rocm”, or “xpu”.
  4. Each repo_name is a valid repository and layer name in the format ‘org/repo:layer_name’ (i.e., a string containing both a slash and a colon).
Update on GitHub