Transformers documentation

RAG

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

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

RAG

FlashAttention

Retrieval-Augmented Generation (RAG) объединяет предобученную языковую модель (параметрическую память) с доступом к внешнему источнику данных (непараметрическую память) с помощью предобученного нейронного ретривера. RAG извлекает релевантные фрагменты текста и использует их как условие для генерации во время инференса. Это часто делает ответы более фактологичными и позволяет обновлять знания, изменяя индекс, вместо переобучения всей модели.

Все исходные контрольные точки RAG можно найти в организации AI at Meta.

Эта модель была предоставлена пользователем ola13.

Щёлкните по моделям RAG в боковой панели справа, чтобы увидеть больше примеров применения RAG к различным языковым задачам.

Приведённые ниже примеры демонстрируют, как генерировать текст с помощью AutoModel.

AutoModel
from transformers import RagRetriever, RagSequenceForGeneration, RagTokenizer


tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-nq")
retriever = RagRetriever.from_pretrained(
    "facebook/rag-sequence-nq", dataset="wiki_dpr", index_name="compressed"
)

model = RagSequenceForGeneration.from_pretrained(
    "facebook/rag-sequence-nq",
    retriever=retriever,
    attn_implementation="flash_attention_2",
    device_map="auto",
)
inputs = tokenizer("How many people live in Paris?", return_tensors="pt").to(model.device)
generated = model.generate(input_ids=inputs["input_ids"])
print(tokenizer.batch_decode(generated, skip_special_tokens=True)[0])

Квантование снижает потребление памяти за счёт хранения весов в пониженной точности. Список поддерживаемых бэкендов приведён в обзоре Quantization. В примере ниже используется bitsandbytes для квантования весов до 4 бит.

import torch

from transformers import BitsAndBytesConfig, RagRetriever, RagSequenceForGeneration, RagTokenizer


bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16)

tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-nq")
retriever = RagRetriever.from_pretrained(
    "facebook/rag-sequence-nq", dataset="wiki_dpr", index_name="compressed"
)

model = RagSequenceForGeneration.from_pretrained(
    "facebook/rag-sequence-nq",
    retriever=retriever,
    quantization_config=bnb,
    device_map="auto",
)
inputs = tokenizer("How many people live in Paris?", return_tensors="pt").to(model.device)
generated = model.generate(input_ids=inputs["input_ids"])
print(tokenizer.batch_decode(generated, skip_special_tokens=True)[0])

RagConfig

класс transformers.RagConfig

< >

( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truequestion_encoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonegenerator: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonevocab_size: int | None = Noneprefix: str | None = Nonebos_token_id: int | None = Nonepad_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonedecoder_start_token_id: int | None = Nonetitle_sep: str = ' / 'doc_sep: str = ' // 'n_docs: int = 5max_combined_length: int = 300retrieval_vector_size: int = 768retrieval_batch_size: int = 8dataset: str = 'wiki_dpr'dataset_split: str = 'train'index_name: str = 'compressed'index_path: str | None = Nonepassages_path: str | None = Noneuse_dummy_dataset: bool = Falsereduce_loss: bool = Falselabel_smoothing: float = 0.0do_deduplication: bool = Trueexclude_bos_score: bool = Falsedo_marginalize: bool = Falseoutput_retrieved: bool = Falseuse_cache: bool = Truedataset_revision: str | None = None )

Параметры

  • is_encoder_decoder (bool, необязательный, по умолчанию True) — Указывает, используется ли модель в качестве энкодера/декодера.
  • question_encoder (PreTrainedConfig | dict, необязательный) — Объект конфигурации или словарь конфигурации базовой модели кодировщика вопроса
  • generator (PreTrainedConfig | dict, необязательный) — Объект конфигурации или словарь конфигурации базовой модели генератора ответов
  • vocab_size (int, необязательный) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • prefix (str, необязательный) — Строковый префикс, добавляемый к каждому вводу перед передачей в генераторную модель.
  • bos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • pad_token_id (int, необязательный) — Идентификатор токена, используемого для выравнивания в словаре.
  • eos_token_id (Union[int, list[int]], необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • decoder_start_token_id (int, необязательный) — Если модель encoder-decoder начинает декодирование с токена, отличного от bos, то идентификатор этого токена.
  • title_sep (str, необязательный, по умолчанию " / ") — Разделитель, вставляемый между заголовком и текстом извлечённого документа при вызове RagRetriever.
  • doc_sep (str, необязательный, по умолчанию " // ") — Разделитель, вставляемый между текстом полученного документа и исходным входом при вызове RagRetriever.
  • n_docs (int, необязательный, по умолчанию 5) — Количество документов для извлечения.
  • max_combined_length (int, необязательный, по умолчанию 300) — Максимальная длина контекстуализированного входа, возвращаемого __call__().
  • retrieval_vector_size (int, необязательный, по умолчанию 768) — Размерность векторов документов, индексируемых RagRetriever.
  • retrieval_batch_size (int, необязательный, по умолчанию 8) — Размер батча для поиска, определяемый как количество запросов, одновременно отправляемых в индекс faiss, инкапсулированный в RagRetriever.
  • dataset (str, необязательный, по умолчанию "wiki_dpr") — Идентификатор датасета, проиндексированного в HuggingFace Datasets (полный список доступных датасетов и их идентификаторов можно получить с помощью datasets.list_datasets()).
  • dataset_split (str, необязательный, по умолчанию "train") — Какой сплит dataset загрузить.
  • index_name (str, необязательный, по умолчанию "compressed") — Имя индекса, связанного с dataset. Можно выбрать одно из значений: "legacy", "exact" или "compressed".
  • index_path (str, необязательный) — Путь к сериализованному индексу faiss на диске.
  • passages_path (str, необязательный) — Путь к текстовым фрагментам, совместимым с индексом faiss. Обязателен при использовании LegacyIndex
  • use_dummy_dataset (bool, необязательный, по умолчанию False) — Указывает, следует ли загрузить «dummy»-вариант набора данных, указанного в dataset.
  • reduce_loss (bool, необязательный, по умолчанию False) — Указывает, следует ли сводить потерю NLL с помощью операции torch.Tensor.sum.
  • label_smoothing (float, необязательный, по умолчанию 0.0) — Имеет значение только при установке return_loss в True. Управляет значением параметра epsilon для сглаживания меток при вычислении функции потерь. Если установлено в 0, сглаживание меток не выполняется.
  • do_deduplication (bool, необязательный, по умолчанию True) — Указывает, следует ли удалять дубликаты из генераций, полученных из разных контекстных документов для данного входа. При использовании с распределённым бэкендом во время обучения должно быть установлено в False.
  • exclude_bos_score (bool, необязательный, по умолчанию False) — Указывает, следует ли игнорировать токен BOS при вычислении функции потерь.
  • do_marginalize (bool, необязательный, по умолчанию False) — Если True, логиты маргинализируются по всем документам с использованием torch.nn.functional.log_softmax.
  • output_retrieved (bool, необязательный, по умолчанию False) — Если установлено в True, возвращаются retrieved_doc_embeds, retrieved_doc_ids, context_input_ids и context_attention_mask. Подробности о возвращаемых тензорах см. ниже.
  • use_cache (bool, необязательный, по умолчанию True) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только если config.is_decoder=True или если модель является генеративной моделью только с декодером.
  • dataset_revision (str, необязательный,) — Ревизия (хеш коммита, тег или ветка) набора данных Hugging Face, используемого для извлечения.

Это класс конфигурации для хранения настроек модели RagModel. Он используется для создания модели Rag в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации

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

from_question_encoder_generator_configs

< >

( question_encoder_config: PreTrainedConfiggenerator_config: PreTrainedConfig**kwargs ) → EncoderDecoderConfig

Возвращает

EncoderDecoderConfig

Экземпляр объекта конфигурации

Создайте экземпляр EncoderDecoderConfig (или производного класса) на основе конфигурации предобученной модели-энкодера и конфигурации модели-декодера.

RagTokenizer

класс transformers.RagTokenizer

< >

( question_encodergenerator )

Выводы, специфичные для Rag

класс transformers.models.rag.modeling_rag.RetrievAugLMMarginOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneretrieved_doc_embeds: typing.Optional[torch.Tensor] = Noneretrieved_doc_ids: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonequestion_encoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonequestion_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonequestion_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_last_hidden_state: typing.Optional[torch.Tensor] = Nonegenerator_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_cross_attentions: tuple[torch.Tensor, ...] | None = None )

Параметры

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потеря языковой модели.
  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели. Оценка может быть усреднена по всем документам для каждого токена словаря.
  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.
  • past_key_values (Cache, необязательный, возвращается, если use_cache=True передан или если config.use_cache=True) — это Cache экземпляр. Подробнее см. в нашем руководстве по кэшу KV.

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

  • retrieved_doc_embeds (torch.Tensor формы (batch_size, config.n_docs, hidden_size), необязательный, возвращается при output_retrieved=True) — Векторные представления документов, извлечённых ретривером. Используется вместе с question_encoder_last_hidden_state для вычисления doc_scores.
  • retrieved_doc_ids (torch.LongTensor формы (batch_size, config.n_docs), необязательный, возвращается, если output_retrieved=True) — Индексы встроенных документов, извлечённых ретривером.
  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Входные идентификаторы, обработанные ретривером на основе извлеченных документов и входных идентификаторов энкодера вопроса.
  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Маска внимания, обработанная ретривером на основе извлечённых документов и input_ids кодировщика вопроса.
  • question_encoder_last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя кодировщика вопроса, полученная из агрегированного вывода модели.
  • question_enc_hidden_states (tuple(torch.Tensor), необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.Tensor ((один для вывода эмбеддингов и один для вывода каждого слоя) с формой (batch_size, sequence_length, hidden_size).

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

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

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

  • generator_enc_last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя генераторного энкодера модели.
  • generator_enc_hidden_states (tuple(torch.Tensor), необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.Tensor (по одному для вывода эмбеддингов и по одному для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

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

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

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

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

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

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

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

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

Базовый класс для выходов моделей с ретривером и маргинализацией.

класс transformers.models.rag.modeling_rag.RetrievAugLMOutput

< >

( logits: typing.Optional[torch.Tensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneretrieved_doc_embeds: typing.Optional[torch.Tensor] = Noneretrieved_doc_ids: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonequestion_encoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonequestion_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonequestion_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_last_hidden_state: typing.Optional[torch.Tensor] = Nonegenerator_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_cross_attentions: tuple[torch.Tensor, ...] | None = None )

Параметры

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели. Оценка может быть усреднена по всем документам для каждого токена словаря.
  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.
  • past_key_values (Cache, необязательный, возвращается, если use_cache=True передан или если config.use_cache=True) — это Cache экземпляр. Подробнее см. в нашем руководстве по кэшу KV.

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

  • retrieved_doc_embeds (torch.Tensor формы (batch_size, config.n_docs, hidden_size), необязательный, возвращается при output_retrieved=True) — Векторные представления документов, извлечённых ретривером. Используется вместе с question_encoder_last_hidden_state для вычисления doc_scores.
  • retrieved_doc_ids (torch.LongTensor формы (batch_size, config.n_docs), необязательный, возвращается, если output_retrieved=True) — Индексы встроенных документов, извлечённых ретривером.
  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Входные идентификаторы, обработанные ретривером на основе извлеченных документов и входных идентификаторов энкодера вопроса.
  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Маска внимания, обработанная ретривером на основе извлечённых документов и input_ids кодировщика вопроса.
  • question_encoder_last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя кодировщика вопроса, полученная из агрегированного вывода модели.
  • question_enc_hidden_states (tuple(torch.Tensor), необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.Tensor ((один для вывода эмбеддингов и один для вывода каждого слоя) с формой (batch_size, sequence_length, hidden_size).

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

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

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

  • generator_enc_last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя генераторного энкодера модели.
  • generator_enc_hidden_states (tuple(torch.Tensor), необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.Tensor (по одному для вывода эмбеддингов и по одному для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

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

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

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

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

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

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

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

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

RagRetriever

класс transformers.RagRetriever

< >

( configquestion_encoder_tokenizergenerator_tokenizerindex = Noneinit_retrieval = True )

Параметры

  • config (RagConfig) — Конфигурация RAG-модели, с которой используется данный Retriever. Содержит параметры, указывающие, какой Index следует построить. Вы можете загрузить собственный пользовательский набор данных с помощью config.index_name="custom" или использовать стандартный (по умолчанию) из библиотеки datasets, например, с помощью config.index_name="wiki_dpr".
  • question_encoder_tokenizer (PreTrainedTokenizer) — Токенайзер, который использовался для токенизации вопроса. Он применяется для декодирования вопроса, после чего используется generator_tokenizer.
  • generator_tokenizer (PreTrainedTokenizer) — Токенизатор, используемый для генераторной части RagModel.
  • index (Index, необязательный, по умолчанию — тот, что определён в конфигурации) — Если указан, используется этот индекс вместо того, который строится на основе конфигурации

Retriever используется для получения документов по векторным запросам. Он извлекает эмбеддинги документов, а также их содержимое и форматирует их для использования с RagModel.

Примеры:

>>> # To load the default "wiki_dpr" dataset with 21M passages from wikipedia (index name is 'compressed' or 'exact')
>>> from transformers import RagRetriever

>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-sequence-nq", dataset="wiki_dpr", index_name="compressed"
... )

>>> # To load your own indexed dataset built with the datasets library.
>>> from transformers import RagRetriever

>>> dataset = (
...     ...
... )  # dataset must be a datasets.Datasets object with columns "title", "text" and "embeddings", and it must have a supported index (e.g., Faiss or other index types depending on your setup)
>>> retriever = RagRetriever.from_pretrained("facebook/rag-sequence-nq", indexed_dataset=dataset)

>>> # To load your own indexed dataset built with the datasets library that was saved on disk.
>>> from transformers import RagRetriever

>>> dataset_path = "path/to/my/dataset"  # dataset saved via *dataset.save_to_disk(...)*
>>> index_path = "path/to/my/index"  # index saved via *dataset.get_index("embeddings").save(...)*
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-sequence-nq",
...     index_name="custom",
...     passages_path=dataset_path,
...     index_path=index_path,
... )

>>> # To load the legacy index built originally for Rag's paper
>>> from transformers import RagRetriever

>>> retriever = RagRetriever.from_pretrained("facebook/rag-sequence-nq", index_name="legacy")

init_retrieval

< >

( )

Функция инициализации ретривера. Загружает индекс в память.

postprocess_docs

< >

( docsinput_stringsprefixn_docsreturn_tensors = None ) → tuple(tensors)

Параметры

  • docs (dict) — Полученные документы.
  • input_strings (str) — Строки на входе, декодированные с помощью preprocess_query.
  • prefix (str) — Префикс, добавляемый в начало каждого входного значения; обычно используется с моделями на базе T5.

Возвращает

tuple(tensors)

кортеж, состоящий из двух элементов: контекстуализированные input_ids и совместимая attention_mask.

Постобработка полученных docs и их объединение с input_strings.

retrieve

< >

( question_hidden_states: ndarrayn_docs: int ) → tuple[np.ndarray, np.ndarray, list[dict]]

Параметры

  • question_hidden_states (np.ndarray формы (batch_size, vector_size)) — Партия векторов запросов для использования при извлечении.
  • n_docs (int) — Количество документов, извлекаемых на каждый запрос.

Возвращает

tuple[np.ndarray, np.ndarray, list[dict]]

Кортеж со следующими объектами:

  • retrieved_doc_embeds (np.ndarray формы (batch_size, n_docs, dim)) — Векторы эмбеддингов извлечённых документов для каждого запроса.
  • doc_ids (np.ndarray формы (batch_size, n_docs)) — идентификаторы документов в индексе
  • doc_dicts (list[dict]): примеры retrieved_doc_embeds для каждого запроса.

Получает документы для указанных question_hidden_states.

RagModel

класс transformers.RagModel

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Nonequestion_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonegenerator: transformers.modeling_utils.PreTrainedModel | None = Noneretriever: transformers.models.rag.retrieval_rag.RagRetriever | None = None**kwargs )

Параметры

  • config (PreTrainedConfig, optional) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
  • question_encoder (PreTrainedModel, необязательный) — Модель, отвечающая за кодирование вопроса в скрытые состояния для поиска.
  • generator (PreTrainedModel, необязательный) — Модель, отвечающая за генерацию текста на основе извлечённых документов.
  • retriever (RagRetriever, необязательный) — Компонент, отвечающий за извлечение документов из базы знаний по закодированному вопросу.

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

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_retrieved: bool | None = Nonen_docs: int | None = None**kwargs ) → RetrievAugLMOutput or tuple(torch.Tensor)

Параметры

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

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

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

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

  • encoder_outputs (tuple(tuple(torch.Tensor), необязательный) — Кортеж состоит из (generator_enc_last_hidden_state, необязательный: generator_enc_hidden_states, необязательный: generator_enc_attentions). generator_enc_last_hidden_state размером (batch_size, n_docs * sequence_length, hidden_size) — последовательность скрытых состояний на выходе последнего слоя энкодера генератора.

    Используется моделью (RagModel) во время декодирования.

  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Указывается для задач генерации. По умолчанию None; формируется в соответствии с инструкциями для модели генератора, используемой в вашем экземпляре RAG.
  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью AutoTokenizer. Подробности — в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs?

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

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

  • decoder_attention_mask (torch.BoolTensor формы (batch_size, target_sequence_length), необязательный) — Поведение по умолчанию: генерировать тензор, игнорирующий токены заполнения в decoder_input_ids. По умолчанию также будет использоваться каузальная маска.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка сходства между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state. Если модель не была инициализирована с retriever, doc_scores должна быть передана в forward pass. doc_scores можно вычислить по question_encoder_last_hidden_state и retrieved_doc_embeds, см. примеры для получения дополнительной информации.
  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается при output_retrieved=True) — ID входных токенов, обработанные ретривером на основе извлеченных документов и input_ids энкодера вопроса. Если модель не была инициализирована с retriever, `context_input_ids` необходимо передать в forward-проход. context_input_ids возвращаются методом __call__().
  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length),необязательный, возвращается, если output_retrieved=True) — Маска внимания, прошедшая постобработку из извлечённых документов и input_ids энкодера вопроса, выполненная retriever. Если модель не инициализирована с retriever, context_attention_mask необходимо передать в forward-проход. context_attention_mask возвращаются методом __call__().
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • output_retrieved (bool, необязательный) — Указывает, следует ли возвращать retrieved_doc_embeds, retrieved_doc_ids, context_input_ids и context_attention_mask. Подробности о возвращаемых тензорах см. ниже.
  • n_docs (int, необязательный) — Количество документов, которые нужно извлечь.

Возвращает

RetrievAugLMOutput или tuple(torch.Tensor)

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

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

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

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

  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценки соответствия между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.

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

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

  • retrieved_doc_embeds (torch.Tensor формы (batch_size, config.n_docs, hidden_size), необязательный, возвращается при output_retrieved=True) — Векторные представления документов, извлечённых ретривером. Используется вместе с question_encoder_last_hidden_state для вычисления doc_scores.

  • retrieved_doc_ids (torch.LongTensor формы (batch_size, config.n_docs), необязательный, возвращается, если output_retrieved=True) — Индексы встроенных документов, извлечённых ретривером.

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — входные идентификаторы, полученные из извлечённых документов и входных идентификаторов кодировщика вопроса после обработки ретривером.

  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — маска внимания, обработанная ретривером на основе извлечённых документов и input_ids кодировщика вопроса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • generator_cross_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, RagRetriever, RagModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/rag-token-base")
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-token-base", index_name="exact", use_dummy_dataset=True
... )
>>> # initialize with RagRetriever to do everything in one forward call
>>> model = RagModel.from_pretrained("facebook/rag-token-base", retriever=retriever)

>>> inputs = tokenizer("How many people live in Paris?", return_tensors="pt")
>>> outputs = model(input_ids=inputs["input_ids"])

RagSequenceForGeneration

класс transformers.RagSequenceForGeneration

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Nonequestion_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonegenerator: transformers.modeling_utils.PreTrainedModel | None = Noneretriever: transformers.models.rag.retrieval_rag.RagRetriever | None = None**kwargs )

Параметры

  • config (PreTrainedConfig, optional) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
  • question_encoder (PreTrainedModel, необязательный) — Модель, отвечающая за кодирование вопроса в скрытые состояния для поиска.
  • generator (PreTrainedModel, необязательный) — Модель, отвечающая за генерацию текста на основе извлечённых документов.
  • retriever (RagRetriever, необязательный) — Компонент, отвечающий за извлечение документов из базы знаний по закодированному вопросу.

Реализация модели RAG-sequence. Выполняет маргинализацию, специфичную для RAG-sequence, в прямом проходе.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_retrieved: bool | None = Noneexclude_bos_score: bool | None = Nonereduce_loss: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonen_docs: int | None = None**kwargs ) → RetrievAugLMMarginOutput or tuple(torch.Tensor)

Параметры

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

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

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

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

  • encoder_outputs (tuple(tuple(torch.Tensor), необязательный) — Кортеж состоит из (generator_enc_last_hidden_state, необязательный: generator_enc_hidden_states, необязательный: generator_enc_attentions). generator_enc_last_hidden_state размером (batch_size, n_docs * sequence_length, hidden_size) — последовательность скрытых состояний на выходе последнего слоя энкодера генератора.

    Используется моделью (RagModel) во время декодирования.

  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Указывается для задач генерации. По умолчанию None; формируется в соответствии с инструкциями для модели генератора, используемой в вашем экземпляре RAG.
  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью AutoTokenizer. Подробности — в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs?

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

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

  • decoder_attention_mask (torch.BoolTensor формы (batch_size, target_sequence_length), необязательный) — Поведение по умолчанию: генерировать тензор, игнорирующий токены заполнения в decoder_input_ids. По умолчанию также будет использоваться каузальная маска.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается при output_retrieved=True) — ID входных токенов, обработанные ретривером на основе извлеченных документов и input_ids энкодера вопроса. Если модель не была инициализирована с retriever, `context_input_ids` необходимо передать в forward-проход. context_input_ids возвращаются методом __call__().
  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length),необязательный, возвращается, если output_retrieved=True) — Маска внимания, прошедшая постобработку из извлечённых документов и input_ids энкодера вопроса, выполненная retriever. Если модель не инициализирована с retriever, context_attention_mask необходимо передать в forward-проход. context_attention_mask возвращаются методом __call__().
  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка сходства между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state. Если модель не была инициализирована с retriever, doc_scores должна быть передана в forward pass. doc_scores можно вычислить по question_encoder_last_hidden_state и retrieved_doc_embeds, см. примеры для получения дополнительной информации.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • output_retrieved (bool, необязательный) — Указывает, следует ли возвращать retrieved_doc_embeds, retrieved_doc_ids, context_input_ids и context_attention_mask. Подробности о возвращаемых тензорах см. ниже.
  • exclude_bos_score (bool, необязательный) — Имеет значение только при передаче labels. Если True, при вычислении потерь оценка токена BOS игнорируется.
  • reduce_loss (bool, необязательный) — Имеет значение только при передаче labels. Если True, потеря NLL сводится с помощью операции torch.Tensor.sum.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне [0, ..., config.vocab_size] или быть равны -100 (см. docstring input_ids). Токены с индексами, установленными в -100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне [0, ..., config.vocab_size].
  • n_docs (int, необязательный) — Количество документов, которые нужно извлечь.

Возвращает

RetrievAugLMMarginOutput или tuple(torch.Tensor)

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

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

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

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

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

  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценки соответствия между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.

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

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

  • retrieved_doc_embeds (torch.Tensor формы (batch_size, config.n_docs, hidden_size), необязательный, возвращается при output_retrieved=True) — Векторные представления документов, извлечённых ретривером. Используется вместе с question_encoder_last_hidden_state для вычисления doc_scores.

  • retrieved_doc_ids (torch.LongTensor формы (batch_size, config.n_docs), необязательный, возвращается, если output_retrieved=True) — Индексы встроенных документов, извлечённых ретривером.

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — входные идентификаторы, полученные из извлечённых документов и входных идентификаторов кодировщика вопроса после обработки ретривером.

  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — маска внимания, обработанная ретривером на основе извлечённых документов и input_ids кодировщика вопроса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • generator_cross_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, RagRetriever, RagSequenceForGeneration
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/rag-sequence-nq")
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-sequence-nq", index_name="exact", use_dummy_dataset=True
... )
>>> # initialize with RagRetriever to do everything in one forward call
>>> model = RagSequenceForGeneration.from_pretrained("facebook/rag-token-nq", retriever=retriever)

>>> inputs = tokenizer("How many people live in Paris?", return_tensors="pt")
>>> targets = tokenizer(text_target="In Paris, there are 10 million people.", return_tensors="pt")
>>> input_ids = inputs["input_ids"]
>>> labels = targets["input_ids"]
>>> outputs = model(input_ids=input_ids, labels=labels)

>>> # or use retriever separately
>>> model = RagSequenceForGeneration.from_pretrained("facebook/rag-sequence-nq", use_dummy_dataset=True)
>>> # 1. Encode
>>> question_hidden_states = model.question_encoder(input_ids)[0]
>>> # 2. Retrieve
>>> docs_dict = retriever(input_ids.numpy(), question_hidden_states.detach().numpy(), return_tensors="pt")
>>> doc_scores = torch.bmm(
...     question_hidden_states.unsqueeze(1), docs_dict["retrieved_doc_embeds"].float().transpose(1, 2)
... ).squeeze(1)
>>> # 3. Forward to generator
>>> outputs = model(
...     context_input_ids=docs_dict["context_input_ids"],
...     context_attention_mask=docs_dict["context_attention_mask"],
...     doc_scores=doc_scores,
...     decoder_input_ids=labels,
... )

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonedo_deduplication: bool | None = Nonenum_return_sequences: int | None = Nonenum_beams: int | None = Nonen_docs: int | None = None**model_kwargs ) → torch.LongTensor of shape (batch_size * num_return_sequences, sequence_length)

Параметры

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

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

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — ID входных токенов, полученные из извлеченных документов и входных ID кодировщика вопроса после обработки ретривером.
  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Маска внимания, обработанная на основе извлечённых документов и input_ids из

    Если модель не инициализирована с retriever или не переданы input_ids, то для forward-прохода необходимо предоставить context_input_ids и context_attention_mask. Они возвращаются методом __call__().

  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.

    Если модель не инициализирована с retriever или не переданы input_ids, то для прямого прохода необходимо предоставить doc_scores. doc_scores возвращаются методом __call__().

  • do_deduplication (bool, необязательный) — Указывает, следует ли удалять дубликаты из генераций, полученных из разных контекстных документов для данного входа. При использовании с распределённым бэкендом во время обучения должно быть установлено в False.
  • num_return_sequences(int, optional, по умолчанию 1) — Количество независимо вычисленных возвращаемых последовательностей для каждого элемента в батче. Обратите внимание, что это не то значение, которое мы передаём в функцию [generate()](/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationMixin.generate) объекта generator, где мы устанавливаем num_return_sequences равным num_beams.
  • num_beams (int, необязательный, по умолчанию 1) — Количество лучей для beam search. Значение 1 означает, что beam search не используется.
  • n_docs (int, необязательный, по умолчанию config.n_docs) — Количество документов, которые нужно извлечь, и/или количество документов, для которых нужно сгенерировать ответ.
  • kwargs (dict[str, Any], необязательный) — Дополнительные kwargs будут переданы в generate().

Возвращает

torch.LongTensor формы (batch_size * num_return_sequences, sequence_length)

Сгенерированные последовательности. Вторая размерность (длина последовательности) равна max_length или меньше, если все батчи завершились досрочно из-за eos_token_id.

Реализует «тщательное» декодирование последовательности RAG. Подробности о том, как задавать другие входные параметры generate, см. в документации generate().

RagTokenForGeneration

класс transformers.RagTokenForGeneration

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Nonequestion_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonegenerator: transformers.modeling_utils.PreTrainedModel | None = Noneretriever: transformers.models.rag.retrieval_rag.RagRetriever | None = None**kwargs )

Параметры

  • config (PreTrainedConfig, optional) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
  • question_encoder (PreTrainedModel, необязательный) — Модель, отвечающая за кодирование вопроса в скрытые состояния для поиска.
  • generator (PreTrainedModel, необязательный) — Модель, отвечающая за генерацию текста на основе извлечённых документов.
  • retriever (RagRetriever, необязательный) — Компонент, отвечающий за извлечение документов из базы знаний по закодированному вопросу.

Реализация модели RAG-token. Выполняет маргинализацию, специфичную для RAG-token, в прямом проходе.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_retrieved: bool | None = Nonedo_marginalize: bool | None = Nonereduce_loss: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonen_docs: int | None = None**kwargs ) → RetrievAugLMMarginOutput or tuple(torch.Tensor)

Параметры

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

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

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

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

  • encoder_outputs (tuple(tuple(torch.Tensor), необязательный) — Кортеж состоит из (generator_enc_last_hidden_state, необязательный: generator_enc_hidden_states, необязательный: generator_enc_attentions). generator_enc_last_hidden_state размером (batch_size, n_docs * sequence_length, hidden_size) — последовательность скрытых состояний на выходе последнего слоя энкодера генератора.

    Используется моделью (RagModel) во время декодирования.

  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Указывается для задач генерации. По умолчанию None; формируется в соответствии с инструкциями для модели генератора, используемой в вашем экземпляре RAG.
  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью AutoTokenizer. Подробности — в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs?

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

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

  • decoder_attention_mask (torch.BoolTensor формы (batch_size, target_sequence_length), необязательный) — Поведение по умолчанию: генерировать тензор, игнорирующий токены заполнения в decoder_input_ids. По умолчанию также будет использоваться каузальная маска.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается при output_retrieved=True) — ID входных токенов, обработанные ретривером на основе извлеченных документов и input_ids энкодера вопроса. Если модель не была инициализирована с retriever, `context_input_ids` необходимо передать в forward-проход. context_input_ids возвращаются методом __call__().
  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length),необязательный, возвращается, если output_retrieved=True) — Маска внимания, прошедшая постобработку из извлечённых документов и input_ids энкодера вопроса, выполненная retriever. Если модель не инициализирована с retriever, context_attention_mask необходимо передать в forward-проход. context_attention_mask возвращаются методом __call__().
  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка сходства между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state. Если модель не была инициализирована с retriever, doc_scores должна быть передана в forward pass. doc_scores можно вычислить по question_encoder_last_hidden_state и retrieved_doc_embeds, см. примеры для получения дополнительной информации.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • output_retrieved (bool, необязательный) — Указывает, следует ли возвращать retrieved_doc_embeds, retrieved_doc_ids, context_input_ids и context_attention_mask. Подробности о возвращаемых тензорах см. ниже.
  • do_marginalize (bool, необязательный) — Если True, логиты маргинализируются по всем документам с использованием torch.nn.functional.log_softmax.
  • reduce_loss (bool, необязательный) — Имеет значение только при передаче labels. Если True, потеря NLL сводится с помощью операции torch.Tensor.sum.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне [0, ..., config.vocab_size] или быть равны -100 (см. docstring input_ids). Токены с индексами, установленными в -100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне [0, ..., config.vocab_size].
  • n_docs (int, необязательный) — Количество документов, которые нужно извлечь.

Возвращает

RetrievAugLMMarginOutput или tuple(torch.Tensor)

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

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

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

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

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

  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценки соответствия между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.

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

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

  • retrieved_doc_embeds (torch.Tensor формы (batch_size, config.n_docs, hidden_size), необязательный, возвращается при output_retrieved=True) — Векторные представления документов, извлечённых ретривером. Используется вместе с question_encoder_last_hidden_state для вычисления doc_scores.

  • retrieved_doc_ids (torch.LongTensor формы (batch_size, config.n_docs), необязательный, возвращается, если output_retrieved=True) — Индексы встроенных документов, извлечённых ретривером.

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — входные идентификаторы, полученные из извлечённых документов и входных идентификаторов кодировщика вопроса после обработки ретривером.

  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — маска внимания, обработанная ретривером на основе извлечённых документов и input_ids кодировщика вопроса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • generator_cross_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, RagRetriever, RagTokenForGeneration
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/rag-token-nq")
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-token-nq", index_name="exact", use_dummy_dataset=True
... )
>>> # initialize with RagRetriever to do everything in one forward call
>>> model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq", retriever=retriever)

>>> inputs = tokenizer("How many people live in Paris?", return_tensors="pt")
>>> targets = tokenizer(text_target="In Paris, there are 10 million people.", return_tensors="pt")
>>> input_ids = inputs["input_ids"]
>>> labels = targets["input_ids"]
>>> outputs = model(input_ids=input_ids, labels=labels)

>>> # or use retriever separately
>>> model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq", use_dummy_dataset=True)
>>> # 1. Encode
>>> question_hidden_states = model.question_encoder(input_ids)[0]
>>> # 2. Retrieve
>>> docs_dict = retriever(input_ids.numpy(), question_hidden_states.detach().numpy(), return_tensors="pt")
>>> doc_scores = torch.bmm(
...     question_hidden_states.unsqueeze(1), docs_dict["retrieved_doc_embeds"].float().transpose(1, 2)
... ).squeeze(1)
>>> # 3. Forward to generator
>>> outputs = model(
...     context_input_ids=docs_dict["context_input_ids"],
...     context_attention_mask=docs_dict["context_attention_mask"],
...     doc_scores=doc_scores,
...     decoder_input_ids=labels,
... )

>>> # or directly generate
>>> generated = model.generate(
...     context_input_ids=docs_dict["context_input_ids"],
...     context_attention_mask=docs_dict["context_attention_mask"],
...     doc_scores=doc_scores,
... )
>>> generated_string = tokenizer.batch_decode(generated, skip_special_tokens=True)

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonen_docs: int | None = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = []stopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = []**kwargs ) → torch.LongTensor of shape (batch_size * num_return_sequences, sequence_length)

Параметры

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

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

  • context_input_ids (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Входные ID, обработанные из извлечённых документов и кодировщика вопроса input_ids ретривером.

    Если модель не инициализирована с retriever, то для прямого прохода необходимо передать context_input_ids. context_input_ids возвращаются методом __call__().

  • context_attention_mask (torch.LongTensor формы (batch_size * config.n_docs, config.max_combined_length), необязательный, возвращается, если output_retrieved=True) — Маска внимания, обработанная после извлечения документов и переданная в input_ids из извлекающего модуля.

    Если модель не инициализирована с retriever, то для прямого прохода необходимо передать context_input_ids. context_input_ids возвращаются методом __call__().

  • doc_scores (torch.Tensor формы (batch_size, config.n_docs)) — Оценка между эмбеддингами каждого извлечённого документа (см. retrieved_doc_embeds) и question_encoder_last_hidden_state.

    Если модель не инициализирована с retriever, то для прямого прохода необходимо передать context_input_ids. context_input_ids возвращаются методом __call__().

  • n_docs (int, необязательный, по умолчанию config.n_docs) — Количество документов, которые нужно извлечь, и/или количество документов, для которых нужно сгенерировать ответ.
  • generation_config (~generation.GenerationConfig, необязательный) — Конфигурация генерации, используемая в качестве базовой параметризации для вызова генерации. **kwargs, передаваемые в generate и совпадающие с атрибутами generation_config, переопределяют их. Если generation_config не указан, будет использован вариант по умолчанию, который имеет следующий приоритет загрузки: 1) из файла модели generation_config.json, если он существует; 2) из конфигурации модели. Обратите внимание, что не указанные параметры наследуют значения по умолчанию GenerationConfig, документация по которым должна быть проверена для параметризации генерации.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], optional) — Если указано, эта функция ограничивает поиск лучами (beam search) только разрешёнными токенами на каждом шаге. Если не указано, ограничения не применяются. Функция принимает два аргумента: inputs_ids и идентификатор батча batch_id. Она должна возвращать список разрешённых токенов для следующего шага генерации, зависящий от ранее сгенерированных токенов inputs_ids и идентификатора батча batch_id. Этот аргумент полезен для ограниченной генерации, обусловленной префиксом, как описано в Autoregressive Entity Retrieval.
  • logits_processor (LogitsProcessorList, необязательный) — Пользовательские обработчики logits, дополняющие стандартные обработчики logits, создаваемые на основе аргументов и конфигурации модели. Если передан обработчик logits, который уже был создан с использованием этих аргументов или конфигурации модели, возникает ошибка.
  • stopping_criteria (StoppingCriteriaList, необязательный) — Пользовательские критерии остановки, дополняющие стандартные критерии, формируемые на основе аргументов и конфигурации модели. Если передан критерий остановки, который уже был создан на основе аргументов или конфигурации модели, возникает ошибка.
  • kwargs (dict[str, Any], необязательный) — Служебная параметризация generate_config и/или дополнительные специфичные для модели аргументы, которые будут переданы в функцию forward модели.

Возвращает

torch.LongTensor формы (batch_size * num_return_sequences, sequence_length)

Сгенерированные последовательности. Вторая размерность (sequence_length) равна max_length или меньше, если все батчи завершились досрочно из-за eos_token_id.

Реализует декодирование токенов RAG.

Update on GitHub