Transformers documentation
Ядра
Ядра
На этой странице описаны утилиты для настройки ядер.
kernelize
Временно зарегистрируйте обёртки скрытых ядер, чтобы kernelize мог обнаружить и заменить их.
KernelConfig
класс 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 )
Параметры
- model — экземпляр модели, модули которой проверяются на наличие зарегистрированных атрибутов kernel_layer_name.
Исключения
ValueError
ValueError— если layer_name не зарегистрирован в модели, если устройство не поддерживается или если repo_name не является корректной строкой формата ‘org/repo:layer_name’.
Проверяет kernel_mapping, чтобы убедиться, что:
- Каждый layer_name в отображении зарегистрирован в модели (то есть модель содержит модуль с соответствующим kernel_layer_name).
- Каждое значение ядра — это
- строка вида ‘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”.