Transformers documentation
Модели
Модели
Базовый класс PreTrainedModel реализует общие методы для загрузки/сохранения модели из локального файла или каталога, либо из конфигурации предобученной модели, предоставляемой библиотекой (скачанной с HuggingFace Hub).
PreTrainedModel также реализует несколько методов, общих для всех моделей:
- изменить размер встраиваний входных токенов при добавлении новых токенов в словарь
Остальные методы, общие для каждой модели, определены в ModuleUtilsMixin и GenerationMixin.
PreTrainedModel
Базовый класс для всех моделей.
PreTrainedModel отвечает за хранение конфигурации моделей и управляет методами загрузки, скачивания и сохранения моделей, а также несколькими методами, общими для всех моделей:
- изменить размер входных эмбеддингов
Атрибуты класса (переопределяются производными классами):
- config_class (PreTrainedConfig) — Подкласс PreTrainedConfig, используемый в качестве класса конфигурации для данной архитектуры модели.
- base_model_prefix (
str) — строка, указывающая на атрибут, связанный с базовой моделью в производных классах той же архитектуры, которые добавляют модули поверх базовой модели. - main_input_name (
str) — Название основного входа модели (частоinput_idsдля NLP-моделей,pixel_valuesдля моделей зрения иinput_valuesдля речевых моделей). - can_record_outputs (dict):
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Параметры
- repo_id (
str) — Имя репозитория, в который вы хотите загрузить свою модель. При загрузке в конкретную организацию оно должно содержать имя вашей организации. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию —"Upload model". - commit_description (
str, необязательный) — Описание коммита, который будет создан - private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. ЕслиNone(по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный режим. Это значение игнорируется, если репозиторий уже существует. - token (
boolилиstr, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. ЕслиTrue(по умолчанию), будет использован токен, сгенерированный при выполненииhf auth login(хранится в~/.huggingface). - revision (
str, необязательный) — Ветка, в которую будут загружены файлы. - create_pr (
bool, необязательный, по умолчаниюFalse) — Создавать ли PR с загруженными файлами или коммитить изменения напрямую. - max_shard_size (
intилиstr, необязательный, по умолчанию"50GB") — Применимо только к моделям. Максимальный размер контрольной точки перед её разбиением на части. Каждая из частей будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например,"5MB"). - tags (
list[str], необязательный) — Список тегов для загрузки на Hub.
Загрузите файл модели в 🤗 Model Hub.
Примеры:
from transformers import AutoModel
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")
# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")Отключает контрольную точку активации для текущей модели.
activation_checkpointing_enable
< source >( activation_checkpointing_kwargs = Noneevery_n_layers: int = 1offload: bool = False )
Параметры
- every_n_layers (
int, необязательный, по умолчанию 1) — Создавать контрольные точки только для каждогоevery_n_layers-го слоя декодера, оставляя остальные слои с сохранёнными активациями. Значение1создаёт контрольные точки для каждого слоя, что соответствует стандартному поведению «всё или ничего». Большие значения позволяют обменять освобождённую память на скорость, что оправдано, когда память, высвобожденная при полном контрольном точковании, остаётся неиспользованной. - offload (
bool, необязательный, по умолчаниюFalse) — Хранить активации, сохранённые для пересчёта, в закреплённой памяти хоста, а не на ускорителе. Это освобождаетlayers x sequence x hiddenбайт памяти устройства, что является доминирующим фактором при длинных последовательностях, но требует копирования с устройства на хост в прямом проходе и с хоста на устройство в обратном. Оба копирования выполняются в потоке вычислений, из-за чего шаг становится медленнее. - activation_checkpointing_kwargs (dict, необязательный) —
Дополнительные именованные аргументы, передаваемые в функцию
torch.utils.checkpoint.checkpoint.
Включает контрольную точку активации для текущей модели.
Мы передаём метод __call__ модулей вместо forward, потому что __call__ подключает все хуки модуля. https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
add_model_tags
< source >( tags: list[str] | str )
Добавляет пользовательские теги в модель, которая отправляется на Hugging Face Hub. Существующие теги модели не будут перезаписаны.
can_generate
< source >( ) → bool
Возвращает
bool
Может ли эта модель генерировать последовательности с помощью .generate().
Возвращает, может ли эта модель генерировать последовательности с помощью .generate(), из GenerationMixin или из класса с похожим интерфейсом.
Внутри, для классов, для которых эта функция возвращает True, запускаются некоторые изменения, специфичные для генерации:
например, у экземпляра модели будет заполнен атрибут generation_config.
Мок-значение для пути с точками (например, torch.float32): цепочки доступа к атрибутам и вызовы работают как пропускные декораторы, repr возвращает путь с точками, а использование в качестве базового класса подставляет обычный базовый класс type (PEP 560 __mro_entries__), благодаря чему реальные дочерние классы сохраняют обычный метакласс, а inspect.signature читает их реальный __init__, а не мок-объект.
При необходимости выполнить декуантизацию модели, если она была квантована методом квантования, поддерживающим декуантизацию.
Удаляет _require_grads_hook.
Включает градиенты для входных эмбеддингов. Это полезно для дообучения весов адаптеров при сохранении весов модели неизменными.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None*model_argsconfig: transformers.configuration_utils.PreTrainedConfig | str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneignore_mismatched_sizes: bool = Falseforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'use_safetensors: bool | None = Noneweights_only: bool = Truefusion_config: dict[str, bool | dict[str, typing.Any]] | None = Nonedisable_mmap: bool | None = None**kwargs )
Параметры
- pretrained_model_name_or_path (
strилиos.PathLike, необязательный) — Может быть одним из следующих:- Строка, model id предобученной модели, размещенной в репозитории моделей на huggingface.co.
- Путь к каталогу, содержащему веса модели, сохранённые с помощью
save_pretrained(), например,
./my_model_directory/. Каталоги, сохранённые сsave_pretrained(..., distributed_checkpoint=True), обнаруживаются и загружаются с использованием распределённого чекпоинтинга (DCP), сохраняя текущую сетку и размещения модели. Для этого требуетсяtorch>=2.7, и загрузка выполняется строго: каждый ключ модели должен присутствовать в чекпоинте. None, если вы предоставляете и конфигурацию, и словарь состояния (соответственно, с аргументами по имениconfigиstate_dict).
- model_args (последовательность позиционных аргументов, необязательно) —
Все оставшиеся позиционные аргументы передаются в метод
__init__базовой модели. - config (
Union[PreTrainedConfig, str, os.PathLike], необязательный) — Может быть:- экземпляр класса, производного от PreTrainedConfig,
- строка или путь, допустимый в качестве входного параметра для from_pretrained().
Конфигурация модели, используемая вместо автоматически загружаемой конфигурации. Конфигурация может быть загружена автоматически, когда:
- Модель — это модель, предоставляемая библиотекой (загружаемая с помощью строки model id предобученной модели).
- Модель была сохранена с помощью save_pretrained() и загружается заново путем указания каталога сохранения.
- Модель загружается путём указания локального каталога в качестве
pretrained_model_name_or_path, при этом в каталоге находится файл конфигурации JSON с именем config.json.
- state_dict (
dict[str, torch.Tensor], необязательный) — Словарь состояния, который используется вместо словаря состояния, загруженного из файла сохранённых весов. Этот параметр можно использовать, если вы хотите создать модель на основе предобученной конфигурации, но загрузить собственные веса. В этом случае, однако, стоит проверить, не является ли использование save_pretrained() и from_pretrained() более простым вариантом.Этот вариант можно использовать, если вы хотите создать модель на основе предобученной конфигурации, но загрузить собственные веса. В этом случае, однако, стоит проверить, не является ли использование save_pretrained() и from_pretrained() более простым решением.
- cache_dir (
Union[str, os.PathLike], необязательный) — Путь к каталогу, в котором следует кэшировать загруженную конфигурацию предобученной модели, если стандартный кэш не используется. - ignore_mismatched_sizes (
bool, необязательный, по умолчаниюFalse) — Следует ли вызывать ошибку, если размеры некоторых весов из контрольной точки не совпадают с размерами весов модели (например, если вы инициализируете модель с 10 метками из контрольной точки с 3 метками). - force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют. - proxies (
dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси применяются при каждом запросе. - output_loading_info(
bool, optional, по умолчаниюFalse) — Определяет, следует ли также возвращать словарь, содержащий отсутствующие ключи, неожиданные ключи и сообщения об ошибках. - local_files_only(
bool, optional, по умолчаниюFalse) — Определяет, следует ли использовать только локальные файлы (то есть не пытаться скачать модель). - token (
strилиbool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если указаноTrueили параметр не задан, будет использован токен, сгенерированный при выполненииhf auth login(хранится в~/.huggingface). - revision (
str, необязательный, по умолчанию"main") — Конкретная версия модели, которую нужно использовать. Это может быть имя ветки, имя тега или идентификатор коммита, так как для хранения моделей и других артефактов на huggingface.co используется система на базе git, поэтомуrevisionможет быть любым идентификатором, разрешенным git.Чтобы протестировать pull request, который вы создали на Hub, вы можете передать
revision="refs/pr/<pr_number>". - attn_implementation (
str, необязательный) — Реализация механизма внимания, используемая в модели (если применимо). Допустимые значения:"eager"(ручная реализация внимания)"sdpa"(используяF.scaled_dot_product_attention)"flash_attention_2"(используя Dao-AILab/flash-attention)"flash_attention_3"(используя Dao-AILab/flash-attention/hopper)"flash_attention_4"(используется Dao-AILab/flash-attention/flash_attn/cute). По умолчанию, если доступно, используется SDPA. В противном случае по умолчанию применяется ручная реализация"eager".
Принимать ссылки на ядра HF в формате:
/ [@ ][: ] и — это любые последовательности, не содержащие «/» и «:». - “@
” является необязательным (ветка, тег или commit-ish), например, “@main”, “@v1.2.0”, “@abc123”. - ”:
” — необязательный параметр, позволяющий выбрать функцию внутри репозитория ядра. - Оба варианта могут появляться вместе и только в таком порядке: сначала @revision, затем :kernel_name.
- Мы намеренно допускаем префикс “
|” в начале строки (например, “flash|…”), поскольку код удаляет его перед загрузкой; символ ’|’ не исключен в классах символов здесь.
Примеры, которые соответствуют: “org/model” “org/model@main” “org/model:custom_kernel” “org/model@v1.2.3:custom_kernel”
- experts_implementation (
str, необязательный) — Реализация экспертов, используемая в модели (если применимо). Может быть одной из следующих:"eager"(последовательная реализация умножения матриц экспертов)."batched_mm"(используяtorch.bmm)."grouped_mm"(используяtorch.nn.functional.grouped_mm).
По умолчанию, если модель это поддерживает, будет использоваться
"grouped_mm". В противном случае по умолчанию используется ручная реализация"eager".
Параметры для инференса больших моделей
- dtype (
strилиtorch.dtype, необязательный, по умолчанию"auto") — Переопределяет параметрtorch_dtypeи загружает модель в указанномdtype. Доступные варианты:-
torch.float16илиtorch.bfloat16илиtorch.float: загрузка в указанномdtype, игнорируяconfig.dtypeмодели, если он существует. Если не указано- модель будет загружена в
torch.float(fp32).
- модель будет загружена в
-
"auto"— будет предпринята попытка использовать записьdtypeилиtorch_dtypeиз файлаconfig.jsonмодели. Если такая запись не найдена, то следующим шагом проверяетсяdtypeпервого веса в контрольной точке, имеющего тип с плавающей точкой, и он используется в качествеdtype. В результате модель будет загружена с темdtype, в котором она была сохранена по завершении обучения. Это значение нельзя использовать как индикатор того, как именно обучалась модель, поскольку она могла обучаться в одном из полупrecizных dtypes, но сохраняться в fp32. -
Строка, являющаяся допустимым
torch.dtype. Например, “float32” загружает модель вtorch.float32, “float16” — вtorch.float16и т. д.
Для некоторых моделей неизвестен
dtype, в котором они обучались. Вы можете попробовать проверить статью о модели или связаться с её авторами и попросить их добавить эту информацию в карточку модели и вставить записьdtypeилиtorch_dtypeвconfig.jsonна хабе. -
- device_map (
strилиdict[str, Union[int, str, torch.device]]илиintилиtorch.device, необязательный) — Карта, указывающая, на какое устройство следует поместить каждый подмодуль. Не обязательно указывать её для каждого параметра или буфера: как только имя модуля указано в карте, все его подмодули будут отправлены на то же устройство. Если передать только устройство (e.g.,"cpu","cuda:1","mps", или порядковый номер GPU, например1) ), на котором будет размещена модель, карта устройств отобразит всю модель на этом устройстве. Передачаdevice_map = 0означает, что вся модель будет размещена на GPU 0.Чтобы Accelerate автоматически вычислял наиболее оптимизированный
device_map, установитеdevice_map="auto". Подробнее о каждом варианте см. в разделе проектирование карты устройств. - max_memory (
Dict, необязательный) — Словарь с идентификаторами устройств и максимальным объемом памяти при использованииdevice_map. Если не задан, по умолчанию используется максимальная доступная память для каждого GPU и доступная оперативная память CPU. - distributed_config (DistributedConfig, необязательный) —
Конфигурация для нативной распределённой загрузки с использованием tensor parallelism или FSDP2. Передайте
DistributedConfig(tp_size=N), чтобы использовать предопределённый план tensor parallelism модели,DistributedConfig(tp_plan=...), чтобы указать план tensor parallelism, илиDistributedConfig(fsdp_size=N)для FSDP2. Требуетtorchrunи инициализированную группу процессов, еслиtp_size > 1илиfsdp_size > 1. Взаимоисключается сdevice_map. - device_mesh (
torch.distributed.DeviceMesh, необязательный) — Сетка устройств torch. Если не задана, по умолчанию используется world size. В настоящее время используется только для tensor parallel. Если задана, при размерности больше 1 она должна содержать измерение с именем"tp"; это измерение будет использоваться для tensor parallelism - offload_folder (
strилиos.PathLike, необязательный) — Папка, в которую будут выгружаться веса, еслиdevice_mapсодержит значение"disk". - offload_buffers (
bool, необязательный) — Определяет, следует ли выгружать буферы с параметрами модели. - quantization_config (
Union[QuantizationConfigMixin,Dict], необязательный) — Словарь параметров конфигурации или объект QuantizationConfigMixin для квантования (например, bitsandbytes, gptq). - subfolder (
str, необязательный, по умолчанию"") — Если нужные файлы находятся в подпапке репозитория модели на huggingface.co, укажите здесь имя папки. - variant (
str, необязательный) — Если указано, загружает веса из файла с именемvariant, например pytorch_model..bin. - use_safetensors (
bool, необязательный, по умолчаниюNone) — Использовать ли контрольные точкиsafetensors. По умолчаниюNone. Если значение не указано иsafetensorsне установлен, параметр будет установлен вFalse. - weights_only (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли ограничивать разупаковщик загрузкой только тензоров, примитивных типов, словарей и любых типов, добавленных через torch.serialization.add_safe_globals(). Если установлено в False, можно загрузить веса подклассов тензоров-обёрток. - disable_mmap (
bool, необязательный) — Определяет, следует ли отключать отображение в память (memory mapping) при загрузке контрольных точек safetensors. Если значение равноNone(по умолчанию), режим определяется автоматически:Trueустанавливается, если контрольная точка находится на файловой системе FUSEhf-mount(используется в HF Spaces/Endpoints), где комбинация mmap и параллельных page-faults может привести к взаимной блокировке (deadlock). Если значение равноTrue, файлы полностью загружаются в память и обрабатываются с помощьюsafetensors.torch.load. Если значение равноFalse, всегда используется загрузчик с отображением в память по умолчанию. - fusion_config (
dict[str, bool | dict[str, Any]], необязательный) — Необязательная конфигурация слияния, применяемая до создания экземпляра модели. Каждый ключ включает семейство слияний, а его значение может бытьTrueдля включения данного слияния с параметрами по умолчанию или словарем параметров, специфичных для семейства. Например,{"patch_embeddings": True}включает слияние встраиваний патчей. Этот параметр следует использовать только для оптимизации вывода, так как он может незначительно изменить результаты. Если параметр опущен,from_pretrained()обращается кconfig.fusion_config, если он доступен. Дополнительные сведения см. в руководстве по соответствию слияний вdocs/source/en/fusion_mapping.md. - key_mapping (`dict[str, str], необязательный) — Возможное сопоставление имён весов, если используется модель с Hub, совместимая с архитектурой Transformers, но не преобразованная в соответствии с ней.
- kwargs (остаточный словарь именованных аргументов, необязательный) —
Может использоваться для обновления объекта конфигурации (после его загрузки) и инициализации модели (например,
output_attentions=True). Поведение зависит от того, предоставляется лиconfigявно или загружается автоматически:- Если конфигурация передана с помощью
config,**kwargsбудут непосредственно переданы в метод__init__базовой модели (мы предполагаем, что все необходимые обновления конфигурации уже были выполнены) - Если конфигурация не предоставлена,
kwargsсначала передаются в функцию инициализации класса конфигурации (from_pretrained()). Каждое ключевое значениеkwargs, соответствующее атрибуту конфигурации, используется для переопределения этого атрибута переданным значением изkwargs. Оставшиеся ключи, не соответствующие ни одному атрибуту конфигурации, передаются в функцию__init__базовой модели.
- Если конфигурация передана с помощью
Создайте предобученную модель PyTorch на основе конфигурации предобученной модели.
По умолчанию модель переводится в режим оценки с помощью model.eval() (модули Dropout отключаются). Для обучения модели сначала необходимо вернуть её в режим обучения с помощью model.train().
The warning Weights from XXX not initialized from pretrained model means that the weights of XXX do not come pretrained with the rest of the model. It is up to you to train those weights with a downstream fine-tuning task.
Предупреждение Weights from XXX not used in YYY означает, что слой XXX не используется в YYY, поэтому соответствующие веса отбрасываются.
Активируйте специальный режим “offline-mode”, чтобы использовать этот метод в среде с файрволом.
Примеры:
>>> from transformers import BertConfig, BertModel
>>> # Download model and configuration from huggingface.co and cache.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = BertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == Trueget_compiled_call
< source >( compile_config: transformers.generation.configuration_utils.CompileConfig | None )
Возвращает версию self.__call__, скомпилированную с помощью torch.compile. Это полезно для динамического выбора между нескомпилированной и скомпилированной версией forward во время инференса, особенно для переключения между prefill (где мы не хотим использовать скомпилированную версию, чтобы избежать пересчёта графа с новыми формами) и итеративным декодированием (где нам нужны ускорения скомпилированной версии со статическими формами).
Попытка поиска модуля decoder в режиме best-effort.
Порядок попыток (покрывает ~85 % текущих случаев использования):
self.decoder/self.language_model/self.text_modelself.base_model(многие обёртки хранят декодер здесь)self.base_model.get_decoder()(вложенные обёртки)- fallback: raise для нескольких экзотических моделей, которым требуется индивидуальное правило
Поиск модуля encoder в режиме best-effort. Если указан аргумент modality,
функция ищет специфичный для модальности энкодер в мультимодальных моделях (например, “image_encoder”).
По умолчанию функция возвращает текстовый энкодер модели, если он есть, иначе возвращает self.
Возможные значения modality: “image”, “video” и “audio”.
Возвращает расширенные ключи связанных весов (в случае, если они содержат модули или регулярные выражения) только для текущей модели, либо рекурсивно для всех подмоделей, если all_submodels=True (то есть значения конфигурации будут повторно проверены для всех подмоделей).
Для подавляющего большинства моделей достаточно связать эмбеддинги, поэтому у модели есть внутреннее свойство _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"}. В этом случае отображение уже «развёрнуто», то есть содержит полные параметры, и эта функция просто вернёт копию свойства.
Для более сложных схем, например для DFineForObjectDetection, у нас есть следующее атрибут
_tied_weights_keys = {
r"bbox_embed.(?![0])\d+": "bbox_embed.0",
r"class_embed.(?![0])\d+": "class_embed.0",
"model.decoder.class_embed": "class_embed",
"model.decoder.bbox_embed": "bbox_embed",
}возвращает следующее:
{
'bbox_embed.1.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.1.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'bbox_embed.1.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'bbox_embed.1.layers.1.weight': 'bbox_embed.0.layers.1.weight',
'bbox_embed.1.layers.2.bias': 'bbox_embed.0.layers.2.bias',
'bbox_embed.1.layers.2.weight': 'bbox_embed.0.layers.2.weight',
'bbox_embed.2.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.2.layers.0.weight': 'bbox_embed.0.layers.0.weight',
...
'class_embed.1.bias': 'class_embed.0.bias',
'class_embed.1.weight': 'class_embed.0.weight',
'class_embed.2.bias': 'class_embed.0.bias',
'class_embed.2.weight': 'class_embed.0.weight',
...
'model.decoder.class_embed.0.bias': 'class_embed.0.bias',
'model.decoder.class_embed.0.weight': 'class_embed.0.weight',
'model.decoder.class_embed.1.bias': 'class_embed.0.bias',
'model.decoder.class_embed.1.weight': 'class_embed.0.weight',
...
'model.decoder.bbox_embed.0.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'model.decoder.bbox_embed.0.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'model.decoder.bbox_embed.0.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'model.decoder.bbox_embed.0.layers.1.weight': 'bbox_embed.0.layers.1.weight',
...
}Возвращает реализацию экспертов для этой модели и её подмоделей в виде dict в формате, принимаемом set_experts_implementation ("" для этой модели и одна запись для каждого sub_config). Это обратная операция для set_experts_implementation, например, для создания снимка текущей реализации и последующего её восстановления.
get_memory_footprint
< source >( return_buffers = True )
Параметры
- return_buffers (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли учитывать размер тензоров буферов при вычислении объёма занимаемой памяти. Буферы — это тензоры, для которых не требуется вычисление градиентов и которые не зарегистрированы как параметры. Например, среднее значение и стандартное отклонение в слоях batch norm. См.: https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2
Получить объём памяти, занимаемый моделью. Этот метод возвращает объём памяти текущей модели в байтах. Полезно для бенчмаркинга объёма памяти текущей модели и проектирования тестов. Решение вдохновлено обсуждениями в PyTorch: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
Возвращает параметр или буфер, указанный в target, если он существует, иначе выбрасывает ошибку. Эта функция объединяет get_parameter() и get_buffer() в одну удобную функцию. Если целевой объект является атрибутом _extra_state, будет возвращено дополнительное состояние, предоставленное модулем. Обратите внимание, что это работает только в том случае, если target является листом модели.
Устаревший псевдоним для activation_checkpointing_disable(), будет удалён в v6.
Устаревший псевдоним для activation_checkpointing_enable(), будет удалён в v6.
Инициализируйте и свяжите веса при необходимости. Если вы используете собственную PreTrainedModel, вам нужно реализовать логику инициализации в _init_weights.
Это эквивалентно вызову self.apply(self._initialize_weights), но корректно обрабатывает составные модели.
Эта функция динамически вызывает правильную функцию init_weights для модулей по мере продвижения по
графу модулей в процессе рекурсии. Она может обрабатывать произвольное количество подмоделей. Без неё каждая составная
модель была бы вынуждена выполнять вторую рекурсию по всем подмоделям явно во внешней функции _init_weights, что
является крайне подверженным ошибкам и неэффективным подходом.
Возвращает, является ли текущая модель кастомным кодом, то есть загруженным с хаба или определённым в пользовательском модуле/сессии.
Возвращает, является ли текущая модель кастомным кодом, то есть кодом, загруженным с хаба, или классом, который мы только что зарегистрировали с помощью register_for_auto_class.
Добавляет флаг _is_hf_initialized к параметрам, которые будут связаны, чтобы избежать их инициализации
позже, поскольку они всё равно будут связаны (перезаписаны).
Это очень важно, так как большинство эмбеддингов связаны, и это огромные параметры (размер словаря часто составляет 256k), поэтому
запуск инициализации для них очень затратен.
Аналогично named_buffers, но возвращает только непостоянные буферы. Это удобно, так как не всегда очевидно, являются ли буферы постоянными
Метод, выполняемый в конце инициализации каждой модели Transformers, для запуска кода, требующего корректно инициализированных модулей модели (например, инициализации весов). Он также используется для получения всех корректных статических свойств (parallelism plans, tied_weights_keys, _keep_in_fp32_modules и т. д.) в случае составных моделей (то есть верхнеуровневая модель должна знать о свойствах своих дочерних элементов).
register_for_auto_class
< source >( auto_class = 'AutoModel' )
Зарегистрируйте этот класс с указанным автоклассом. Это следует использовать только для пользовательских моделей, так как модели из библиотеки уже сопоставлены с автоклассами.
resize_token_embeddings
< source >( new_num_tokens: int | None = Nonepad_to_multiple_of: int | None = Nonemean_resizing: bool = True ) → torch.nn.Embedding
Параметры
- new_num_tokens (
int, необязательный) — Новое количество токенов в матрице эмбеддингов. Увеличение размера добавит новые инициализированные векторы в конец. Уменьшение размера удалит векторы с конца. Если значение не указано или равноNone, возвращается указатель на входной модульtorch.nn.Embeddingмодели без каких-либо изменений. - pad_to_multiple_of (
int, необязательный) — Если задано, матрица эмбеддингов будет дополнена нулями до кратного указанного значения. Еслиnew_num_tokensустановлено вNone, эмбеддинг будет дополнен до кратного значенияpad_to_multiple_of.Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной мощностью
>= 7.5(Volta) или на TPU, где длина последовательности должна быть кратна 128. Более подробную информацию об этом, а также помощь в выборе правильного значения для изменения размера, см. в этом руководстве: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc - mean_resizing (
bool) — Следует ли инициализировать добавленные эмбеддинги из многомерного нормального распределения, имеющего среднее и ковариацию старых эмбеддингов, или инициализировать их нормальным распределением со средним, равным нулю, и стандартным отклонением, равнымconfig.initializer_range.Установка
mean_resizingвTrueполезна при увеличении размера эмбеддингов каузальных языковых моделей, где вероятности сгенерированных токенов не будут затронуты добавленными эмбеддингами, поскольку инициализация новых эмбеддингов средним значением старых эмбеддингов уменьшит kl-расхождение между вероятностями следующего токена до и после добавления новых эмбеддингов. Подробнее об этом в статье: https://nlp.stanford.edu/~johnhew/vocab-expansion.html
Возвращает
torch.nn.Embedding
Указатель на модуль эмбеддингов входных токенов модели.
Изменяет размер матрицы эмбеддингов входных токенов модели, если new_num_tokens != config.vocab_size.
После этого привязывает веса эмбеддингов, если класс модели имеет метод tie_weights().
save_pretrained
< source >( save_directory: str | os.PathLikeis_main_process: bool = Truestate_dict: dict | None = Nonepush_to_hub: bool = Falsemax_shard_size: int | str = '50GB'variant: str | None = Nonetoken: str | bool | None = Nonesave_peft_format: bool = Truesave_original_format: bool = Truedistributed_checkpoint: bool = False**kwargs )
Параметры
- save_directory (
strилиos.PathLike) — Каталог для сохранения. Будет создан, если не существует. - is_main_process (
bool, необязательный, по умолчаниюTrue) — Указывает, является ли процесс, вызывающий эту функцию, основным. Полезно при распределённом обучении, например на TPU, когда необходимо вызвать эту функцию во всех процессах. В этом случае установитеis_main_process=Trueтолько в основном процессе, чтобы избежать гонок. - state_dict (вложенный словарь
torch.Tensor) — Словарь состояния модели, который нужно сохранить. По умолчанию используетсяself.state_dict(), но этот параметр позволяет сохранять только части модели или применять особые меры предосторожности при восстановлении словаря состояния модели (например, при использовании параллелизма моделей). - push_to_hub (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли после сохранения отправить вашу модель в Hugging Face model hub. С помощьюrepo_idможно указать репозиторий, в который нужно отправить модель (по умолчанию используется имяsave_directoryв вашем пространстве имён). - max_shard_size (
intилиstr, необязательный, по умолчанию"50GB") — Максимальный размер чекпоинта перед его разбиением на части. Каждая часть чекпоинта будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр и единицы измерения (например,"5MB").Если вес модели превышает
max_shard_size, он будет размещен в отдельном фрагменте контрольной точки, размер которого превыситmax_shard_size. - variant (
str, необязательный) — Если указано, веса сохраняются в формате model..safetensors. - token (
strилиbool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если указаноTrueили параметр не задан, будет использован токен, сгенерированный при выполненииhf auth login(хранится в~/.huggingface). - save_peft_format (
bool, необязательный, по умолчаниюTrue) — Для обратной совместимости с библиотекой PEFT, если веса адаптеров присоединены к модели, все ключи словаря состояния адаптеров должны быть дополнены префиксомbase_model.model. Опытные пользователи могут отключить это поведение, установивsave_peft_formatвFalse. - save_original_format (
bool, необязательный, по умолчаниюTrue) — Для обратной совместимости с предыдущими версиямиtransformersвы можете сохранить контрольную точку с обратным отображением. Обратное отображение должно существовать, даже если модель была загружена из контрольной точки None legacy. - distributed_checkpoint (
bool, необязательный, по умолчаниюFalse) — При сохранении модели, разбитой на шарды FSDP или TP, записывает safetensors с использованием распределенного чекпоинтинга (DCP), а не сначала собирает веса на CPU. Этот метод должен вызываться на каждом ранке. ЕслиFalse, веса сначала собираются на CPU на ранке 0 с помощьюgather_full_state_dictперед записью. Параметр предназначен только для сохранения и возобновления обучения; установитеFalse, если вам нужны все возможностиsave_pretrained. Приpush_to_hub=Trueранк 0 консолидирует чекпоинт в подкаталогеconsolidated/и загружает этот каталог. Требуетсяtorch>=2.7. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Сохраните модель и файл её конфигурации в каталог, чтобы её можно было загрузить снова с помощью метода класса from_pretrained().
set_attn_implementation
< source >( attn_implementation: str | dictallow_all_kernels: bool = False )
Параметры
- attn_implementation (
strordict) — Реализация механизма внимания, которую следует установить для этой модели. Она может бытьstr, в этом случае значение будет передано всем подмоделям, если это применимо, илиdict, где ключами являются имена sub_configs, в этом случае каждая подмодель передаст соответствующее значение (себе и всем вложенным в неё подмоделям). Само значение может бытьdictв том же формате, чтобы указать sub_configs для данной подмодели (как при инициализации конфигурации со вложенным словарёмattn_implementation). - allow_all_kernels (
bool, optional) — Загружать ли ядра из непроверенных репозиториев hub, еслиattn_implementationявляется пользовательским ядром, не входящим в репозиторий hubkernels-community.
Установите требуемое значение attn_implementation для этой модели.
Симметричный setter. Повторяет логику поиска, используемую в get_decoder.
Симметричный setter. Повторяет логику поиска, используемую в get_encoder.
set_experts_implementation
< source >( experts_implementation: str | dict )
Параметры
- experts_implementation (
strordict) — Реализация экспертов, которую следует установить для этой модели. Это может бытьstr, в этом случае значение будет передано всем подмоделям, если это применимо, илиdict, где ключами являются имена sub_configs, в этом случае каждая подмодель получит соответствующее значение.
Установите требуемое значение experts_implementation для этой модели.
set_use_kernels
< source >( use_kernelskernel_config: transformers.utils.kernel_config.KernelConfig | None = Nonemode: Mode | None = None )
Параметры
- use_kernels (
bool) — Использовать ли библиотекуkernelsдля применения ядерных операций к некоторым слоям модели. - kernel_config (
KernelConfig, необязательный) — Конфигурация ядра, используемая для кернелизации модели. ЕслиNone, будет использоваться сопоставление ядер по умолчанию. - mode (
Mode, необязательный) — Режим, который должен применяться во времяkernelize. Необязательный параметр, по умолчанию устанавливается в режим обучения или вывода в зависимости от внутреннего флагаtraining.
Определяет, следует ли использовать библиотеку kernels для ядровой обработки некоторых слоёв модели.
Свяжите веса модели. Если recompute_mapping=False (значение по умолчанию при внутреннем вызове), будет использоваться атрибут model.all_tied_weights_keys, содержащий отображение {target: source} для связанных параметров.
Если recompute_mapping=True, будет повторно проверяться все внутренние подмодели и их конфигурация, чтобы определить параметры, которые необходимо связать. Это значение по умолчанию, когда model.tie_weights() вызывается самостоятельно, вне __init__ и from_pretrained, на случай, если значения конфигурации были изменены где-либо.
Обратите внимание, что во время from_pretrained связывание является симметричным: если в маппинге указано «target -> source», но source отсутствует в чекпоинте, а target присутствует, мы меняем source и target местами, чтобы всё равно связать всё с параметром, который действительно существует.
Мок-значение для пути с точками (например, torch.float32): цепочки доступа к атрибутам и вызовы работают как пропускные декораторы, repr возвращает путь с точками, а использование в качестве базового класса подставляет обычный базовый класс type (PEP 560 __mro_entries__), благодаря чему реальные дочерние классы сохраняют обычный метакласс, а inspect.signature читает их реальный __init__, а не мок-объект.
Показывает одноразовое предупреждение, если input_ids, по-видимому, содержат padding, а attention mask не была передана.
Пользовательские модели также должны включать _supports_assign_param_buffer, который определяет, можно ли применить superfast init к данной модели. Признак того, что вашей модели это необходимо, — сбой test_save_and_load_from_pretrained. В этом случае установите значение False.
ModuleUtilsMixin
Несколько утилит для torch.nn.Modules, предназначенных для использования в качестве миксина.
num_parameters
< source >( only_trainable: bool = Falseexclude_embeddings: bool = False ) → int
Получить количество (опционально, обучаемых или не являющихся эмбеддингами) параметров в модуле.
Загрузка в Hub
Миксин, содержащий функциональность для загрузки модели или токенизатора на хаб.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Параметры
- repo_id (
str) — Имя репозитория, в который вы хотите отправить {object}. При отправке в конкретную организацию оно должно содержать имя вашей организации. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию —"Upload {object}". - commit_description (
str, необязательный) — Описание коммита, который будет создан - private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. ЕслиNone(по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный режим. Это значение игнорируется, если репозиторий уже существует. - token (
boolилиstr, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. ЕслиTrue(по умолчанию), будет использован токен, сгенерированный при выполненииhf auth login(хранится в~/.huggingface). - revision (
str, необязательный) — Ветка, в которую будут загружены файлы. - create_pr (
bool, необязательный, по умолчаниюFalse) — Создавать ли PR с загруженными файлами или коммитить изменения напрямую. - max_shard_size (
intилиstr, необязательный, по умолчанию"50GB") — Применимо только к моделям. Максимальный размер контрольной точки перед её разбиением на части. Каждая из частей будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например,"5MB"). - tags (
list[str], необязательный) — Список тегов для загрузки на Hub.
Загрузите {object_files} в 🤗 Model Hub.
Примеры:
from transformers import {object_class}
{object} = {object_class}.from_pretrained("google-bert/bert-base-cased")
# Push the {object} to your namespace with the name "my-finetuned-bert".
{object}.push_to_hub("my-finetuned-bert")
# Push the {object} to an organization with the name "my-finetuned-bert".
{object}.push_to_hub("huggingface/my-finetuned-bert")