Transformers documentation

ESM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была добавлена в Hugging Face Transformers 30.09.2022.

ESM

Обзор

На этой странице представлены код и предобученные веса трансформерных языковых моделей для белков от команды Fundamental AI Research в Meta AI, включая передовые ESMFold и ESM-2, а также ранее выпущенные ESM-1b и ESM-1v. Трансформерные языковые модели для белков были представлены в статье Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences авторов Alexander Rives, Joshua Meier, Tom Sercu, Siddharth Goyal, Zeming Lin, Jason Liu, Demi Guo, Myle Ott, C. Lawrence Zitnick, Jerry Ma и Rob Fergus. Первая версия этой статьи была опубликована в виде препринта в 2019 году.

ESM-2 превосходит все протестированные однопоследовательностные языковые модели белков на широком спектре задач предсказания структуры и обеспечивает предсказание структуры с атомарным разрешением. Модель была выпущена вместе со статьёй Language models of protein sequences at the scale of evolution enable accurate structure prediction авторов Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Sal Candido и Alexander Rives.

В этой же статье был представлен ESMFold. Он использует ствол ESM-2 с головой, способной предсказывать структуры свернутых белков с точностью, соответствующей современному уровню развития. В отличие от AlphaFold2, он опирается на эмбеддинги токенов из крупного предварительно обученного языкового модели белка (ствол) и не выполняет этап множественного выравнивания последовательностей (MSA) во время инференса. Это означает, что чекпоинты ESMFold полностью «автономны»: для выполнения предсказаний им не требуется база данных известных белковых последовательностей и структур с соответствующими внешними инструментами запросов, что делает их значительно более быстрыми.

Аннотация к статье «Биологическая структура и функция возникают при масштабировании обучения без учителя на 250 миллионов белковых последовательностей»

В области искусственного интеллекта сочетание масштаба данных и вычислительной мощности моделей, обеспеченное обучением без учителя, привело к значительным прорывам в области обучения представлений и статистической генерации. В области наук о жизни ожидаемый рост секвенирования обещает беспрецедентные данные о естественном разнообразии последовательностей. Языковое моделирование белков в масштабе эволюции является логическим шагом к предиктивному и генеративному искусственному интеллекту для биологии. В этой цели мы используем обучение без учителя для обучения глубокой контекстной языковой модели на 86 миллиардах аминокислот, содержащихся в 250 миллионах белковых последовательностей, охватывающих эволюционное разнообразие. Полученная модель содержит информацию о биологических свойствах в своих представлениях. Предприятия обучаются исключительно на данных последовательностей. Пространство выученных представлений имеет многомасштабную организацию, отражающую структуру от уровня биохимических свойств аминокислот до отдаленной гомологии белков. Информация о вторичной и третичной структуре закодирована в представлениях и может быть выявлена с помощью линейных проекций. Обучение представлений порождает признаки, которые обобщаются на широкий спектр приложений, обеспечивая предсказание мутационного эффекта и вторичной структуры с использованием обучения с учителем на уровне передовых методов, а также улучшая передовые признаки для предсказания дальних контактов.

Аннотация к статье «Языковые модели последовательностей белков в масштабе эволюции обеспечивают точное предсказание структуры»

Недавно было показано, что крупные языковые модели с ростом масштаба обретают эмерджентные возможности, выходящие за рамки простого сопоставления паттернов: они способны выполнять рассуждения более высокого уровня и генерировать реалистичные изображения и текст. Хотя языковые модели, обученные на последовательностях белков, изучались в меньшем масштабе, мало что известно о том, что они усваивают о биологии при увеличении масштаба. В данной работе мы обучаем модели с числом параметров до 15 миллиардов — это крупнейшие языковые модели белков, оценённые на сегодняшний день. Мы обнаруживаем, что по мере масштабирования модели усваивают информацию, позволяющую предсказывать трёхмерную структуру белка с разрешением отдельных атомов. Мы представляем ESMFold для предсказания атомарной структуры с высокой точностью в режиме end-to-end непосредственно по отдельной последовательности белка. Для последовательностей с низкой перплексией, хорошо понимаемых языковой моделью, точность ESMFold сопоставима с точностью AlphaFold2 и RoseTTAFold. Инференс ESMFold на порядок быстрее, чем у AlphaFold2, что позволяет исследовать структурное пространство метагеномных белков в практические сроки.

Исходный код можно найти здесь; он был разработан командой Fundamental AI Research в Meta AI. Модели ESM-1b, ESM-1v и ESM-2 были добавлены в huggingface пользователями jasonliu и Matt.

ESMFold был добавлен в huggingface Matt и Sylvain. Огромное спасибо Nikita Smetanin, Roshan Rao и Tom Sercu за помощь на всех этапах!

Советы по использованию

  • Модели ESM обучаются с использованием цели маскированного языкового моделирования (MLM).
  • Порт ESMFold для HuggingFace использует части библиотеки openfold. Библиотека openfold распространяется по лицензии Apache License 2.0.

Ресурсы

EsmConfig

класс transformers.EsmConfig

< >

( 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 = Nonevocab_size: int | None = Nonemask_token_id: int | None = Nonepad_token_id: int | None = Nonehidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_dropout_prob: float | None = 0.1attention_probs_dropout_prob: float | None = 0.1max_position_embeddings: int = 1026rope_theta: float = 10000.0initializer_range: float = 0.02layer_norm_eps: float | None = 1e-12position_embedding_type: str | None = 'absolute'use_cache: bool = Trueemb_layer_norm_before: bool | None = Nonetoken_dropout: bool | None = Falseis_folding_model: bool | None = Falseesmfold_config: dict | transformers.models.esm.configuration_esm.EsmFoldConfig | None = Nonevocab_list: list[str] | tuple[str, ...] | None = Noneis_decoder: bool | None = Falseadd_cross_attention: bool | None = Falsetie_word_embeddings: bool = Truebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = 2 )

Параметры

  • vocab_size (int, необязательный) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • mask_token_id (int, необязательный) — Индекс маскирующего токена в словаре. Это значение должно быть указано в конфигурации из-за приёма масштабирования «mask-dropout», который масштабирует входные данные в зависимости от количества замаскированных токенов.
  • pad_token_id (int, необязательный) — Идентификатор токена, используемого для выравнивания в словаре.
  • hidden_size (int, необязательный, по умолчанию 768) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 12) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 12) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • intermediate_size (int, необязательный, по умолчанию 3072) — Размерность представлений MLP.
  • hidden_dropout_prob (float, необязательный, по умолчанию 0.1) — Вероятность dropout для всех полносвязных слоев в блоках эмбеддингов, энкодера и пулера.
  • attention_probs_dropout_prob (float, необязательный, по умолчанию 0.1) — Коэффициент dropout для вероятностей внимания.
  • max_position_embeddings (int, необязательный, по умолчанию 1026) — Максимальная длина последовательности, с которой может использоваться эта модель.
  • rope_theta (float, по умолчанию 10000.0) — Базовый период вложений RoPE. Используется только при установке position_embedding_type в значение "rotary".
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-12) — Значение epsilon, используемое слоями нормализации.
  • position_embedding_type (str, необязательный, по умолчанию "absolute") — Тип позиционного эмбеддинга. Выберите "absolute" или “rotary”`.
  • use_cache (bool, необязательный, по умолчанию True) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только если config.is_decoder=True или если модель является генеративной моделью только с декодером.
  • emb_layer_norm_before (bool, необязательный) — Указывает, следует ли применять нормализацию слоя после эмбеддингов, но до основного стека сети.
  • token_dropout (bool, по умолчанию False) — Если включено, маскированные токены обрабатываются так, как если бы они были отброшены с помощью dropout на входе.
  • is_folding_model (bool, по умолчанию False) — Если этот параметр включён, будет инициализирована модель ESMFold.
  • esmfold_config (dict, необязательный) — Конфигурация для инициализации модуля ESMFold.
  • vocab_list (list, необязательный) — Список элементов словаря.
  • is_decoder (bool, необязательный, по умолчанию False) — Указывает, используется ли модель в качестве декодера. Если False, модель используется как энкодер.
  • add_cross_attention (bool, необязательный, по умолчанию False) — Указывает, следует ли добавлять слои кросс-внимания в модель.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.
  • bos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный, по умолчанию 2) — Идентификатор токена, используемого для обозначения конца потока в словаре.

Это класс конфигурации для хранения конфигурации модели EsmModel. Он используется для создания модели Esm в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/esm-1b

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

Примеры:

>>> from transformers import EsmModel, EsmConfig

>>> # Initializing a ESM facebook/esm-1b style configuration
>>> configuration = EsmConfig(vocab_size=33)

>>> # Initializing a model from the configuration
>>> model = EsmModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

EsmTokenizer

класс transformers.EsmTokenizer

< >

( vocab_fileunk_token = '<unk>'cls_token = '<cls>'pad_token = '<pad>'mask_token = '<mask>'eos_token = '<eos>'**kwargs )

Создает токенизатор ESM.

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None )

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов первой последовательности.
  • token_ids_1 (list[int], необязательный) — Список идентификаторов второй последовательности.
  • already_has_special_tokens (bool, необязательный, по умолчанию False) — Указывает, содержит ли список токенов уже отформатированные специальные токены для модели.

Возвращает

Список целых чисел в диапазоне [0, 1]

1 для специального токена, 0 для токена последовательности.

Получает идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены. Этот метод вызывается при добавлении специальных токенов с помощью методов prepare_for_model или encode_plus токенизатора.

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов.
  • token_ids_1 (list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей.

Возвращает

list[int]

Идентификаторы типов токенов в соответствии с настроенным шаблоном.

Создайте маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей.

Этот метод динамически формирует идентификаторы типов токенов на основе атрибутов конфигурации токенизатора:

  • token_type_ids_pattern: шаблон для использования (“all_zeros” или “bert_style”)
  • token_type_ids_include_special_tokens: Учитывать ли специальные токены при вычислении длины

Примеры:

# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs

save_vocabulary

< >

( save_directoryfilename_prefix )

EsmModel

класс transformers.EsmModel

< >

( config: EsmConfigadd_pooling_layer = True )

Параметры

  • config (EsmConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
  • add_pooling_layer (bool, необязательный, по умолчанию True) — Добавлять ли слой пулинга

Модель Esm без дополнительных слоёв, выводящая необработанные скрытые состояния.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndCrossAttentions or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы ((batch_size, sequence_length))) — Индексы токенов входной последовательности в словаре. Индексы можно получить с помощью AutoTokenizer. Подробности — в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое входные идентификаторы?

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы ((batch_size, sequence_length)), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбранные в диапазоне [0, config.max_position_embeddings - 1].

    Что такое идентификаторы позиций?

  • inputs_embeds (torch.Tensor формы ((batch_size, sequence_length), hidden_size), необязательный) — При необходимости вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем позволяет внутренняя матрица поиска встраиваний модели.
  • encoder_hidden_states (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании, если модель настроена как декодер.
  • encoder_attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения внимания к индексам токенов отступов во входных данных энкодера. Эта маска используется в кросс-внимании, если модель настроена как декодер. Значения маски из [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

Возвращает

BaseModelOutputWithPoolingAndCrossAttentions или tuple(torch.Tensor)

Объект BaseModelOutputWithPoolingAndCrossAttentions или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (EsmConfig) и входных данных.

Метод forward класса EsmModel переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

  • pooler_output (torch.Tensor формы (batch_size, hidden_size)) — Скрытое состояние последнего слоя для первого токена последовательности (токен классификации) после дополнительной обработки слоями, используемыми для вспомогательной задачи предварительного обучения. Например, для моделей семейства BERT это возвращает токен классификации после обработки линейным слоем и функцией активации tanh. Веса линейного слоя обучаются по задаче предсказания следующего предложения (классификации) во время предварительного обучения.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • cross_attentions (tuple(torch.Tensor), необязательный, возвращается, если передано output_attentions=True и config.add_cross_attention=True или если config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания кросс-внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и, при необходимости, если config.is_encoder_decoder=True, в блоках кросс-внимания), которые можно использовать (см. входной параметр past_key_values) для ускорения последовательного декодирования.

EsmForMaskedLM

класс transformers.EsmForMaskedLM

< >

( config: EsmConfig )

Параметры

  • config (EsmConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Esm с головкой language modeling наверху.”

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MaskedLMOutput or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • encoder_hidden_states (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании, если модель настроена как декодер.
  • encoder_attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения внимания к индексам токенов отступов во входных данных энкодера. Эта маска используется в кросс-внимании, если модель настроена как декодер. Значения маски из [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне [-100, 0, ..., config.vocab_size] (см. docstring input_ids). Токены с индексами, установленными в -100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне [0, ..., config.vocab_size].

Возвращает

MaskedLMOutput или tuple(torch.Tensor)

Объект MaskedLMOutput или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (EsmConfig) и входных данных.

Метод EsmForMaskedLM forward переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если передан labels) — Потери маскированного языкового моделирования (MLM).

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> from transformers import AutoTokenizer, EsmForMaskedLM
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForMaskedLM.from_pretrained("facebook/esm-1b")

>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]

>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
...

>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)

>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
...

EsmForSequenceClassification

класс transformers.EsmForSequenceClassification

< >

( config: EsmConfig )

Параметры

  • config (EsmConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

ESM Model — трансформер с головой для классификации/регрессии последовательности (линейный слой поверх пуллинг-выхода), например, для задач GLUE.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1, вычисляется функция потерь классификации (кросс-энтропия).

Возвращает

SequenceClassifierOutput или tuple(torch.Tensor)

Объект SequenceClassifierOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (EsmConfig) и входных данных.

Метод forward класса EsmForSequenceClassification переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери классификации (или регрессии, если config.num_labels==1).

  • logits (torch.Tensor формы (batch_size, config.num_labels)) — Оценки для классификации (или регрессии, если config.num_labels==1) до применения SoftMax.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример классификации с одной меткой:

>>> import torch
>>> from transformers import AutoTokenizer, EsmForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm-1b")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm-1b", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

Пример многоклассовой классификации:

>>> import torch
>>> from transformers import AutoTokenizer, EsmForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForSequenceClassification.from_pretrained("facebook/esm-1b", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmForSequenceClassification.from_pretrained(
...     "facebook/esm-1b", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

EsmForTokenClassification

класс transformers.EsmForTokenClassification

< >

( config: EsmConfig )

Параметры

  • config (EsmConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Трансформер Esm с головой классификации токенов (линейный слой поверх выходных скрытых состояний), например, для задач распознавания именованных сущностей (NER).

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления функции потерь классификации токенов. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1].

Возвращает

TokenClassifierOutput или tuple(torch.Tensor)

Объект TokenClassifierOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (EsmConfig) и входных данных.

Метод EsmForTokenClassification forward переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери классификации.

  • logits (torch.Tensor формы (batch_size, sequence_length, config.num_labels)) — Оценки классификации (до SoftMax).

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> from transformers import AutoTokenizer, EsmForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esm-1b")
>>> model = EsmForTokenClassification.from_pretrained("facebook/esm-1b")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

EsmForProteinFolding

класс transformers.EsmForProteinFolding

< >

( config: EsmConfig )

Параметры

  • config (EsmConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

ESMForProteinFolding — это порт оригинальной модели ESMFold для HuggingFace. Она состоит из «ствола» на базе ESM-2, за которым следует «головка» для предсказания структуры белка. В отличие от большинства других выходных головок, эта «головка» сопоставима по размеру и времени выполнения со всей остальной частью модели. На выходе она возвращает словарь, содержащий предсказанную структурную информацию о входном белке (белках).

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_ids: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonemasking_pattern: typing.Optional[torch.Tensor] = Nonenum_recycles: int | None = Noneoutput_hidden_states: bool | None = False**kwargs ) → EsmForProteinFoldingOutput or tuple(torch.Tensor)

Параметры

  • input_ids (torch.Tensor формы (batch_size, sequence_length)) — Индексы токенов входной последовательности в словаре. По умолчанию токены отступов игнорируются. Индексы можно получить с помощью AutoTokenizer. Подробности — в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое входные идентификаторы?

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • masking_pattern (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Позиции токенов, которые следует замаскировать во время обучения в качестве формы регуляризации. Значения маски выбираются из диапазона [0, 1].
  • num_recycles (int, необязательный, по умолчанию None) — Количество повторного использования входной последовательности. Если None, по умолчанию используется config.num_recycles. «Повторное использование» состоит в том, что выход свёрточного блока (folding trunk) снова подаётся на вход этого блока. Во время обучения количество повторений должно варьироваться для каждой партии (batch), чтобы модель научилась выдавать корректные предсказания после каждого повторения. Во время инференса num_recycles следует установить в максимальное значение, с которым обучалась модель, для достижения максимальной точности. Соответственно, если это значение равно None, используется config.max_recycles.
  • output_hidden_states (bool, необязательный, по умолчанию False) — Возвращать ли скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.

Возвращает

EsmForProteinFoldingOutput или tuple(torch.Tensor)

EsmForProteinFoldingOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (EsmConfig) и входных данных.

Метод forward класса EsmForProteinFolding переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • frames (torch.Tensor, необязательный) — Выходные кадры.
  • sidechain_frames (torch.Tensor, необязательный) — Выходные кадры боковой цепи.
  • unnormalized_angles (torch.Tensor, необязательный) — Предсказанные ненормализованные углы торсии каркаса и боковых цепей.
  • angles (torch.Tensor, optional) — Предсказанные углы торсии каркаса и боковых цепей.
  • positions (torch.Tensor, необязательный) — Предсказанные позиции атомов каркаса и боковых цепей.
  • states (torch.Tensor, optional) — Скрытые состояния из стержневой части модели сворачивания белка.
  • s_s (torch.Tensor, необязательный) — Встраивания для каждого остатка, полученные путём конкатенации скрытых состояний каждого слоя стека ESM-2 LM.
  • s_z (torch.Tensor, необязательный) — Парные эмбеддинги остатков.
  • distogram_logits (torch.Tensor, необязательный) — Входные логиты для дистограммы, используемые для вычисления расстояний между остатками.
  • lm_logits (torch.Tensor, необязательный) — Выходные логиты, сгенерированные основной частью языковой модели белков ESM-2.
  • aatype (torch.Tensor, optional) — Входящие аминокислоты (индексы AlphaFold2).
  • atom14_atom_exists (torch.Tensor, необязательный) — Указывает, существует ли каждый атом в представлении atom14.
  • residx_atom14_to_atom37 (torch.Tensor, optional) — Соответствие между атомами в представлениях atom14 и atom37.
  • residx_atom37_to_atom14 (torch.Tensor, optional) — Mapping between atoms in the atom37 and atom14 representations.
  • atom37_atom_exists (torch.Tensor, optional) — Указывает, существует ли каждый атом в представлении atom37.
  • residue_index (torch.Tensor, optional) — Индекс каждого остатка в цепи белка. Если внутренние токены отступов не используются, это будет просто последовательность целых чисел от 0 до sequence_length.
  • lddt_head (torch.Tensor, optional) — Исходные выходные данные lddt-головы, используемые для вычисления plddt.
  • plddt (torch.Tensor, optional) — Оценки уверенности для каждого остатка. Области с низкой уверенностью могут указывать на участки, где предсказание модели неопределенно, или где структура белка неупорядочена.
  • ptm_logits (torch.Tensor, необязательный) — Исходные логиты, используемые для вычисления ptm.
  • ptm (torch.Tensor, необязательный) — результат TM-score, отражающий общую уверенность модели в структуре в целом.
  • aligned_confidence_probs (torch.Tensor, необязательный) — Оценки уверенности для каждого остатка в выровненной структуре.
  • predicted_aligned_error (torch.Tensor, необязательный) — Предсказанная ошибка между предсказанием модели и эталонными данными.
  • max_predicted_aligned_error (torch.Tensor, необязательный) — Максимальная предсказанная ошибка для каждого примера.

Пример:

>>> from transformers import AutoTokenizer, EsmForProteinFolding

>>> model = EsmForProteinFolding.from_pretrained("facebook/esmfold_v1")
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/esmfold_v1")
>>> inputs = tokenizer(["MLKNVQVQLV"], return_tensors="pt", add_special_tokens=False)  # A tiny random peptide
>>> outputs = model(**inputs)
>>> folded_positions = outputs.positions
Update on GitHub