Transformers documentation
Конфигурация
Конфигурация
Базовый класс PreTrainedConfig реализует общие методы для загрузки/сохранения конфигурации из локального файла или каталога, либо из конфигурации предобученной модели, предоставляемой библиотекой (скачанной из репозитория AWS S3 HuggingFace).
Каждый производный класс конфигурации реализует атрибуты, специфичные для модели. Общие атрибуты, присутствующие во всех классах конфигурации: hidden_size, num_attention_heads и num_hidden_layers. Текстовые модели дополнительно реализуют: vocab_size.
PreTrainedConfig
класс transformers.PreTrainedConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None )
Параметры
- name_or_path (
str, необязательный, по умолчанию"") — Сохраняет строку, переданную в PreTrainedModel.from_pretrained(), какpretrained_model_name_or_path, если конфигурация была создана с помощью такого метода. - output_hidden_states (
bool, необязательный, по умолчаниюFalse) — Следует ли модели возвращать все скрытые состояния. - output_attentions (
bool, необязательный, по умолчаниюFalse) — Определяет, должен ли модель возвращать все значения внимания. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, должен ли модель возвращать ModelOutput вместо обычного кортежа. - is_encoder_decoder (
bool, необязательный, по умолчаниюFalse) — Указывает, используется ли модель в качестве энкодера/декодера. - chunk_size_feed_forward (
int, необязательный, по умолчанию0) — Размер блока для всех полносвязных слоев в блоках остаточного внимания. Размер блока0означает, что полносвязный слой не разбивается на блоки. Размер блока n означает, что полносвязный слой обрабатываетn< sequence_length эмбеддингов за один раз. Подробнее о разбиении полносвязных слоев на блоки см. в разделе Как работает разбиение полносвязных слоев на блоки?. - per_layer_config (
dict[int | str, dict[str, Any]], необязательный) — Разреженное отображение индексов слоёв на переопределения атрибутов конфигурации. Каждый ключ представляет собой индекс слоя, а каждое значение содержит атрибуты, отличающиеся от глобальной конфигурации для данного слоя. - tie_last_hidden_states (
bool, необязательный) — Определяет, должно лиhidden_states[-1]представлять собойlast_hidden_stateпосле применения финальной нормализации, а не скрытое состояние до финальной нормализации. Если параметр не задан, используется встроенное значение по умолчанию модели.
Параметры для задач дообучения
- architectures (
list[str], необязательный) — Архитектуры моделей, которые можно использовать с предобученными весами модели. - id2label (
dict[int, str], необязательный) — Сопоставление индекса (например, индекса предсказания или целевого индекса) с меткой. - label2id (
dict[str, int], необязательный) — Сопоставление меток с индексами для модели. - num_labels (
int, необязательный) — Количество меток, используемых в последнем слое, добавляемом к модели, как правило, для задачи классификации. - problem_type (
str, необязательный) — Тип задачи для моделейXxxForSequenceClassification. Может принимать одно из значений"regression","single_label_classification"или"multi_label_classification".
Параметры, специфичные для PyTorch
- dtype (
str, необязательный) —dtypeвесов. Этот атрибут можно использовать для инициализации модели с нестандартнымdtype(по умолчанию обычноfloat32), что позволяет оптимально распределять память. Например, если сохранённая модель имеет типfloat16, то в идеале её следует загрузить, используя минимально необходимый объём памяти для весов типаfloat16.
Базовый класс для всех классов конфигурации. Обрабатывает несколько параметров, общих для конфигураций всех моделей, а также методы для загрузки/скачивания/сохранения конфигураций.
Файл конфигурации можно загрузить и сохранить на диск. Загрузка файла конфигурации и использование этого файла для инициализации модели не загружает веса модели. Это влияет только на конфигурацию модели.
Атрибуты класса (переопределяются производными классами):
- model_type (
str) — идентификатор типа модели, сериализуемый в JSON-файл и используемый для создания правильного объекта в AutoConfig. - attribute_map (
dict[str, str]) — Словарь, сопоставляющий имена атрибутов, специфичные для модели, со стандартизованным написанием атрибутов. - base_model_tp_plan (
dict[str, Any]) — Словарь, сопоставляющий FQN подмодулей базовой модели с планом тензорного параллелизма, применяемым к подмодулю при вызовеmodel.tensor_parallel. - base_model_fsdp_plan (
dict[Any, str]) — Словарь, сопоставляющий подмодули базовой модели стратегии шардирования FSDP2 (например,"free_full_weight"/"keep_full_weight"). Ключами могут быть пути к модулям с подстановкой (например,"layers.*") или кортежи путей (группируемые в один вызовfully_shard). - base_model_pp_plan (
dict[str, tuple[list[str]]]) — Словарь, сопоставляющий дочерние модули базовой модели с планом конвейерного параллелизма, который позволяет размещать дочерний модуль на соответствующем устройстве.
Общие атрибуты (присутствуют во всех подклассах):
- vocab_size (
int) — количество токенов в словаре, которое также является первым измерением матрицы эмбеддингов (этот атрибут может отсутствовать у моделей без текстовой модальности, например ViT). - hidden_size (
int) — Размер скрытого слоя модели. - num_attention_heads (
int) — Количество головок внимания, используемых в слоях многоголового внимания модели. - num_hidden_layers (
int) — Количество блоков в модели.
Установка параметров для генерации последовательностей в конфигурации модели устарела. В целях обратной совместимости загрузка некоторых из них по-прежнему возможна, но попытка их переопределения приведёт к исключению — их следует задавать в [~transformers.GenerationConfig]. Подробности об отдельных параметрах см. в документации [~transformers.GenerationConfig].
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 config". - 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 AutoConfig
config = AutoConfig.from_pretrained("google-bert/bert-base-cased")
# Push the config to your namespace with the name "my-finetuned-bert".
config.push_to_hub("my-finetuned-bert")
# Push the config to an organization with the name "my-finetuned-bert".
config.push_to_hub("huggingface/my-finetuned-bert")Получает значения по умолчанию для каждого аннотированного поля в dataclass, используется для сохранения diff-dict.
Для конфигураций, созданных в v4 с кастомным __init__, возвращает
пустой словарь, тем самым сохраняя все ключи в self.__dict__. Для более новых конфигураций возвращает
ключи, для которых значения по умолчанию объявлены как поля, а не в __post_init__,
что позволяет отфильтровать только эти конкретные поля из сериализованного json-файла.
Проверяет, содержит ли переданный словарь и его вложенные словари ключ dtype, и если значение не равно None, преобразует torch.dtype в строку, содержащую только тип. Например, torch.float32 преобразуется в строку “float32”, которую затем можно сохранить в формате json.
from_dict
< source >( config_dict: dict[str, Any]**kwargs ) → PreTrainedConfig
Параметры
- config_dict (
dict[str, Any]) — Словарь, который будет использован для создания объекта конфигурации. Такой словарь можно получить из предобученной контрольной точки с помощью метода get_config_dict(). - kwargs (
dict[str, Any]) — Дополнительные параметры для инициализации объекта конфигурации.
Возвращает
Объект конфигурации, созданный из этих параметров.
Создаёт экземпляр PreTrainedConfig из словаря параметров на Python.
from_json_file
< source >( json_file: str | os.PathLike ) → PreTrainedConfig
Параметры
Возвращает
Объект конфигурации, созданный из этого JSON-файла.
Создаёт экземпляр PreTrainedConfig из пути к JSON-файлу с параметрами.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs ) → PreTrainedConfig
Параметры
- pretrained_model_name_or_path (
strилиos.PathLike) — Это может быть:- строка, model id конфигурации предобученной модели, размещенной в репозитории моделей на huggingface.co.
- путь к каталогу, содержащему файл конфигурации, сохранённый с помощью метода
save_pretrained(), например,
./my_model_directory/. - путь к сохранённому конфигурационному JSON-файлу, например,
./my_model_directory/configuration.json.
- cache_dir (
strилиos.PathLike, необязательный) — Путь к каталогу, в котором следует кэшировать загруженную конфигурацию предобученной модели, если стандартный кэш не используется. - force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли принудительно (пере)скачивать файлы конфигурации и заменять кэшированные версии, если они существуют. - proxies (
dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.Прокси применяются при каждом запросе. - 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>". - return_unused_kwargs (
bool, необязательный, по умолчаниюFalse) — еслиFalse, эта функция возвращает только итоговый объект конфигурации.Если
True, то эта функция возвращаетTuple(config, unused_kwargs), где unused_kwargs — это словарь, состоящий из пар ключ/значение, ключи которых не являются атрибутами конфигурации, то есть та частьkwargs, которая не была использована для обновленияconfigи в остальном игнорируется. - subfolder (
str, необязательный, по умолчанию"") — Если нужные файлы находятся в подпапке репозитория модели на huggingface.co, укажите здесь имя папки. - kwargs (
dict[str, Any], необязательный) — Значения в kwargs для любых ключей, являющихся атрибутами конфигурации, используются для переопределения загруженных значений. Поведение в отношении пар ключ/значение, ключи которых не являются атрибутами конфигурации, контролируется параметромreturn_unused_kwargs.
Возвращает
Объект конфигурации, созданный из этой предобученной модели.
Создайте экземпляр PreTrainedConfig (или производного класса) из конфигурации предобученной модели.
Примеры:
# We can't instantiate directly the base class *PreTrainedConfig* so let's show the examples on a
# derived class: BertConfig
config = BertConfig.from_pretrained(
"google-bert/bert-base-uncased"
) # Download configuration from huggingface.co and cache.
config = BertConfig.from_pretrained(
"./test/saved_model/"
) # E.g. config (or model) was saved using *save_pretrained('./test/saved_model/')*
config = BertConfig.from_pretrained("./test/saved_model/my_configuration.json")
config = BertConfig.from_pretrained("google-bert/bert-base-uncased", output_attentions=True, foo=False)
assert config.output_attentions == True
config, unused_kwargs = BertConfig.from_pretrained(
"google-bert/bert-base-uncased", output_attentions=True, foo=False, return_unused_kwargs=True
)
assert config.output_attentions == True
assert unused_kwargs == {"foo": False}get_config_dict
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs ) → tuple[Dict, Dict]
По pretrained_model_name_or_path формируется словарь параметров, который используется для создания экземпляра PreTrainedConfig с помощью from_dict.
Возвращает текстовый конфиг mtp, используемый для создания модели MTP. Поскольку слои MTP создаются путём инициализации тех же классов, что и основная модель, необходимо переопределить свойства конфига, специфичные для индекса, такие как layer_types или mtp_layer_types, чтобы создать корректные слои mtp и избежать проблем с индексацией в слоях (так как слои MTP начинают индексацию слоёв с 0).
get_text_config
< source >( decoder = Noneencoder = None )
Возвращает текстовую конфигурацию, связанную с текстовым входом (кодером) или текстовым выходом (декодером) модели. Аргументы decoder и encoder можно использовать для указания, какой конец модели нас интересует, что полезно для моделей, имеющих как текстовый вход, так и текстовый выход.
Существует три возможных результата использования этого метода:
- В большинстве моделей возвращается сам исходный экземпляр конфигурации.
- В более новых (2024+) составных моделях он возвращает текстовую секцию конфигурации, которая вложена под набором допустимых имён.
- В более старых (2023-) составных моделях при
encoder=Trueотбрасываются параметры только декодера, и наоборот.
Возвращает, является ли текущая конфигурация пользовательским кодом, то есть кодом, загруженным из хабa, или определённым в любом пользовательском модуле/сессии.
Возвращает, является ли текущий конфиг кастомным кодом, то есть кодом, загруженным с хаба, или классом, который мы только что зарегистрировали с помощью register_for_auto_class.
register_for_auto_class
< source >( auto_class = 'AutoConfig' )
Зарегистрируйте этот класс с указанным автоклассом. Это следует использовать только для пользовательских конфигураций, так как конфигурации из библиотеки уже сопоставлены с AutoConfig.
save_pretrained
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs )
Параметры
- save_directory (
strилиos.PathLike) — Каталог, в котором будет сохранён файл конфигурации JSON (будет создан, если не существует). - push_to_hub (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли после сохранения отправить вашу модель в Hugging Face model hub. С помощьюrepo_idможно указать репозиторий, в который нужно отправить модель (по умолчанию используется имяsave_directoryв вашем пространстве имён). - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Сохраните объект конфигурации в каталог save_directory, чтобы его можно было загрузить с помощью метода класса from_pretrained().
to_dict
< source >( ) → dict[str, Any]
Возвращает
dict[str, Any]
Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации.
Сериализует этот экземпляр в словарь Python.
to_diff_dict
< source >( ) → dict[str, Any]
Возвращает
dict[str, Any]
Словарь всех атрибутов, из которых состоит этот экземпляр конфигурации.
Удаляет все атрибуты конфигурации, соответствующие атрибутам конфигурации по умолчанию, для лучшей читаемости, при этом всегда сохраняя атрибут config из класса. Сериализует в словарь Python.
to_json_file
< source >( json_file_path: str | os.PathLikeuse_diff: bool = True )
Параметры
- json_file_path (
stroros.PathLike) — Путь к JSON-файлу, в котором будут сохранены параметры этого экземпляра конфигурации. - use_diff (
bool, необязательный, по умолчаниюTrue) — Если установлено вTrue, в JSON-файл сериализуется только разница между экземпляром конфигурации и значениями по умолчаниюPreTrainedConfig().
Сохраните этот экземпляр в файл JSON.
to_json_string
< source >( use_diff: bool = True ) → str
Параметры
- use_diff (
bool, необязательный, по умолчаниюTrue) — Если установлено вTrue, в JSON-строку сериализуется только разница между экземпляром конфигурации и значениями по умолчаниюPreTrainedConfig().
Возвращает
str
Строка, содержащая все атрибуты, из которых состоит данный экземпляр конфигурации, в формате JSON.
Сериализует этот экземпляр в строку JSON.
обновление
< source >( config_dict: dict[str, Any] )
Обновляет атрибуты этого класса атрибутами из config_dict.
update_from_string
< source >( update_str: str )
Обновляет атрибуты этого класса атрибутами из update_str.
Ожидаемый формат: целые числа, числа с плавающей точкой и строки передаются как есть, а для булевых значений используйте true или false. Например:
“n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index”
Ключи, которые необходимо изменить, должны уже существовать в объекте конфигурации.
Запустите валидаторы класса на экземпляре.
Часть валидации, работающей на базе @strict. Проверяет архитектуру конфигурации.
Проверьте, что mlp_layer_types и layer_types определены корректно.
Часть валидации, работающей на базе @strict. Проверяет содержимое специальных токенов.