Transformers documentation

DPR

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

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 10.04.2020 и добавлена в Hugging Face Transformers 16.11.2020.

DPR

SDPA

Обзор

Dense Passage Retrieval (DPR) — это набор инструментов и моделей для исследований в области открытого вопросно-ответного взаимодействия (open-domain Q&A) на уровне современного состояния техники. Он был представлен в работе Dense Passage Retrieval for Open-Domain Question Answering авторами Владимиром Карпухиным, Барласом Огузом, Сьюоном Мин, Патриком Льюисом, Леделлом У, Сергеем Эдуновым, Данки Чен и Вен-тау И.

Аннотация из статьи следующая:

Open-domain question answering relies on efficient passage retrieval to select candidate contexts, where traditional sparse vector space models, such as TF-IDF or BM25, are the de facto method. In this work, we show that retrieval can be practically implemented using dense representations alone, where embeddings are learned from a small number of questions and passages by a simple dual-encoder framework. When evaluated on a wide range of open-domain QA datasets, our dense retriever outperforms a strong Lucene-BM25 system largely by 9%-19% absolute in terms of top-20 passage retrieval accuracy, and helps our end-to-end QA system establish new state-of-the-art on multiple open-domain QA benchmarks.

Эта модель была предоставлена lhoestq. Исходный код можно найти здесь.

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

  • DPR состоит из трёх моделей:

    • Кодер вопросов: кодирование вопросов в виде векторов
    • Контекстный энкодер: кодирование контекстов в виде векторов
    • Читатель: извлекает ответ на вопрос из найденных контекстов, а также оценку релевантности (высокая, если извлечённый фрагмент действительно отвечает на вопрос).

DPRConfig

класс transformers.DPRConfig

< >

( 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 = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Noneprojection_dim: int = 0is_decoder: bool = Falseadd_cross_attention: bool = False )

Параметры

  • vocab_size (int, необязательный, по умолчанию 30522) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • hidden_size (int, необязательный, по умолчанию 768) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 12) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 12) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • intermediate_size (int, необязательный, по умолчанию 3072) — Размерность представлений MLP.
  • hidden_act (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • hidden_dropout_prob (Union[float, int], необязательный, по умолчанию 0.1) — Вероятность dropout для всех полносвязных слоёв в блоках эмбеддингов, энкодера и пулера.
  • attention_probs_dropout_prob (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент dropout для вероятностей внимания.
  • max_position_embeddings (int, необязательный, по умолчанию 512) — Максимальная длина последовательности, с которой может использоваться эта модель.
  • type_vocab_size (int, необязательный, по умолчанию 2) — Размер словаря для token_type_ids.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-12) — Значение epsilon, используемое слоями нормализации.
  • pad_token_id (int, необязательный, по умолчанию 0) — Идентификатор токена, используемого для дополнения (padding) в словаре.
  • bos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • projection_dim (int, необязательный, по умолчанию 0) — Размерность проекционных слоёв для текста и изображений.
  • is_decoder (bool, необязательный, по умолчанию False) — Указывает, используется ли модель в качестве декодера. Если False, модель используется как энкодер.
  • add_cross_attention (bool, необязательный, по умолчанию False) — Указывает, следует ли добавлять слои кросс-внимания в модель.

Это класс конфигурации для хранения настроек DPRQuestionEncoder. Он используется для создания модели Dpr в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/dpr-ctx_encoder-single-nq-base

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

Пример:

>>> from transformers import DPRConfig, DPRContextEncoder

>>> # Initializing a DPR facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> configuration = DPRConfig()

>>> # Initializing a model (with random weights) from the facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> model = DPRContextEncoder(configuration)

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

DPRContextEncoderTokenizer

класс transformers.DPRContextEncoderTokenizer

< >

( *argsdo_lower_case = False**kwargs )

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

DPRContextEncoderTokenizer идентичен BertTokenizer и выполняет токенизацию от начала до конца: разбиение по знакам препинания и wordpiece.

См. примеры использования и документацию по параметрам в суперклассе BertTokenizer.

DPRContextEncoderTokenizerFast

класс transformers.DPRContextEncoderTokenizerFast

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )

Создайте «быстрый» токенизатор DPRContextEncoder (на базе библиотеки tokenizers от HuggingFace).

DPRContextEncoderTokenizerFast идентичен BertTokenizer и выполняет токенизацию от начала до конца: разделение по знакам препинания и wordpiece.

См. примеры использования и документацию по параметрам в суперклассе BertTokenizer.

DPRQuestionEncoderTokenizer

класс transformers.DPRQuestionEncoderTokenizer

< >

( *argsdo_lower_case = False**kwargs )

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

DPRQuestionEncoderTokenizer идентичен BertTokenizer и выполняет токенизацию от начала до конца: разбиение по знакам препинания и wordpiece.

См. примеры использования и документацию по параметрам в суперклассе BertTokenizer.

DPRQuestionEncoderTokenizerFast

класс transformers.DPRQuestionEncoderTokenizerFast

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )

Создаёт «быстрый» токенизатор DPRQuestionEncoder (на базе библиотеки tokenizers от HuggingFace).

DPRQuestionEncoderTokenizerFast идентичен BertTokenizer и выполняет токенизацию от начала до конца: разделение по знакам препинания и wordpiece.

См. примеры использования и документацию по параметрам в суперклассе BertTokenizer.

DPRReaderTokenizer

класс transformers.DPRReaderTokenizer

< >

( *argsdo_lower_case = False**kwargs ) → dict[str, list[list[int]]]

Параметры

  • questions (str или list[str]) — Вопросы, которые необходимо закодировать. Можно указать один вопрос для многих отрывков. В этом случае вопрос будет продублирован как [questions] * n_passages. В противном случае нужно указать столько вопросов, сколько элементов в titles или texts.
  • titles (str или list[str]) — Заголовки фрагментов, которые необходимо закодировать. Это может быть строка или список строк, если фрагментов несколько.
  • texts (str или list[str]) — Тексты фрагментов, которые необходимо закодировать. Это может быть строка или список строк, если фрагментов несколько.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию False) — Включает и управляет выравниванием. Принимает следующие значения:
    • True или 'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad' (по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
  • truncation (bool, str или TruncationStrategy, необязательный, по умолчанию False) — Включает и управляет усечением. Принимает следующие значения:
    • True или 'longest_first': обрезка до максимальной длины, заданной аргументом max_length, или до максимальной допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.
    • 'only_first': Обрезка до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или пакет пар), обрезке подвергается только первая последовательность пары.
    • 'only_second': Обрезка до максимальной длины, указанной аргументом max_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Обрезка выполняется только для второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).
    • False или 'do_not_truncate' (по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
  • max_length (int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.

    Если параметр не задан или установлен в None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты Numpy np.ndarray.
  • return_attention_mask (bool, необязательный) — Указывает, следует ли возвращать attention mask. Если не задано, attention mask будет возвращена в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом return_outputs .

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

Возвращает

dict[str, list[list[int]]]

Словарь со следующими ключами:

  • input_ids: список идентификаторов токенов, которые подаются в модель.
  • attention_mask: список индексов, указывающих, на какие токены модель должна обращать внимание.

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

DPRReaderTokenizer практически идентичен BertTokenizer и выполняет токенизацию от начала до конца: разбиение по знакам препинания и wordpiece. Отличие состоит в том, что у него три входные строки: question, titles и texts, которые объединяются для подачи в модель DPRReader.

См. примеры использования и документацию по параметрам в суперклассе BertTokenizer.

Возвращает словарь с идентификаторами токенов входных строк и другой информацией, которую нужно передать в .decode_best_spans. Он преобразует строки вопроса и различных отрывков (заголовок и текст) в последовательность идентификаторов (целых чисел), используя токенизатор и словарь. Полученный input_ids представляет собой матрицу размера (n_passages, sequence_length)

в формате:

[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

DPRReaderTokenizerFast

класс transformers.DPRReaderTokenizerFast

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs ) → dict[str, list[list[int]]]

Параметры

  • questions (str или list[str]) — Вопросы, которые необходимо закодировать. Можно указать один вопрос для многих отрывков. В этом случае вопрос будет продублирован как [questions] * n_passages. В противном случае нужно указать столько вопросов, сколько элементов в titles или texts.
  • titles (str или list[str]) — Заголовки фрагментов, которые необходимо закодировать. Это может быть строка или список строк, если фрагментов несколько.
  • texts (str или list[str]) — Тексты фрагментов, которые необходимо закодировать. Это может быть строка или список строк, если фрагментов несколько.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию False) — Включает и управляет выравниванием. Принимает следующие значения:
    • True или 'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad' (по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
  • truncation (bool, str или TruncationStrategy, необязательный, по умолчанию False) — Включает и управляет усечением. Принимает следующие значения:
    • True или 'longest_first': обрезка до максимальной длины, заданной аргументом max_length, или до максимальной допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.
    • 'only_first': Обрезка до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или пакет пар), обрезке подвергается только первая последовательность пары.
    • 'only_second': Обрезка до максимальной длины, указанной аргументом max_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Обрезка выполняется только для второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).
    • False или 'do_not_truncate' (по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
  • max_length (int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.

    Если параметр не задан или установлен в None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты Numpy np.ndarray.
  • return_attention_mask (bool, необязательный) — Указывает, следует ли возвращать attention mask. Если не задано, attention mask будет возвращена в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом return_outputs .

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

Возвращает

dict[str, list[list[int]]]

Словарь со следующими ключами:

  • input_ids: список идентификаторов токенов, которые подаются в модель.
  • attention_mask: список индексов, указывающих, на какие токены модель должна обращать внимание.

Создаёт «быстрый» токенизатор DPRReader (на базе библиотеки tokenizers от HuggingFace).

DPRReaderTokenizerFast практически идентичен BertTokenizer и выполняет токенизацию от начала до конца: разделение по знакам препинания и wordpiece. Отличие состоит в том, что у него три входные строки: question, titles и texts, которые объединяются для подачи в модель DPRReader.

См. примеры использования и документацию по параметрам в суперклассе BertTokenizer.

Возвращает словарь с идентификаторами токенов входных строк и другой информацией, которую нужно передать в .decode_best_spans. Метод преобразует строки вопроса и различных отрывков (заголовок и текст) в последовательность идентификаторов (целых чисел), используя токенизатор и словарь. Полученный input_ids представляет собой матрицу размера (n_passages, sequence_length) со следующим форматом:

[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

Специфичные для DPR выходные данные

класс transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput

< >

( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Параметры

  • pooler_output (torch.Tensor формы (batch_size, embeddings_size)) — Кодировщик DPR выводит pooler_output, соответствующий представлению контекста. Скрытое состояние последнего слоя первого токена последовательности (токен классификации), дополнительно обработанное линейным слоем. Этот вывод следует использовать для встраивания контекстов при запросах ближайших соседей с эмбеддингами вопросов.
  • hidden_states (tuple[torch.Tensor, ...], необязательный, возвращается, если 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Класс для результатов работы DPRQuestionEncoder.

класс transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput

< >

( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Параметры

  • pooler_output (torch.Tensor формы (batch_size, embeddings_size)) — Кодировщик DPR выводит pooler_output, соответствующее представлению вопроса. Скрытое состояние последнего слоя первого токена последовательности (токен классификации), дополнительно обработанное линейным слоем. Этот вывод следует использовать для встраивания вопросов при запросах ближайших соседей с встраиваниями контекста.
  • hidden_states (tuple[torch.Tensor, ...], необязательный, возвращается, если 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Класс для результатов работы DPRQuestionEncoder.

класс transformers.DPRReaderOutput

< >

( start_logits: Tensorend_logits: typing.Optional[torch.Tensor] = Nonerelevance_logits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Параметры

  • start_logits (torch.Tensor формы (n_passages, sequence_length)) — Логиты начального индекса диапазона для каждого отрывка.
  • end_logits (torch.Tensor формы (n_passages, sequence_length)) — Логиты конечного индекса диапазона для каждого отрывка.
  • relevance_logits (torch.Tensor формы (n_passages, )) — Выводы классификатора вопросов и ответов DPRReader, соответствующие оценкам каждого отрывка для ответа на вопрос по сравнению со всеми остальными отрывками.
  • hidden_states (tuple[torch.Tensor, ...], необязательный, возвращается, если 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Класс для результатов работы DPRQuestionEncoder.

DPRContextEncoder

класс transformers.DPRContextEncoder

< >

( config: DPRConfig )

Параметры

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

Базовый трансформер DPRContextEncoder, который в качестве представлений контекста выводит пулерные выходы.

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRContextEncoderOutput or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length)) — Индексы токенов входной последовательности в словаре. Для соответствия предобучению входная последовательность DPR должна быть сформирована с токенами [CLS] и [SEP] следующим образом:

    (a) Для пар последовательностей (например, пара «заголовок + текст»):

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

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

  • token_type_ids (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из [0, 1]:
    • 0 соответствует токену sentence A,
    • 1 соответствует токену sentence B.

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

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.

Возвращает

DPRContextEncoderOutput или tuple(torch.Tensor)

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

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

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

  • pooler_output (torch.Tensor формы (batch_size, embeddings_size)) — Кодировщик DPR выводит pooler_output, соответствующий представлению контекста. Скрытое состояние последнего слоя первого токена последовательности (токен классификации), дополнительно обработанное линейным слоем. Этот вывод предназначен для встраивания контекстов для запросов ближайших соседей с использованием встраиваний вопросов.

  • hidden_states (tuple[torch.Tensor, ...], необязательный, возвращается при передаче 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

tokens:         [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
token_type_ids:   0   0  0    0    0     0       0   0   1  1  1  1   1   1

(b) Для одиночных последовательностей (например, для вопроса):

tokens:         [CLS] the dog is hairy . [SEP]
token_type_ids:   0   0   0   0  0     0   0

DPR — это модель с абсолютными позиционными эмбеддингами, поэтому обычно рекомендуется дополнять входные данные справа, а не слева.

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

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

Примеры:

>>> from transformers import DPRContextEncoder, DPRContextEncoderTokenizer

>>> tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> model = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output

DPRQuestionEncoder

класс transformers.DPRQuestionEncoder

< >

( config: DPRConfig )

Параметры

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

Базовый трансформер DPRQuestionEncoder, который в качестве представлений вопросов выводит пулерные выходы.

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRQuestionEncoderOutput or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length)) — Индексы токенов входной последовательности в словаре. Для соответствия предобучению входная последовательность DPR должна быть сформирована с токенами [CLS] и [SEP] следующим образом:

    (a) Для пар последовательностей (например, пара «заголовок + текст»):

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

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

  • token_type_ids (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из [0, 1]:
    • 0 соответствует токену sentence A,
    • 1 соответствует токену sentence B.

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

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.

Возвращает

DPRQuestionEncoderOutput или tuple(torch.Tensor)

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

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

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

  • pooler_output (torch.Tensor формы (batch_size, embeddings_size)) — Кодировщик DPR выводит pooler_output, соответствующий представлению вопроса. Состояние последнего слоя первого токена последовательности (токен классификации), дополнительно обработанное линейным слоем. Этот вывод следует использовать для встраивания вопросов при запросах ближайших соседей с встраиваниями контекста.

  • hidden_states (tuple[torch.Tensor, ...], необязательный, возвращается при передаче 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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

tokens:         [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
token_type_ids:   0   0  0    0    0     0       0   0   1  1  1  1   1   1

(b) Для одиночных последовательностей (например, для вопроса):

tokens:         [CLS] the dog is hairy . [SEP]
token_type_ids:   0   0   0   0  0     0   0

DPR — это модель с абсолютными позиционными эмбеддингами, поэтому обычно рекомендуется дополнять входные данные справа, а не слева.

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

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

Примеры:

>>> from transformers import DPRQuestionEncoder, DPRQuestionEncoderTokenizer

>>> tokenizer = DPRQuestionEncoderTokenizer.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> model = DPRQuestionEncoder.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output

DPRReader

класс transformers.DPRReader

< >

( config: DPRConfig )

Параметры

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

Базовый трансформер DPRReader, выдающий предсказания для фрагментов текста.

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

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

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRReaderOutput or tuple(torch.Tensor)

Параметры

  • input_ids (tuple[torch.LongTensor] форматов (n_passages, sequence_length)) — Индексы токенов входной последовательности в словаре. Должна быть тройкой последовательностей: 1) вопрос, 2) заголовки отрывков и 3) тексты отрывков. Чтобы соответствовать предобучению, DPR input_ids последовательность должна быть сформирована с использованием [CLS] и [SEP] в следующем формате: [CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids> DPR — модель с абсолютными позиционными эмбеддингами, поэтому обычно рекомендуется дополнять входные данные справа, а не слева. Индексы можно получить с помощью DPRReaderTokenizer. Подробнее см. в документации этого класса. Что такое входные ID?

    [CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

    DPR — это модель с абсолютными позиционными эмбеддингами, поэтому обычно рекомендуется дополнять входные данные справа, а не слева.

    Индексы можно получить с помощью DPRReaderTokenizer. Дополнительные сведения см. в документации этого класса.

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

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

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

  • inputs_embeds (torch.Tensor формы (n_passages, sequence_length, hidden_size), необязательный) — По желанию, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска эмбеддингов модели.
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.

Возвращает

DPRReaderOutput или tuple(torch.Tensor)

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

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

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

  • start_logits (torch.Tensor формы (n_passages, sequence_length)) — Логиты начального индекса диапазона для каждого отрывка.

  • end_logits (torch.Tensor формы (n_passages, sequence_length)) — Логиты конечного индекса диапазона для каждого отрывка.

  • relevance_logits (torch.Tensor формы (n_passages, )) — Выходы классификатора QA модели DPRReader, соответствующие оценкам каждого отрывка для ответа на вопрос по сравнению со всеми остальными отрывками.

  • hidden_states (tuple[torch.Tensor, ...], необязательный, возвращается при передаче 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 DPRReader, DPRReaderTokenizer

>>> tokenizer = DPRReaderTokenizer.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> model = DPRReader.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> encoded_inputs = tokenizer(
...     questions=["What is love ?"],
...     titles=["Haddaway"],
...     texts=["'What Is Love' is a song recorded by the artist Haddaway"],
...     return_tensors="pt",
... )
>>> outputs = model(**encoded_inputs)
>>> start_logits = outputs.start_logits
>>> end_logits = outputs.end_logits
>>> relevance_logits = outputs.relevance_logits
Update on GitHub