Transformers documentation
RAG
نُشر هذا النموذج في أوراق HF في 22 مايو 2020، وأُضيف إلى مكتبة Hugging Face Transformers في 16 نوفمبر 2020.
RAG
يجمع توليد المعزَّز بالاسترجاع (RAG) بين نموذج لغوي مُدرَّب مسبقًا (ذاكرة بارامترية) والوصول إلى مصدر بيانات خارجي (ذاكرة غير بارامترية) بواسطة مسترجع عصبي مُدرَّب مسبقًا. يسترجع RAG المقاطع ذات الصلة ويجعل توليده مشروطًا عليها أثناء الاستدلال. وغالبًا ما يجعل ذلك الإجابات أكثر واقعية، ويتيح لك تحديث المعرفة بتغيير الفهرس بدلًا من إعادة تدريب النموذج بأكمله.
يمكنك العثور على جميع نقاط التفتيش الأصلية لـ RAG تحت منظمة AI at Meta.
تمت مساهمة هذا النموذج من قِبل ola13.
انقر على نماذج RAG في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق RAG على مهام لغوية مختلفة.
تُوضّح الأمثلة أدناه كيفية توليد النص باستخدام 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])تقلل عملية التكميم من حجم الذاكرة من خلال تخزين الأوزان بدقة أدنى. راجع نظرة عامة على التكميم لمعرفة الخوادم المدعومة. يستخدم المثال أدناه 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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 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) — ما إذا كان سيتم تحميل نسخة "محاكاة" من مجموعة البيانات المحددة بواسطة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، يتم تهميش قيم logits على جميع المستندات باستخدام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
< source >( question_encoder_config: PreTrainedConfiggenerator_config: PreTrainedConfig**kwargs ) → EncoderDecoderConfig
يعيد
مثال من كائن التهيئة
أنشئ كائنًا من EncoderDecoderConfig (أو فئة مشتقة) من إعدادات نموذج المُشفِّر المُدرَّب مسبقًا وإعدادات نموذج المُفكِّك.
RagTokenizer
مخرجات محددة لـ Rag
فئة transformers.models.rag.modeling_rag.RetrievAugLMMarginOutput
< source >( 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 cache.تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل
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) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومدخلات مُشفِّر السؤال input_ids بواسطة المُسترجِع. - 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
< source >( 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 cache.تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل
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) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومدخلات مُشفِّر السؤال input_ids بواسطة المُسترجِع. - 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
< source >( configquestion_encoder_tokenizergenerator_tokenizerindex = Noneinit_retrieval = True )
المعاملات
- config (RagConfig) —
إعدادات نموذج RAG الذي يُستخدم معه هذا المسترجع. يحتوي على معاملات تحدد أي
Indexيجب بناؤه. يمكنك تحميل مجموعة بيانات مخصصة خاصة بك باستخدامconfig.index_name="custom"أو استخدام مجموعة قياسية (افتراضية) من مكتبة datasets مثلconfig.index_name="wiki_dpr". - question_encoder_tokenizer (PreTrainedTokenizer) — المُرمِّز الذي استُخدم لتجزئة السؤال. يُستخدم لفك ترميز السؤال ثم استخدام generator_tokenizer.
- generator_tokenizer (PreTrainedTokenizer) — المُرمِّز المستخدم في الجزء الخاص بالمولّد داخل RagModel.
- index (
Index، اختياري، القيمة الافتراضية هي تلك المعرّفة بواسطة الإعداد) — إذا تم تحديده، استخدم هذا الفهرس بدلاً من ذلك المُنشأ باستخدام الإعداد
المسترجع المستخدم للحصول على المستندات من استعلامات المتجهات. يسترجع المسترجع تمثيلات المستندات (embeddings) بالإضافة إلى محتويات المستندات، ويصيغها بحيث يمكن استخدامها مع نموذج 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")دالة تهيئة المسترجع. تقوم بتحميل الفهرس في الذاكرة.
postprocess_docs
< source >( docsinput_stringsprefixn_docsreturn_tensors = None ) → tuple(tensors)
المعاملات
- docs (
dict) — المستندات المسترجعة. - input_strings (
str) — النصوص المدخلة التي فكّ ترميزهاpreprocess_query. - prefix (
str) — بادئة تُضاف في بداية كل مدخل، وتُستخدم عادةً مع النماذج القائمة على T5.
يعيد
tuple(tensors)
مجموعة (tuple) تتكون من عنصرين: input_ids السياقية وattention_mask المتوافقة.
معالجة المستندات docs المسترجعة بعد الاسترجاع ودمجها مع input_strings.
استرجاع
< source >( 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]]
مجموعة (tuple) تحتوي على الكائنات التالية:
- 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
< source >( 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، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
- question_encoder (
PreTrainedModel، اختياري) — النموذج المسؤول عن ترميز السؤال إلى حالات خفية للاسترجاع. - generator (
PreTrainedModel، اختياري) — النموذج المسؤول عن توليد النص بناءً على المستندات المسترجعة. - retriever (
RagRetriever، اختياري) — المكوّن المسؤول عن استرجاع المستندات من قاعدة المعرفة بناءً على السؤال المُرمَّز.
نموذج Rag العاري الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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, تُستخدم لتهيئة النموذج، وتحدد المولّد الذي يجب استخدامه، كما تحدد مُجزِّئ (tokenizer) متوافق مع المولّد. استخدم فئة المُجزِّئ هذه للحصول على المؤشرات. - 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_attention_mask (
torch.BoolTensorof shape(batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو فيdecoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا. - 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لتمريرة الأمامية. يمكن حسابdoc_scoresعبرquestion_encoder_last_hidden_stateوretrieved_doc_embeds، راجع الأمثلة لمزيد من المعلومات. - context_input_ids (
torch.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length), اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومُشفِّر السؤالinput_idsبواسطة المسترجع. إذا لم يتم تهيئة النموذج معretriever`context_input_idsيجب توفيره لمرور التقديم الأمامي. تُعادcontext_input_idsبواسطة__call__(). - context_attention_mask (
torch.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length),اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المُعالَج بعد الاستخراج من المستندات المسترجعة وinput_idsلمُشفِّر السؤال بواسطة المُسترجِع. إذا لم يكن النموذج مُهيَّأً معretriever، فيجب توفيرcontext_attention_maskلتمريرة الأمامية. تُعادcontext_attention_maskبواسطة__call__(). - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - 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.Tensorof shape(batch_size, config.n_docs, hidden_size), اختياري, يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم معquestion_encoder_last_hidden_stateلحسابdoc_scores.retrieved_doc_ids (
torch.LongTensorof shape(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.Tensorof shape(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
< source >( 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، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
- question_encoder (
PreTrainedModel، اختياري) — النموذج المسؤول عن ترميز السؤال إلى حالات خفية للاسترجاع. - generator (
PreTrainedModel، اختياري) — النموذج المسؤول عن توليد النص بناءً على المستندات المسترجعة. - retriever (
RagRetriever، اختياري) — المكوّن المسؤول عن استرجاع المستندات من قاعدة المعرفة بناءً على السؤال المُرمَّز.
تنفيذ لنموذج RAG-sequence. يقوم بتنفيذ التهميش الخاص بـ RAG-sequence في مسار الأمامي.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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, تُستخدم لتهيئة النموذج، وتحدد المولّد الذي يجب استخدامه، كما تحدد مُجزِّئ (tokenizer) متوافق مع المولّد. استخدم فئة المُجزِّئ هذه للحصول على المؤشرات. - 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_attention_mask (
torch.BoolTensorof shape(batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو فيdecoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا. - 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.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length), اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومُشفِّر السؤالinput_idsبواسطة المسترجع. إذا لم يتم تهيئة النموذج معretriever`context_input_idsيجب توفيره لمرور التقديم الأمامي. تُعادcontext_input_idsبواسطة__call__(). - context_attention_mask (
torch.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length),اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المُعالَج بعد الاستخراج من المستندات المسترجعة وinput_idsلمُشفِّر السؤال بواسطة المُسترجِع. إذا لم يكن النموذج مُهيَّأً معretriever، فيجب توفيرcontext_attention_maskلتمريرة الأمامية. تُعادcontext_attention_maskبواسطة__call__(). - doc_scores (
torch.Tensorمن الشكل(batch_size, config.n_docs)) — الدرجة بين ترميزات كل مستند مسترجع (انظرretrieved_doc_embeds) وquestion_encoder_last_hidden_state. إذا لم يتم تهيئة النموذج معretriever، فيجب توفيرdoc_scoresلتمريرة الأمامية. يمكن حسابdoc_scoresعبرquestion_encoder_last_hidden_stateوretrieved_doc_embeds، راجع الأمثلة لمزيد من المعلومات. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - 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 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - n_docs (
int، اختياري) — عدد المستندات التي يجب استرجاعها.
يعيد
RetrievAugLMMarginOutput أو tuple(torch.Tensor)
RetrievAugLMMarginOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (RagConfig) والمدخلات.
تتجاوز طريقة RagSequenceForGeneration الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(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.Tensorof shape(batch_size, config.n_docs, hidden_size), اختياري, يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم معquestion_encoder_last_hidden_stateلحسابdoc_scores.retrieved_doc_ids (
torch.LongTensorof shape(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.Tensorof shape(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
< source >( 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)، اختياري) — التسلسل المستخدم كموجّه (prompt) للتوليد. إذا لم يُمرَّر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) — معرّفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومعرّفات الإدخال لمشفّر السؤال بواسطة المسترجع. - context_attention_mask (
torch.LongTensorبشكل(batch_size * config.n_docs, config.max_combined_length), اختياري, يُعاد عند output_retrieved=True) — قناع الانتباه بعد معالجته من المستندات المسترجعة ومشفّر السؤالinput_idsبواسطة المسترجع.إذا لم يتم تهيئة النموذج مع
retrieverأو لم يتم تقديمinput_ids، فيجب تقديم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, اختياري، القيمة الافتراضية 1) — عدد التسلسلات المستقلة المحسوبة والمُعاد إرجاعها لكل عنصر في الدفعة. لاحظ أن هذه ليست القيمة التي نمررها إلى دالة[generate()](/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationMixin.generate)الخاصة بـgenerator، حيث نضبطnum_return_sequencesعلىnum_beams. - num_beams (
int، اختياري، القيمة الافتراضية 1) — عدد الحزم في بحث الحزم. القيمة 1 تعني عدم استخدام بحث الحزم. - 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
< source >( 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، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
- question_encoder (
PreTrainedModel، اختياري) — النموذج المسؤول عن ترميز السؤال إلى حالات خفية للاسترجاع. - generator (
PreTrainedModel، اختياري) — النموذج المسؤول عن توليد النص بناءً على المستندات المسترجعة. - retriever (
RagRetriever، اختياري) — المكوّن المسؤول عن استرجاع المستندات من قاعدة المعرفة بناءً على السؤال المُرمَّز.
تنفيذ لنموذج RAG-token. يقوم بإجراء التهميش الخاص بـ RAG-token في مسار التقدّم الأمامي.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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, تُستخدم لتهيئة النموذج، وتحدد المولّد الذي يجب استخدامه، كما تحدد مُجزِّئ (tokenizer) متوافق مع المولّد. استخدم فئة المُجزِّئ هذه للحصول على المؤشرات. - 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_attention_mask (
torch.BoolTensorof shape(batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو فيdecoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا. - 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.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length), اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومُشفِّر السؤالinput_idsبواسطة المسترجع. إذا لم يتم تهيئة النموذج معretriever`context_input_idsيجب توفيره لمرور التقديم الأمامي. تُعادcontext_input_idsبواسطة__call__(). - context_attention_mask (
torch.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length),اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المُعالَج بعد الاستخراج من المستندات المسترجعة وinput_idsلمُشفِّر السؤال بواسطة المُسترجِع. إذا لم يكن النموذج مُهيَّأً معretriever، فيجب توفيرcontext_attention_maskلتمريرة الأمامية. تُعادcontext_attention_maskبواسطة__call__(). - doc_scores (
torch.Tensorمن الشكل(batch_size, config.n_docs)) — الدرجة بين ترميزات كل مستند مسترجع (انظرretrieved_doc_embeds) وquestion_encoder_last_hidden_state. إذا لم يتم تهيئة النموذج معretriever، فيجب توفيرdoc_scoresلتمريرة الأمامية. يمكن حسابdoc_scoresعبرquestion_encoder_last_hidden_stateوretrieved_doc_embeds، راجع الأمثلة لمزيد من المعلومات. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - 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، يتم تهميش قيم logits عبر جميع المستندات باستخدام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 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - n_docs (
int، اختياري) — عدد المستندات التي يجب استرجاعها.
يعيد
RetrievAugLMMarginOutput أو tuple(torch.Tensor)
RetrievAugLMMarginOutput أو مجموعة مرتبة من
torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (RagConfig) والمدخلات.
تُعيد طريقة RagTokenForGeneration الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(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.Tensorof shape(batch_size, config.n_docs, hidden_size), اختياري, يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم معquestion_encoder_last_hidden_stateلحسابdoc_scores.retrieved_doc_ids (
torch.LongTensorof shape(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.Tensorof shape(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
< source >( 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)، اختياري) — التسلسل المستخدم كموجّه (prompt) للتوليد. إذا لم يُمرَّرinput_ids، فيجب توفيرcontext_input_ids. - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- context_input_ids (
torch.LongTensorof shape(batch_size * config.n_docs, config.max_combined_length), optional, returned when output_retrieved=True) — Input IDs post-processed from the retrieved documents and the question encoderinput_idsby the retriever.إذا لم يتم تهيئة النموذج مع
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]]، اختياري) — إذا تم توفيره، فإن هذه الدالة تُقيّد بحث الحزمة (beam search) على الرموز المسموح بها فقط في كل خطوة. إذا لم يُقدَّم، فلا يُطبَّق أي قيد. تستقبل هذه الدالة حجتين:inputs_idsومعرّف الدفعةbatch_id. يجب أن تُرجع قائمة بالرموز المسموح بها لخطوة التوليد التالية، مشروطةً بالرموز المولَّدة سابقًاinputs_idsومعرّف الدفعةbatch_id. يُعدّ هذا الحُجّة مفيدًا للتوليد المقيد المشروط على البادئة، كما هو موصوف في استرجاع الكيانات التلقائي التكراري (Autoregressive Entity Retrieval). - logits_processor (
LogitsProcessorList، اختياري) — معالجات 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.