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 في 17 سبتمبر 2025، وسُهم به إلى Hugging Face Transformers في 31 أغسطس 2026.

SDPA

كاناري

نظرة عامة

قُدِّم نموذج Canary-1B-v2 & Parakeet-TDT-0.6B-v3: Efficient and High-Performance Models for Multilingual ASR and AST بواسطة Monica Sekoyan وNithin Rao Koluguri وNune Tadevosyan وPiotr Zelasko وTravis Bartley وNikolay Karpov وJagadeesh Balam وBoris Ginsburg.

المستخلص من الورقة البحثية هو كالتالي:

يُقدّم هذا التقرير نموذج Canary-1B-v2، وهو نموذج متعدد اللغات سريع ومتين للتعرف التلقائي على الكلام (ASR) والترجمة من الكلام إلى النص (AST). بُني النموذج باستخدام مُشفِّر FastConformer ومُفكِّك Transformer، ويدعم 25 لغة أوروبية. تم تدريب النموذج على 1.7 مليون ساعة من إجمالي عينات البيانات، بما في ذلك Granary وNeMo ASR Set 3.0، مع إضافة صوت غير كلامي لتقليل الهلوسة في ASR وAST. نصف عملية التدريب المسبق والتدريب الدقيق على مرحلتين مع موازنة ديناميكية للبيانات، بالإضافة إلى تجارب باستخدام مُشفِّر nGPT. تُظهر النتائج أن nGPT يتوسع بشكل جيد مع البيانات الضخمة، بينما يتفوق FastConformer بعد التدريب الدقيق. فيما يتعلق بالطوابع الزمنية، يستخدم Canary-1B-v2 المحاذاة الإجبارية NeMo (NFA) مع نموذج CTC مساعد، مما يوفر طوابع زمنية موثوقة على مستوى المقاطع لـ ASR وAST. تُظهر التقييمات أن Canary-1B-v2 يتفوق على Whisper-large-v3 في ASR باللغة الإنجليزية مع كونه أسرع بـ 10 أضعاف، ويقدّم أداءً تنافسياً في ASR وAST متعدد اللغات مقارنةً بنماذج أكبر مثل Seamless-M4T-v2-large والأنظمة القائمة على LLM. كما نُصدر Parakeet-TDT-0.6B-v3، وهو خليفة الإصدار v2، ويوفر ASR متعدد اللغات عبر نفس اللغات الـ 25 بمجرّد 600 مليون معامل.

يعيد Fast Conformer استخدام مُشفِّر Parakeet (يُحمَّل عبر ParakeetEncoder / ParakeetEncoderConfig) ويقرنه بمُفكِّك Transformer يستخدم تضمينات موضعية جيبية ثابتة، وانتباهًا متقاطعًا إلى مخرجات المُشفِّر، وتضمينات مدخلات/مخرجات مرتبطة. يتم اختيار المهمة عبر بادئة موجه للمُفكِّك تُنشئها CanaryProcessor على الشكل <|startofcontext|> <|startoftranscript|> <|emo:undefined|> <source_lang> <target_lang> <pnc|nopnc> <|noitn|> <|notimestamp|> <|nodiarize|>، حيث يختار source_lang == target_lang النسخ الصوتي، بينما يختار غير ذلك الترجمة.

يمكن العثور على التنفيذ الأصلي في NVIDIA NeMo. يتوفر نقطة تفتيش للنموذج في nvidia/canary-1b-v2.

تمت مساهمة هذا النموذج من قِبل Harshal Janjani.

تُنتَج الطوابع الزمنية على مستوى المقاطع لنموذج Canary-1B-v2 بواسطة المحاذاة الإجبارية الخارجية NeMo Forced Aligner (NFA) مع نموذج CTC مساعد، وليس بواسطة المُفكِّك، لذا فهي ليست جزءاً من مخرجات generate.

الاستخدام

النسخ

أبسط طريقة لتحويل الصوت إلى نص هي استخدام apply_transcription_request، حيث يقوم ببناء موجه مُفكِّك المهام المتعددة نيابةً عنك (فهو غلاف ميسِّر لـ apply_chat_template).

from datasets import load_dataset, Audio
from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq

processor = AutoProcessor.from_pretrained("nvidia/canary-1b-v2")
model = AutoModelForSpeechSeq2Seq.from_pretrained("nvidia/canary-1b-v2", device_map="auto")

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

inputs = processor.apply_transcription_request(audio=ds[0]["audio"]["array"], source_language="en").to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=128)
print(processor.decode(generated_ids, skip_special_tokens=True)[0])

الترجمة

اضبط target_language على لغة مختلفة عن source_language للترجمة من الكلام إلى النص.

...

inputs = processor.apply_transcription_request(
    audio=ds[0]["audio"]["array"], source_language="en", target_language="de"
).to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=128)
print(processor.decode(generated_ids, skip_special_tokens=True)[0])

الاستدلال الدُفعي

مرر قائمة من المقاطع الصوتية، وقائمة اختيارية من source_language / target_language.

...

audios = [ds[0]["audio"]["array"], ds[1]["audio"]["array"]]
# single entries get broadcasted to list
inputs = processor.apply_transcription_request(
    audio=audios, source_language="en", target_language=["en", "de"]
).to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=128)
for text in processor.decode(generated_ids, skip_special_tokens=True):
    print(text)

Torch compile

في حالة النسخ التلقائي (autoregressive transcription)، يُسرّع torch.compile عمليات المرور الأمامي لكل رمز داخل generate من خلال توفير كائن CompileConfig.

...

from transformers import CompileConfig

inputs = processor.apply_transcription_request(audio=ds[0]["audio"]["array"], source_language="en").to(model.device)
compile_config = CompileConfig()

# Warmup
for _ in range(3):
    _ = model.generate(**inputs, max_new_tokens=128, cache_implementation="static", compile_config=compile_config)

# Apply model
generated_ids = model.generate(**inputs, max_new_tokens=128, cache_implementation="static", compile_config=compile_config)
print(processor.decode(generated_ids, skip_special_tokens=True)[0])

التدريب

مرّر النصوص المستهدفة إلى apply_transcription_request باستخدام transcription، وتُستخدم labels المُعادَة لحساب الخسارة.

from datasets import Audio, load_dataset
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "nvidia/canary-1b-v2"
NUM_SAMPLES = 2

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")
model.train()

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el["array"] for el in ds["audio"][:NUM_SAMPLES]]
text_samples = ds["text"][:NUM_SAMPLES]

inputs = processor.apply_transcription_request(speech_samples, source_language="en", transcription=text_samples)
inputs.to(model.device, dtype=model.dtype)

loss = model(**inputs).loss
print("Loss:", loss.item())
loss.backward()

CanaryConfig

فئة transformers.CanaryConfig

< >

( 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 = Trueencoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedecoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneuse_cache: bool = Truetie_word_embeddings: bool = Truepad_token_id: int | None = 2bos_token_id: int | None = 4eos_token_id: int | None = 3decoder_start_token_id: int | None = 7initializer_range: float = 0.02vocab_size: int = 16384 )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • encoder_config (Union[dict, ParakeetEncoderConfig]، اختياري) — كائن الإعداد أو قاموس مشفّر FastConformer (ParakeetEncoderConfig).
  • decoder_config (Union[dict, CanaryDecoderConfig]، اختياري) — كائن الإعدادات أو قاموس مُفكِّك Transformer (CanaryDecoderConfig).
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.
  • pad_token_id (int، اختياري، القيمة الافتراضية 2) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • bos_token_id (int، اختياري، القيمة الافتراضية 4) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • eos_token_id (int, اختياري، القيمة الافتراضية 3) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
  • decoder_start_token_id (int, اختياري، القيمة الافتراضية 7) — معرّف الرمز الذي يبدأ فك الترميز (<|startofcontext|>، الرمز الأول في موجه المهام المتعددة).
  • initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • vocab_size (int، اختياري، القيمة الافتراضية 16384) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.

هذه فئة الإعدادات المخزنة لإعدادات نموذج CanaryModel. تُستخدم لاستحداث نموذج Canary وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ nvidia/canary-1b-v2

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

مثال:

>>> from transformers import CanaryForConditionalGeneration, CanaryConfig

>>> # Initializing a Canary configuration
>>> configuration = CanaryConfig()

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

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

CanaryDecoderConfig

فئة transformers.CanaryDecoderConfig

< >

( 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 = Truevocab_size: int = 16384hidden_size: int = 1024intermediate_size: int = 4096num_hidden_layers: int = 8num_attention_heads: int = 8num_key_value_heads: int = 8hidden_act: str = 'relu'max_position_embeddings: int = 1024initializer_range: float = 0.02use_cache: bool = Truepad_token_id: int | None = 2bos_token_id: int | None = 4eos_token_id: int | None = 3attention_bias: bool = Trueattention_dropout: int | float | None = 0.0head_dim: int = 128 )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • vocab_size (int، اختياري، القيمة الافتراضية 16384) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.
  • hidden_size (int، اختياري، القيمة الافتراضية 1024) — أبعاد التمثيلات المخفية.
  • intermediate_size (int، اختياري، القيمة الافتراضية 4096) — أبعاد تمثيلات MLP.
  • num_hidden_layers (int، اختياري، القيمة الافتراضية 8) — عدد الطبقات المخفية في مُفكِّك Transformer.
  • num_attention_heads (int، اختياري، القيمة الافتراضية 8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.
  • num_key_value_heads (int، اختياري، القيمة الافتراضية 8) — هذا هو عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كان num_key_value_heads=num_attention_heads، فسيستخدم النموذج Multi Head Attention (MHA)، وإذا كان num_key_value_heads=1 فسيستخدم النموذج Multi Query Attention (MQA)، وإلا فسيتم استخدام GQA. عند تحويل نقطة تفتيش متعددة الرؤوس إلى نقطة تفتيش GQA، يجب بناء كل مجموعة من رؤوس key و value عن طريق تجميع المتوسط لجميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع هذا الورقة. إذا لم يتم تحديد القيمة، فستكون القيمة الافتراضية هي num_attention_heads.
  • hidden_act (str، اختياري، القيمة الافتراضية relu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وغيرها.
  • max_position_embeddings (int، اختياري، القيمة الافتراضية 1024) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق.
  • initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • pad_token_id (int، اختياري، القيمة الافتراضية 2) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • bos_token_id (int، اختياري، القيمة الافتراضية 4) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • eos_token_id (int, اختياري، القيمة الافتراضية 3) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
  • attention_bias (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.
  • attention_dropout (Union[int, float]، اختياري، القيمة الافتراضية 0.0) — نسبة الإسقاط (dropout) لاحتمالات الانتباه.
  • head_dim (int، اختياري، القيمة الافتراضية 128) — بعد رأس الانتباه. إذا كانت القيمة None، فستكون القيمة الافتراضية هي hidden_size // num_attention_heads

هذه فئة الإعدادات المخزنة لإعدادات نموذج CanaryModel. تُستخدم لاستحداث نموذج Canary وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ nvidia/canary-1b-v2

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

>>> from transformers import CanaryDecoderModel, CanaryDecoderConfig

>>> # Initializing a CanaryDecoder canary_decoder-7b style configuration
>>> configuration = CanaryDecoderConfig()

>>> # Initializing a model from the canary_decoder-7b style configuration
>>> model = CanaryDecoderModel(configuration)

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

CanaryProcessor

فئة transformers.CanaryProcessor

< >

( feature_extractor = Nonetokenizer = Nonechat_template = None )

المعاملات

  • feature_extractor (ParakeetFeatureExtractor) — مستخرج الميزات هو مدخل مطلوب.
  • tokenizer (TokenizersBackend) — المُجزِّئ (tokenizer) هو مدخل إلزامي.
  • chat_template (str) — قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتجزئة.

ينشئ CanaryProcessor الذي يغلّف مستخرج الميزات ومقسّم الرموز في معالج واحد.

يوفر CanaryProcessor جميع وظائف ParakeetFeatureExtractor وTokenizersBackend. راجع ~ParakeetFeatureExtractor و~TokenizersBackend لمزيد من المعلومات.

apply_transcription_request

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], list[typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]]]source_language: str | list[str] = 'en'target_language: str | list[str] | None = Nonepunctuation: bool = Truetranscription: str | list[str] | None = Nonetokenize: bool = True**kwargs: *<class 'transformers.models.canary.processing_canary.CanaryProcessorKwargs'> ) → BatchFeature or list[str]

المعاملات

  • audio (AudioInput أو list[AudioInput]) — الصوت المراد تحويله إلى نص أو ترجمته. يمكن أن يكون نصًا يحتوي على رابط (URL)، أو مسارًا محليًا، أو مصفوفة numpy، أو قائمة من هذه العناصر.
  • source_language (str أو list[str]، اختياري، القيمة الافتراضية "en") — لغة الكلام المدخل. يقبل رموز ISO (مثل "en"، "de"، "fr") أو الأسماء الكاملة (مثل "English"، "German"، "French").
  • target_language (str أو list[str]، اختياري) — لغة النص الناتج. يقبل رموز ISO أو الأسماء الكاملة. القيمة الافتراضية هي source_language (نسخة صوتية)؛ اضبطها على لغة مختلفة للترجمة من الكلام إلى النص.
  • punctuation (bool، اختياري، الافتراضي True) — ما إذا كان يجب طلب علامات الترقيم وأحرف البداية الكبيرة في المخرجات.
  • transcription (str أو list[str]، اختياري) — النص(النصوص) المستهدف(الاستهداف) (أو الترجمات) للتدريب، نص واحد لكل ملف صوتي. عند تقديمه، يُكتب كل نص كدور المساعد وتُعاد labels (انظر output_labels في __call__()).
  • tokenize (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم ترميز الأوامر (prompts) ومعالجة الصوت. إذا كانت القيمة False، فلن يتم تحميل الصوت وتُعاد الأوامر كنصوص مع بقاء محددات الصوت (audio placeholders) دون توسيع. عند تمريرها مع الصوت إلى المعالج، processor(text=prompts, audio=audio)، تُنتج نفس المخرجات كما لو كانت tokenize=True.
  • **kwargs — حجج إضافية بالكلمات المفتاحية تُمرَّر إلى apply_chat_template(). يجب تمرير حجج المعالج (مثل text_kwargs، audio_kwargs، …) على النحو processor_kwargs={...}.

يعيد

BatchFeature أو list[str]

موجّه واحد لكل ملف صوتي عندما يكون tokenize=False، وإلا فإن المعالج يُخرج مخرجات جاهزة للتقديم إلى CanaryForConditionalGeneration.generate()، أو إلى CanaryForConditionalGeneration.forward() لحساب الخسارة عندما يُعطى transcription.

جهّز المدخلات للنسخ أو الترجمة دون كتابة قالب المحادثة يدويًا، سواء للاستدلال أو، عند تقديم transcription، للتدريب.

CanaryModel

فئة transformers.CanaryModel

< >

( config: CanaryConfig )

المعاملات

  • config (CanaryConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Canary الصافي (مُشفِّر FastConformer + مُفكِّك Transformer) الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.Tensor)

المعاملات

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

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

  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.

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

    ما هي معرّفات مدخلات المُفكِّك؟

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

    إذا لم يتم تعيين كلٍّ من decoder_input_ids وdecoder_inputs_embeds، فإن decoder_inputs_embeds يأخذ قيمة inputs_embeds.

  • decoder_position_ids (torch.LongTensor من الشكل (batch_size, target_sequence_length)) — فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. تُستخدم لحساب تضمينات المواضع حتى config.decoder_config.max_position_embeddings
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).

يعيد

Seq2SeqModelOutput أو tuple(torch.Tensor)

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

تتجاوز طريقة CanaryModel الخاصة بـ forward الطريقة الخاصة __call__.

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

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

    إذا تم استخدام past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل (batch_size, 1, hidden_size) هي التي تُخرج.

  • 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) عند مخرج كل طبقة، بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

>>> import torch
>>> from transformers import AutoFeatureExtractor, CanaryModel
>>> from datasets import load_dataset

>>> model = CanaryModel.from_pretrained("UsefulSensors/canary-tiny")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("UsefulSensors/canary-tiny")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 288]

CanaryForConditionalGeneration

فئة transformers.CanaryForConditionalGeneration

< >

( config: CanaryConfig )

المعاملات

  • config (CanaryConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Canary مع رأس نمذجة اللغة. يمكن استخدامه للتعرف التلقائي متعدد اللغات على الكلام وترجمة الكلام إلى نص.

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)

المعاملات

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

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

  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.

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

    ما هي معرّفات مدخلات المُفكِّك؟

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

    إذا لم يتم تعيين كلٍّ من decoder_input_ids وdecoder_inputs_embeds، فإن decoder_inputs_embeds يأخذ قيمة inputs_embeds.

  • decoder_position_ids (torch.LongTensor من الشكل (batch_size, target_sequence_length)) — فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. تُستخدم لحساب تضمينات المواضع حتى config.decoder_config.max_position_embeddings
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).
  • labels (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -100 (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size].

يعيد

Seq2SeqLMOutput أو tuple(torch.Tensor)

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

تُعيد طريقة CanaryForConditionalGeneration الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

>>> import torch
>>> from transformers import AutoProcessor, CanaryForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("UsefulSensors/canary-tiny")
>>> model = CanaryForConditionalGeneration.from_pretrained("UsefulSensors/canary-tiny")

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

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(input_features, max_new_tokens=100)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
'Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'
Update on GitHub