Transformers documentation

内核

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

内核

本页记录了内核配置工具。

kernelize

transformers.kernelize

< >

( model: PreTrainedModelmode: Mode | None = None )

临时注册隐藏的内核包装器,以便 kernelize 能够发现并替换它们。

KernelConfig

class transformers.KernelConfig

< >

( kernel_mapping = Noneuse_local_kernel = Falseinherit_mapping = True )

内核配置类。该类用于配置模型的内核映射。

create_compatible_mapping

< >

( modelcompile = False )

将如下形式的简单 kernel_mapping 进行转换: { “RMSNorm”: (“kernels-community/layer_norm:LlamaRMSNorm”, {“version”: 1, “trust_remote_code”: True}), … },

或对于本地路径:

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

嵌套映射:

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

或对于本地路径:

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

与 kernels 库兼容。

如果未提供,设备将从模型的参数中推断。 模式将从模型的训练状态中推断。

sanitize_kernel_mapping

< >

( model )

参数

  • model — 用于检查其模块是否已注册 kernel_layer_name 属性的模型实例。

引发

ValueError

  • ValueError — 如果 layer_name 未在模型中注册,如果设备不受支持,或者 repo_name 不是有效的 ‘org/repo:layer_name’ 字符串。

验证 kernel_mapping,以确保:

  1. 映射中的每个 layer_name 都已在模型中注册(即模型包含一个具有匹配 kernel_layer_name 的模块)。
  2. 每个 kernel 值
    • 一个形如 ‘org/repo:layer_name’ 的字符串,或一个元组,其中包含与字符串相同的内容以及一个字典 {“revision”/“version/trust_remote_code”: …},
    • 或一个字典,将受支持的设备类型映射到上述此类值。
  3. 字典中的每个设备键都是 “cuda”、“rocm”、“xpu”、“npu”、“neuron”、“tpu” 或 “mps” 之一。
  4. 每个 trust remote code 键必须是一个 bool。
  5. 如果显式传递了修订号或版本键,则它们必须互斥且仅存在一个。
  6. 每个 repo_name 都是格式为 ‘org/repo:layer_name’ 的有效仓库和层名称(即一个同时包含斜杠和冒号的字符串)。
  7. 如果检测到本地路径,其格式应为 ‘/abs/path:layer_name’,其中绝对路径指向内核仓库,例如 “/home/user/layer_norm”。
Update on GitHub