Transformers documentation

نماذج ترميز وفك ترميز الكلام

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 في 14 أبريل 2021، وأُضيف إلى مكتبة Hugging Face Transformers في 1 سبتمبر 2021.

نماذج ترميز وفك ترميز الكلام

FlashAttention SDPA

يمكن استخدام SpeechEncoderDecoderModel لتبديل نموذج من الكلام إلى النص مع أي نموذج مسبق التدريب لتشفير الكلام التلقائي كمُشفِّر (على سبيل المثال Wav2Vec2، Hubert) وأي نموذج مسبق التدريب ذاتي التراجع كمُفكِّك.

The effectiveness of initializing speech-sequence-to-text-sequence models with pretrained checkpoints for speech recognition and speech translation has e.g. been shown in Large-Scale Self- and Semi-Supervised Learning for Speech Translation by Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau.

يمكن الاطلاع على مثال لاستخدام SpeechEncoderDecoderModel للاستدلال من خلال مُفكِّك Speech2Text2.

تهيئة SpeechEncoderDecoderModel عشوائياً من تهيئة النموذج

يمكن تهيئة SpeechEncoderDecoderModel عشوائياً من إعدادات مُشفِّر ومُفكِّك. في المثال التالي، نُظهر كيفية القيام بذلك باستخدام إعداد Wav2Vec2Model الافتراضي للمُشفِّر وإعداد BertForCausalLM الافتراضي للمُفكِّك.

from transformers import BertConfig, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel, Wav2Vec2Config


config_encoder = Wav2Vec2Config()
config_decoder = BertConfig()

config = SpeechEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
model = SpeechEncoderDecoderModel(config=config)

تهيئة SpeechEncoderDecoderModel من مُشفِّر مُدرَّب مسبقاً ومُفكِّك مُدرَّب مسبقاً

يمكن تهيئة SpeechEncoderDecoderModel من نقطة تفتيش مُسبقة التدريب للمُشفِّر ونقطة تفتيش مُسبقة التدريب للمُفكِّك. لاحظ أن أي نموذج صوتي مُسبَق التدريب يعتمد على Transformers، مثل Wav2Vec2 أو Hubert، يمكن أن يعمل كمُشفِّر، كما يمكن استخدام كلا النموذجين المُشفِّرين المُفكِّكين المُسبَقين في التدريب، مثل BERT، والنماذج اللغوية السببية المُسبَقة في التدريب، مثل GPT2، بالإضافة إلى الجزء المُفكِّك المُسبَق في التدريب من نماذج التسلسل إلى التسلسل، مثل مُفكِّك BART، كمُفكِّك. اعتمادًا على البنية التي تختارها كمُفكِّك، قد يتم تهيئة طبقات الانتباه المتقاطع بشكل عشوائي. يتطلب تهيئة SpeechEncoderDecoderModel من نقاط تفتيش مُسبَقة في التدريب للمُشفِّر والمُفكِّك ضبط النموذج الدقيق على مهمة لاحقة، كما هو موضح في منشور المدونة Warm-starting-encoder-decoder. لذلك، توفر فئة SpeechEncoderDecoderModel طريقة SpeechEncoderDecoderModel.from_encoder_decoder_pretrained().

from transformers import SpeechEncoderDecoderModel


model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
    "facebook/hubert-large-ll60k", "google-bert/bert-base-uncased"
)

تحميل نقطة تفتيش SpeechEncoderDecoderModel موجودة مسبقاً وتنفيذ الاستدلال

لتحميل نقاط التفتيش المُحسّنة من فئة SpeechEncoderDecoderModel، يوفر SpeechEncoderDecoderModel طريقة from_pretrained(...) تمامًا مثل أي بنية نموذج أخرى في Transformers.

لتنفيذ الاستدلال، يُستخدم generate، وهو يتيح لك توليد النص بشكل ذاتي التراجع. يدعم هذا الأسلوب أشكالاً مختلفة من فك الترميز، مثل الجشع، والبحث الحزمي، والعينة متعددة الحدود.

from transformers import Wav2Vec2Processor, SpeechEncoderDecoderModel
from datasets import load_dataset
import torch

# load a fine-tuned speech translation model and corresponding processor
model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15", device_map="auto")
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")

# let's perform inference on a piece of English speech (which we'll translate to German)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values

# autoregressively generate transcription (uses greedy decoding by default)
generated_ids = model.generate(input_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.

التدريب

بمجرد إنشاء النموذج، يمكن ضبطه بدقة على مجموعة بيانات من أزواج (الكلام، النص) بطريقة مشابهة لتدريب نماذج BART أو T5 أو أي نموذج آخر من نوع المُشفِّر-المُفكِّك. كما ترون، لا يتطلب النموذج سوى مدخلين لحساب الخسارة: input_values (وهي مدخلات الكلام) وlabels (وهي input_ids للتسلسل المستهدف المُشفَّر).

from datasets import load_dataset

from transformers import AutoFeatureExtractor, AutoTokenizer, SpeechEncoderDecoderModel


encoder_id = "facebook/wav2vec2-base-960h"  # acoustic model encoder
decoder_id = "google-bert/bert-base-uncased"  # text decoder

feature_extractor = AutoFeatureExtractor.from_pretrained(encoder_id)
tokenizer = AutoTokenizer.from_pretrained(decoder_id)
# Combine pre-trained encoder and pre-trained decoder to form a Seq2Seq model
model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(encoder_id, decoder_id)

model.config.decoder_start_token_id = tokenizer.cls_token_id
model.config.pad_token_id = tokenizer.pad_token_id

# load an audio input and pre-process (normalise mean/std to 0/1)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values

# load its corresponding transcription and tokenize to generate labels
labels = tokenizer(ds[0]["text"], return_tensors="pt").to(model.device).input_ids

# the forward function automatically creates the correct decoder_input_ids
loss = model(input_values=input_values, labels=labels).loss
loss.backward()

SpeechEncoderDecoderConfig

فئة transformers.SpeechEncoderDecoderConfig

< >

( 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 | None = Trueencoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonedecoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • encoder (Union[~configuration_utils.PreTrainedConfig, dict], اختياري) — كائن الإعداد أو قاموس العمود الفقري للترميز.
  • decoder (Union[~configuration_utils.PreTrainedConfig, dict], اختياري) — كائن الإعدادات أو قاموس هيكل فك الترميز (decoder backbone).

هذه فئة الإعدادات المخزنة لإعدادات نموذج Speech Encoder Decoder. تُستخدم لاستحداث نموذج Speech Encoder Decoder وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

أمثلة:

>>> from transformers import BertConfig, Wav2Vec2Config, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel

>>> # Initializing a Wav2Vec2 & BERT style configuration
>>> config_encoder = Wav2Vec2Config()
>>> config_decoder = BertConfig()

>>> config = SpeechEncoderDecoderConfig(encoder=config_encoder, decoder=config_decoder)

>>> # Initializing a Wav2Vec2Bert model from a Wav2Vec2 & google-bert/bert-base-uncased style configurations
>>> model = SpeechEncoderDecoderModel(config=config)

>>> # Accessing the model configuration
>>> config_encoder = model.config.encoder
>>> config_decoder = model.config.decoder
>>> # set decoder config to causal lm
>>> config_decoder.is_decoder = True
>>> config_decoder.add_cross_attention = True

>>> # Saving the model, including its configuration
>>> model.save_pretrained("my-model")

>>> # loading model and config from pretrained folder
>>> encoder_decoder_config = SpeechEncoderDecoderConfig.from_pretrained("my-model")
>>> model = SpeechEncoderDecoderModel.from_pretrained("my-model", config=encoder_decoder_config)

from_encoder_decoder_configs

< >

( encoder_config: PreTrainedConfigdecoder_config: PreTrainedConfig**kwargs ) → SpeechEncoderDecoderConfig

مثال من كائن التهيئة

أنشئ كائنًا من SpeechEncoderDecoderConfig (أو فئة مشتقة) من إعدادات نموذج المُشفِّر المُدرَّب مسبقًا وإعدادات نموذج المُفكِّك.

SpeechEncoderDecoderModel

فئة transformers.SpeechEncoderDecoderModel

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Noneencoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.modeling_utils.PreTrainedModel | None = None )

المعاملات

  • config (PreTrainedConfig، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
  • encoder (PreTrainedModel، اختياري) — نموذج المُشفِّر الذي سيتم استخدامه.
  • decoder (PreTrainedModel، اختياري) — نموذج المُفكِّك (decoder) المراد استخدامه.

نموذج Speech Encoder Decoder الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinput_values: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)

المعاملات

  • inputs (torch.Tensor من الشكل (batch_size, sequence_length) أو (batch_size, sequence_length, feature_dim)، اختياري) — قيم رقمية عشرية لموجة الصوت الخام المدخلة أو لميزات الكلام. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع .flac أو .wav في مصفوفة من النوع list[float] أو numpy.ndarray أو torch.Tensor، على سبيل المثال عبر مكتبة torchcodec (pip install torchcodec) أو مكتبة soundfile (pip install soundfile). لتجهيز المصفوفة إلى inputs، يجب استخدام Wav2Vec2Processor أو Speech2TextProcessor لإضافة الحشو والتحويل إلى متجه من النوع torch.Tensor.
  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس النموذج. يمكن الحصول على المؤشرات باستخدام PreTrainedTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات المدخلات؟ إذا تم استخدام past_key_values، فيجب إدخال آخر decoder_input_ids فقط بشكل اختياري (راجع past_key_values). أما في التدريب، فيُنشئ النموذج decoder_input_ids تلقائيًا عن طريق إزاحة التسميات إلى اليمين، واستبدال -100 بـ pad_token_id، وإضافة decoder_start_token_id في البداية.

    يمكن الحصول على الفهارس باستخدام PreTrainedTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للحصول على التفاصيل.

    ما هي معرّفات الإدخال؟

    إذا تم استخدام past_key_values، فاختياريًا لا يتعين إدخال سوى آخر decoder_input_ids (انظر past_key_values).

    للتدريب، يتم إنشاء decoder_input_ids تلقائيًا بواسطة النموذج عن طريق إزاحة labels إلى اليمين، واستبدال -100 بـ pad_token_id، وإضافة decoder_start_token_id في البداية.

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو في decoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا.
  • encoder_outputs (tuple[torch.Tensor]، اختياري) — يتكون العنصر المُجمَّع من (last_hidden_state، اختياري: hidden_states، اختياري: attentions) last_hidden_state ذو الشكل (batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك.
  • 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).

  • decoder_inputs_embeds (torch.Tensor من الشكل (batch_size, target_sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير decoder_input_ids يمكنك اختيار تمرير تمثيل مضمّن مباشرة. هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويل فهارس decoder_input_ids إلى المتجهات المرتبطة بها مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج.
  • labels (torch.LongTensor of shape (batch_size, sequence_length), اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة (masked language modeling loss) للمفكّك. يجب أن تكون الفهارس ضمن [-100, 0, ..., config.vocab_size] (انظر input_ids docstring). يتم تجاهل الرموز (tokens) التي فهارسها مضبوطة على -100 (أي أنها مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size]
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).
  • output_attentions (bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجع attentions ضمن tensors المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • input_values (torch.Tensor من الشكل (batch_size, sequence_length)، اختياري) — قيم رقمية عشرية لموجة الصوت الخام المُدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع .flac أو .wav في مصفوفة من النوع list[float] أو numpy.ndarray، على سبيل المثال باستخدام مكتبة torchcodec (pip install torchcodec) أو مكتبة soundfile (pip install soundfile). لتجهيز المصفوفة إلى input_values، يجب استخدام Wav2Vec2Processor لإضافة الحشو والتحويل إلى متجه من النوع torch.Tensor. راجع Wav2Vec2Processor.call() للتفاصيل.
  • input_features (torch.Tensor من الشكل (batch_size, sequence_length, feature_dim)، اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام feature_extractor_class. راجع feature_extractor_class.__call__ للتفاصيل (processor_class يستخدم feature_extractor_class لمعالجة الأصوات).
  • return_dict (bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.

يعيد

Seq2SeqLMOutput أو tuple(torch.Tensor)

Seq2SeqLMOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (SpeechEncoderDecoderConfig) والمدخلات.

تُعيد طريقة SpeechEncoderDecoderModel الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة.

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).

  • past_key_values (EncoderDecoderCache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • decoder_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد (batch_size, sequence_length, hidden_size).

    حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).

  • decoder_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.

  • encoder_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.

  • encoder_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • encoder_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 SpeechEncoderDecoderModel, AutoProcessor
>>> from datasets import load_dataset
>>> import torch

>>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
>>> model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").input_values
>>> # Inference: Translate English speech to German
>>> generated = model.generate(input_values)
>>> decoded = processor.batch_decode(generated, skip_special_tokens=True)[0]
>>> decoded
'Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.'

>>> # Training: Train model on English transcription
>>> labels = processor(text=ds[0]["text"], return_tensors="pt").input_ids

>>> loss = model(input_values, labels=labels).loss
>>> loss.backward()

from_encoder_decoder_pretrained

< >

( encoder_pretrained_model_name_or_path: str | None = Nonedecoder_pretrained_model_name_or_path: str | None = None*model_args**kwargs )

المعاملات

  • encoder_pretrained_model_name_or_path (str, اختياري) — المعلومات اللازمة لبدء تشغيل المُشفِّر. يمكن أن يكون:
    • سلسلة نصية، وهي معرّف النموذج لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co.
    • مسار إلى مجلد يحتوي على أوزان النموذج المحفوظة باستخدام save_pretrained()، على سبيل المثال ./my_model_directory/.
  • decoder_pretrained_model_name_or_path (str, اختياري, الافتراضي هو None) — المعلومات اللازمة لبدء تشغيل المُفكِّك. يمكن أن يكون:
    • سلسلة نصية، وهي معرّف النموذج لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co.
    • مسار إلى مجلد يحتوي على أوزان النموذج المحفوظة باستخدام save_pretrained()، على سبيل المثال ./my_model_directory/.
  • model_args (المتغيرات الموضعية المتبقية، اختياري) — سيتم تمرير جميع المتغيرات الموضعية المتبقية إلى طريقة __init__ الخاصة بالنموذج الأساسي.
  • kwargs (قائمة متبقية من معاملات الكلمات المفتاحية، اختياري) — يمكن استخدامه لتحديث كائن الإعداد (بعد تحميله) وإطلاق النموذج (مثل output_attentions=True).
    • لتحديث إعدادات المُشفِّر، استخدم البادئة encoder_ لكل معامل من معاملات الإعداد.
    • لتحديث إعدادات المُفكِّك، استخدم البادئة decoder_ لكل معامل من معاملات الإعداد.
    • لتحديث إعدادات النموذج الأب، لا تستخدم بادئة لكل معامل من معاملات الإعداد.

    يتصرف بشكل مختلف اعتماداً على ما إذا تم توفير config أو تم تحميله تلقائياً.

أنشئ مُشفِّرًا ومُفكِّكًا من فئة أو فئتين أساسيتين في المكتبة من نقاط تفتيش نماذج مُدرَّبة مسبقًا.

يُضبط النموذج على وضع التقييم افتراضياً باستخدام model.eval() (تُعطَّل وحدات Dropout). ولتدريب النموذج، يجب عليك أولاً إعادة ضبطه على وضع التدريب باستخدام model.train().

مثال:

>>> from transformers import SpeechEncoderDecoderModel

>>> # initialize a wav2vec2bert from a pretrained Wav2Vec2 and a pretrained BERT model. Note that the cross-attention layers will be randomly initialized
>>> model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
...     "facebook/wav2vec2-base-960h", "google-bert/bert-base-uncased"
... )
>>> # saving model after fine-tuning
>>> model.save_pretrained("./wav2vec2bert")
>>> # load fine-tuned model
>>> model = SpeechEncoderDecoderModel.from_pretrained("./wav2vec2bert")
Update on GitHub