内核
本页记录了内核配置工具。
kernelize
临时注册隐藏的内核包装器,以便 kernelize 能够发现并替换它们。
KernelConfig
class transformers.KernelConfig
< source >( kernel_mapping = Noneuse_local_kernel = Falseinherit_mapping = True )
内核配置类。该类用于配置模型的内核映射。
将如下形式的简单 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
< source >( model )
验证 kernel_mapping,以确保:
- 映射中的每个 layer_name 都已在模型中注册(即模型包含一个具有匹配 kernel_layer_name 的模块)。
- 每个 kernel 值
- 一个形如 ‘org/repo:layer_name’ 的字符串,或一个元组,其中包含与字符串相同的内容以及一个字典 {“revision”/“version/trust_remote_code”: …},
- 或一个字典,将受支持的设备类型映射到上述此类值。
- 字典中的每个设备键都是 “cuda”、“rocm”、“xpu”、“npu”、“neuron”、“tpu” 或 “mps” 之一。
- 每个 trust remote code 键必须是一个 bool。
- 如果显式传递了修订号或版本键,则它们必须互斥且仅存在一个。
- 每个 repo_name 都是格式为 ‘org/repo:layer_name’ 的有效仓库和层名称(即一个同时包含斜杠和冒号的字符串)。
- 如果检测到本地路径,其格式应为 ‘/abs/path:layer_name’,其中绝对路径指向内核仓库,例如 “/home/user/layer_norm”。