Transformers documentation

内核

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
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