Transformers documentation
Moshi
نُشر هذا النموذج في أوراق HF في 17 سبتمبر 2024، وأُضيف إلى مكتبة Hugging Face Transformers في 16 أكتوبر 2024.
Moshi
نظرة عامة
قُدِّم نموذج Moshi في Moshi: a speech-text foundation model for real-time dialogue بواسطة Alexandre Défossez و Laurent Mazaré و Manu Orsini و Amélie Royer و Patrick Pérez و Hervé Jégou و Edouard Grave و Neil Zeghidour.
Moshi هو نموذج أساسي للكلام والنص يعالج الحوار المنطوق على أنه توليد من الكلام إلى الكلام. انطلاقًا من هيكل نموذج لغة نصية، يولّد Moshi الكلام على شكل رموز من مُكمِّم الباقي (residual quantizer) لشفّار صوتي عصبي، مع نمذجة كلامه الخاص وكلام المستخدم بشكل منفصل في تدفقات متوازية. وهذا يتيح إزالة دورات المتحدثين الصريحة، ونمذجة ديناميكيات المحادثة التعسفية. كما يتنبأ Moshi برموز نصية متزامنة زمنيًا كبادئة لرموز الصوت. تحسّن طريقة «الحوار الداخلي» (Inner Monologue) هذه بشكل كبير الجودة اللغوية للكلام المولّد، وتوفر التعرف على الكلام البثي وتحويل النص إلى كلام. ونتيجةً لذلك، يُعد Moshi أول نموذج لغة كبير منطوق ثنائي الاتجاه الكامل في الوقت الفعلي، مع زمن استجابة نظري يبلغ 160 مللي ثانية، و200 مللي ثانية عمليًا.

المستخلص من الورقة البحثية هو كالتالي:
نقدّم Moshi، وهو نموذج أساسي للغة الصوتية والنصية وإطار عمل للمحادثة المنطوقة ثنائية الاتجاه بالكامل. تعتمد أنظمة المحادثة المنطوقة الحالية على خطوط أنابيب من مكوّنات مستقلة، وهي: كشف نشاط الصوت، التعرف على الكلام، الحوار النصي، وتحويل النص إلى كلام. لا تستطيع هذه الأطر محاكاة تجربة المحادثات الحقيقية. أولاً، تعقيد هذه الأنظمة يسبب تأخراً يصل إلى عدة ثوانٍ بين التفاعلات. ثانياً، بما أن النص هو الوسيط في الحوار، فإن المعلومات غير اللغوية التي تعدّل المعنى — مثل المشاعر أو الأصوات غير المنطوقة — تضيع أثناء التفاعل. وأخيراً، تعتمد هذه الأنظمة على تقسيم المحادثة إلى دورات متناوبة بين المتكلمين، وهو ما لا يأخذ في الاعتبار الكلام المتداخل، المقاطعات، والتدخلات اللفظية. يحل Moshi هذه المشكلات المستقلة جميعاً معاً من خلال صياغة المحادثة المنطوقة على أنها توليد من الكلام إلى الكلام. انطلاقاً من هيكل نموذج لغة نصية، يولّد Moshi الكلام على شكل رموز من مُكمِّم المتبقي (residual quantizer) في مُرمِّز صوتي عصبي، مع نمذجة كلامه الخاص وكلام المستخدم بشكل منفصل في تدفقات متوازية. وهذا يتيح إزالة دورات المتكلمين الصريحة، ونمذجة ديناميكيات المحادثة بشكل مرن. كما نوسّع طريقة التوليد الهرمي من الرموز الدلالية إلى الرموز الصوتية في الأعمال السابقة، بحيث يتنبأ أولاً برموز نصية متزامنة زمنياً كبادئة قبل الرموز الصوتية. لا تحسّن هذه الطريقة، المسماة «الحوار الداخلي» (Inner Monologue)، جودة الكلام المولّد لغوياً فحسب، بل نُوضّح أيضاً كيف يمكنها توفير التعرف على الكلام البثي وتحويل النص إلى كلام. النموذج الناتج هو أول نموذج لغة كبير منطوق ثنائي الاتجاه بالكامل في الوقت الفعلي، بتأخير نظري قدره 160 مللي ثانية، و200 مللي ثانية عملياً، وهو متاح على github.com/kyutai-labs/moshi.
يتعامل Moshi مع ثلاث تدفقات من المعلومات:
- صوت المستخدم
- صوت Moshi
- الناتج النصي لمودييل Moshi
وبنفس الطريقة في ~MusicgenModel، يتم تمثيل الصوت عبر كتالوجات رموز صوتية (audio codebooks) يمكن تفسيرها على أنها رموز (tokens). الفارق الرئيسي بين رموز النص وكتالوجات الرموز الصوتية هو أن الأخيرة تُدخل بُعدًا إضافيًا للمعلومات.
عادةً ما تكون أبعاد رموز النص (batch_size, sequence_length) بينما تكون أبعاد رموز الصوت (batch_size, num_codebooks, sequence_length).
يتكوّن Moshi من 3 مكوّنات:
1. المُفكِّك الرئيسي (Helium في الورقة البحثية)
يتوافق مع MoshiForCausalLM. وهو نموذج لغوي نصي كلاسيكي بحت، يستخدم بنية مشابهة لـ ~GemmaForCausalLM. بعبارة أخرى، يستقبل الرموز النصية، ويحوّلها إلى تمثيلات، ويمررها عبر المُفكِّك ورأس اللغة، للحصول على قيم الاحتمال النصية.
2. فكّ ترميز العمق
بحد ذاته، هو أيضاً نموذج لغوي كبير كلاسيكي، لكن هذه المرة، بدلاً من التوليد على بُعد الزمن، فإنه يولّد على بُعد كتاب الرموز.
كما يعني ذلك أن طول سياقه هو num_codebooks، وبالتالي لا يمكنه توليد أكثر من num_codebooks.
لاحظ أن كل طابع زمني - أي كل دفتر رموز - يحصل على مجموعة خاصة به من طبقات Linear وEmbeddings.
3. MimiModel
إنه مُرمِّز الصوت من Kyutai، الذي تم دمجه مؤخرًا في transformers، ويُستخدم لـ “رموزة” الصوت. وهو يؤدي نفس الدور الذي يؤديه ~EncodecModel في ~MusicgenModel.
نصائح
يمكن تحويل نقاط التفتيش الأصلية باستخدام سكربت التحويل src/transformers/models/moshi/convert_moshi_transformers.py
كيفية استخدام النموذج
لدى هذا التنفيذ هدفان رئيسيان:
- اختبار توليد النموذج بسرعة من خلال تبسيط واجهة برمجة التطبيقات الأصلية
- تبسيط التدريب. سيصدر دليل تدريب قريبًا، لكن مساهمات المستخدمين مرحّب بها!
تم تصميمه للاستخدام المتوسط. ننصح بشدة باستخدام التنفيذ الأصلي لاستدلال النموذج في البث المباشر.
1. توليد النموذج
Moshi هو نموذج ذاتي التتابع (auto-regressive) يعمل بالبث المباشر ويتضمن تدفقيين للصوت. بصيغة أخرى، يتوافق أحد تدفقي الصوت مع ما قاله النموذج/سيقوله، بينما يتوافق التدفق الآخر مع ما قاله المستخدم/سيقوله.
لذلك يحتاج MoshiForConditionalGeneration.generate() إلى 3 مدخلات:
input_ids- المقابلة لتاريخ رموز النصmoshi_input_valuesأوmoshi_audio_codes- المقابلة لتاريخ الصوت في النموذجuser_input_valuesأوuser_audio_codes- المقابلة لتاريخ صوت المستخدم
يجب أن تكون هذه المدخلات الثلاثة متزامنة. أي أن أطوالها يجب أن تتوافق مع نفس عدد الرموز.
يمكنك استخدام المدخلات الثلاثة الثلاثة ديناميكيًا اعتمادًا على ما تريد اختباره:
- يكفي التحقق من استجابة النموذج لموجّه المستخدم - في هذه الحالة، يمكن ملء
input_idsبرموز الحشو (pad tokens) ويمكن أن يكونuser_input_valuesمتجهًا صفريًا (zero tensor) بنفس شكل موجّه المستخدم. - اختبر سلوكًا أكثر تعقيدًا - في هذه الحالة، يجب أن تكون حريصًا بشأن كيفية مزامنة رموز الإدخال مع المقاطع الصوتية.
يتم مزامنة النص الأصلي مع الصوت عن طريق ملء الفراغات بين نطق كل رمز.
للتحري على مثال الصورة التالية، يمكن تحويل
"Hello, I'm Moshi"إلى"Hello,<pad><unk>I'm Moshi".

ثم يغذي MoshiForConditionalGeneration.generate() نفسه بشكل تلقائي تكراري (auto-regressive) بتدفق الصوت الخاص به، لكن بما أنه لا يملك وصولاً إلى تدفق مدخلات المستخدم عند استخدام transformers، فإنه سيعتبر أن المستخدم ينتج صوتاً فارغاً.
import math
import torch
from datasets import Audio, load_dataset
from transformers import AutoFeatureExtractor, AutoTokenizer
librispeech_dummy = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
feature_extractor = AutoFeatureExtractor.from_pretrained("kyutai/moshiko-pytorch-bf16")
tokenizer = AutoTokenizer.from_pretrained("kyutai/moshiko-pytorch-bf16")
dtype = torch.bfloat16
# prepare user input audio
librispeech_dummy = librispeech_dummy.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
audio_sample = librispeech_dummy[-1]["audio"]["array"]
user_input_values = feature_extractor(raw_audio=audio_sample, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt").to(device=device, dtype=dtype)
# prepare moshi input values - we suppose moshi didn't say anything while the user spoke
moshi_input_values = torch.zeros_like(user_input_values.input_values)
# prepare moshi input ids - we suppose moshi didn't say anything while the user spoke
num_tokens = math.ceil(moshi_input_values.shape[-1] * waveform_to_token_ratio)
input_ids = torch.ones((1, num_tokens), device=device, dtype=torch.int64) * tokenizer.encode("<pad>")[0]
# generate 25 new tokens (around 2s of audio)
output = model.generate(input_ids=input_ids, user_input_values=user_input_values.input_values, moshi_input_values=moshi_input_values, max_new_tokens=25)
text_tokens = output.sequences
audio_waveforms = output.audio_sequences2. تدريب النموذج
يجب إنجاز معظم العمل أثناء إنشاء البيانات/المعالجة المسبقة، بسبب الحاجة إلى محاذاة/مزامنة التدفقات.
بمجرد اكتمالها، يمكنك ببساطة تمرير text_labels وaudio_labels إلى MoshiForConditionalGeneration.forward()، إلى جانب المدخلات المعتادة، للحصول على خسارة النموذج.
ستصدر قريباً دليل تدريب، لكن مساهمات المستخدمين مرحّب بها!
كيف يمرّر النموذج المدخلات / يولّد
تُدمج تدفقات الإدخال وتُدمج معًا في
inputs_embeds.يُمرَّر
inputs_embedsعبر المُفكِّك الرئيسي، الذي يعالجه كما تفعل نماذج اللغة الكبيرة العادية.تُخرج وحدة فك الترميز الرئيسية
text logitsكما تُخرجlast hidden stateالخاص بها، والذي يُسمىtemporal contextفي الورقة البحثية.يبدّل مُفكّك العمق البُعد الذي نمرّر/نولّد عليه (كتب الرموز بدلاً من الزمن). فهو يستخدم الرمز المولّد من
text logitsوtemporal contextلتوليد كتب رموز الصوت بشكل ذاتي التراجع.
تمت مساهمة هذا النموذج من قِبل Yoach Lacombe (ylacombe).
يمكن العثور على الكود الأصلي هنا.
MoshiConfig
فئة transformers.MoshiConfig
< 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 = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32000hidden_size: int = 4096num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int | None = Noneaudio_vocab_size: int | None = Nonemax_position_embeddings: int = 3000rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonehidden_act: str = 'silu'head_dim: int | None = Noneinitializer_range: float = 0.02use_cache: bool = Truesliding_window: int = 3000attention_dropout: float | int = 0.0ffn_dim: int = 22528rms_norm_eps: float = 1e-08num_codebooks: int = 8tie_word_embeddings: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Noneaudio_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedepth_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )
المعاملات
- vocab_size (
int، اختياري، القيمة الافتراضية32000) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - hidden_size (
int، اختياري، القيمة الافتراضية4096) — أبعاد التمثيلات المخفية. - num_hidden_layers (
int، اختياري، القيمة الافتراضية32) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية32) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_key_value_heads (
int, اختياري) — هذا هو عدد رؤوس 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 عن طريق meanpooling جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع هذا الورقة. إذا لم يتم تحديد القيمة، فسيتم افتراضnum_attention_heads. - audio_vocab_size (
int, اختياري) — حجم قاموس الجزء الصوتي من النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةaudio_codesالمُمرَّرة عند استدعاء نماذج Moshi. - max_position_embeddings (
int، اختياري، القيمة الافتراضية3000) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قائمة تحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن تحتوي القائمة على قيمة لـrope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE معmax_position_embeddingsأطول. - hidden_act (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - head_dim (
int، اختياري) — بعد بُعد رأس الانتباه. إذا كان None، فسيتم افتراضه على hidden_size // num_attention_heads - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - use_cache (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - sliding_window (
int، اختياري، القيمة الافتراضية3000) — حجم نافذة الانتباه المنزلقة. إذا كانتNone، فلا تُطبَّق نافذة منزلقة. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - ffn_dim (
int، اختياري، القيمة الافتراضية 22528) — أبعاد طبقة “الوسيطة” (التي تُسمّى غالبًا طبقة التغذية الأمامية) في كتلة المُفكِّك الرئيسية. يجب أن تكون زوجية. - rms_norm_eps (
float، اختياري، القيمة الافتراضية1e-08) — قيمة الإيبسلون المستخدمة في طبقات تطبيع rms. - num_codebooks (
int، اختياري، القيمة الافتراضية8) — عدد كُتُب الرموز المتوازية التي يستخدمها النموذج. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم ربط ترميزات الأوزان وفقاً لخريطةtied_weights_keysالخاصة بالنموذج. - pad_token_id (
int, اختياري) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]], اختياري) — معرّف الرمز المستخدم لنهاية التدفق في المفردات. - audio_encoder_config (
PreTrainedConfig | dict، اختياري) — إعدادات مُشفِّر الصوت. - depth_decoder_config (
PreTrainedConfig | dict، اختياري) — إعدادات لفك ترميز العمق.
هذه فئة الإعدادات (configuration class) لتخزين إعدادات نموذج MoshiModel. تُستخدم لاستحداث نموذج Moshi وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ kmhf/hf-moshika
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import (
... MoshiConfig,
... MoshiForConditionalGeneration,
... )
>>> configuration = MoshiConfig()
>>> # Initializing a MoshiForConditionalGeneration (with random weights) from the kmhf/hf-moshika style configuration
>>> model = MoshiForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # Saving the model, including its configuration
>>> model.save_pretrained("kmhf/hf-moshika")
>>> # loading model and config from pretrained folder
>>> moshi_config = MoshiConfig.from_pretrained("kmhf/hf-moshika")
>>> model = MoshiForConditionalGeneration.from_pretrained("kmhf/hf-moshika", config=moshi_config)from_audio_encoder_config
< source >( audio_encoder_config: PreTrainedConfig**kwargs ) → MoshiConfig
يعيد
مثال من كائن التهيئة
أنشئ كائنًا من MoshiConfig (أو فئة مشتقة) من إعدادات مُشفِّر الصوت.
MoshiDepthConfig
فئة transformers.MoshiDepthConfig
< 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 = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32000hidden_size: int = 1024input_size: int = 4096num_hidden_layers: int = 6num_attention_heads: int = 16num_key_value_heads: int | None = Noneaudio_vocab_size: int = 2048max_position_embeddings: int = 9hidden_act: str = 'silu'head_dim: int | None = Noneinitializer_range: float = 0.02use_cache: bool = Truesliding_window: int = 8attention_dropout: float | int = 0.0ffn_dim: int = 5632rms_norm_eps: float = 1e-08num_codebooks: int = 8tie_word_embeddings: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = None )
المعاملات
- vocab_size (
int، اختياري، القيمة الافتراضية32000) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - hidden_size (
int، اختياري، القيمة الافتراضية1024) — أبعاد التمثيلات المخفية. - input_size (
int، اختياري، القيمة الافتراضية 4096) — أبعاد حالات الإدخال المخفية. يُستخدم لربط المُفكِّك الرئيسي بالمُفكِّك العميق. - num_hidden_layers (
int، اختياري، القيمة الافتراضية6) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية16) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_key_value_heads (
int, اختياري) — هذا هو عدد رؤوس 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 عن طريق meanpooling جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع هذا الورقة. إذا لم يتم تحديد القيمة، فسيتم افتراضnum_attention_heads. - audio_vocab_size (
int, اختياري، القيمة الافتراضية 2048) — حجم قاموس الجزء الصوتي من النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةaudio_codesالمُمرَّرة عند استدعاء نماذج Moshi. - max_position_embeddings (
int، اختياري، القيمة الافتراضية9) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق. - hidden_act (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - head_dim (
int، اختياري) — بعد بُعد رأس الانتباه. إذا كان None، فسيتم افتراضه على hidden_size // num_attention_heads - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - use_cache (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - sliding_window (
int، اختياري، القيمة الافتراضية8) — حجم نافذة الانتباه المنزلقة. إذا كانتNone، فلا تُطبَّق نافذة منزلقة. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - ffn_dim (
int، اختياري، القيمة الافتراضية 5632) — أبعاد طبقة “الوسيطة” (التي تُسمّى غالبًا بالطبقة الأمامية) في كتلة فك الترميز العميق. يجب أن تكون زوجية. - rms_norm_eps (
float، اختياري، القيمة الافتراضية1e-08) — قيمة الإيبسلون المستخدمة في طبقات تطبيع rms. - num_codebooks (
int، اختياري، القيمة الافتراضية8) — عدد كُتُب الرموز المتوازية التي يستخدمها النموذج. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم ربط ترميزات الأوزان وفقاً لخريطةtied_weights_keysالخاصة بالنموذج. - pad_token_id (
int, اختياري) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]], اختياري) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
هذه فئة الإعدادات (configuration class) لتخزين إعدادات نموذج MoshiModel. تُستخدم لاستحداث نموذج Moshi وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ kmhf/hf-moshika
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import (
... MoshiDepthConfig,
... MoshiDepthDecoder,
... )
>>> configuration = MoshiDepthConfig()
>>> # Initializing a MoshiDepthDecoder (with random weights) from the kmhf/hf-moshika style configuration
>>> model = MoshiDepthDecoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMoshiModel
فئة transformers.MoshiModel
< source >( config: MoshiConfig )
المعاملات
- config (MoshiConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Moshi الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- position_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - 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). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
BaseModelOutputWithPast أو tuple(torch.Tensor)
BaseModelOutputWithPast أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (MoshiConfig) والمدخلات.
تتجاوز طريقة MoshiModel الخاصة بالتقديم (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 (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان
config.is_encoder_decoder=True) يمكن استخدامها (انظر مدخلpast_key_values) لتسريع فك الترميز التسلسلي.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
MoshiForCausalLM
فئة transformers.MoshiForCausalLM
< source >( config: MoshiConfig )
المعاملات
- config (MoshiConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج فك الترميز Moshi مع رأس لنمذجة اللغة النصية في الأعلى. قابل للاستخدام للنص فقط.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoshiCausalLMOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- position_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - 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). - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن[0, ..., config.vocab_size]أو -100 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - logits_to_keep (
Union[int, torch.Tensor]، اختياري، القيمة الافتراضية0) — إذا كانint، يتم حساب logits لآخرlogits_to_keepرموز. إذا كانت القيمة0، يتم حساب logits لجميعinput_ids(حالة خاصة). لا يُحتاج إلى logits إلا للرمز الأخير في عملية التوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر مهم بشكل ملحوظ للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كانtorch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).
يعيد
MoshiCausalLMOutputWithPast أو tuple(torch.Tensor)
MoshiCausalLMOutputWithPast أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على التهيئة (MoshiConfig) والمدخلات.
تتجاوز طريقة MoshiForCausalLM الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل
past_key_values) لتسريع فك الترميز التسلسلي.hidden_states (
tuple[torch.Tensor, ...]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple[torch.Tensor, ...]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoTokenizer, MoshiForCausalLM
>>> model = MoshiForCausalLM.from_pretrained("kmhf/hf-moshika")
>>> tokenizer = AutoTokenizer.from_pretrained("kmhf/hf-moshika")
>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"What is your favorite condiment?"MoshiForConditionalGeneration
فئة transformers.MoshiForConditionalGeneration
< source >( config: MoshiConfig )
المعاملات
- config (MoshiConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Moshi الأصلي مع مُشفِّر صوتي ومُفكِّك عمق Moshi ومُفكِّك Moshi، لتحويل الكلام إلى كلام.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Noneuser_input_values: typing.Optional[torch.Tensor] = Noneuser_audio_codes: typing.Optional[torch.Tensor] = Nonemoshi_input_values: typing.Optional[torch.Tensor] = Nonemoshi_audio_codes: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonetext_labels: typing.Optional[torch.LongTensor] = Noneaudio_labels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → MoshiConditionalGenerationOutputWithPast or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.BoolTensorمن الشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- user_input_values (
torch.Tensorمن الشكل `(batch_size, 1, audio_sequence_length), اختياري) — موجات الصوت المستخدمة كموجّه صوتي للمستخدم في عملية التوليد. - user_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority overuser_input_valuesand represents the audio "tokens" ofuser_input_values` once passed through the audio encoder. - moshi_input_values (
torch.Tensorمن الشكل `(batch_size, 1, audio_sequence_length), اختياري) — موجات الصوت المستخدمة كموجّه صوتي لمودييل Moshi في عملية التوليد. - moshi_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority overmoshi_input_valuesand represents the audio "tokens" ofmoshi_input_values` once passed through the audio encoder. - 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). - inputs_embeds (
torch.Tensorبشكل(batch_size, sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمريرinput_idsيمكنك اختيار تمرير تمثيل مضمّن مباشرةً. إذاpast_key_valuesاستُخدم، فاختياريًا يجب إدخال آخرinputs_embedsفقط (انظرpast_key_values). هذا مفيد إذا كنت تريد مزيدًا من التحكم في كيفية تحويلinput_idsالفهارس إلى المتجهات المرتبطة بها مقارنةً بمصفوفة البحث التضمينية الداخلية للنموذج.إذا كان كلا من
input_idsوinputs_embedsغير مُعيَّنين، فإنinputs_embedsيأخذ قيمةinputs_embeds. - text_labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لنمذجة اللغة النصية. لاحظ أن التسميات تُزاح داخل النموذج، أي يمكنك تعيينlabels = input_idsيتم اختيار الفهارس من[-100, 0, ..., config.vocab_size]جميع التسميات المعينة إلى-100تُتجاهل (تُخفى)، ولا يُحسب الخسارة إلا للتسميات الموجودة في[0, ..., config.vocab_size] - audio_labels (
torch.LongTensorمن الشكل(batch_size, num_codebooks, sequence_length)، اختياري) — تسميات لنمذجة اللغة. لاحظ أن التسميات تُزاح داخل النموذج، أي يمكنك تعيينlabels = input_idsيتم اختيار الفهارس من[-100, 0, ..., config.vocab_size]جميع التسميات المعينة إلى-100تُتجاهل (تُقنَّع)، ولا يُحسب الخسارة إلا للتسميات في[0, ..., config.audio_vocab_size] - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values).
يعيد
MoshiConditionalGenerationOutputWithPast أو tuple(torch.Tensor)
MoshiConditionalGenerationOutputWithPast أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر
مختلفة اعتمادًا على الإعداد (MoshiConfig) والمدخلات.
تتجاوز طريقة MoshiForConditionalGeneration الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرtext_labels) — خسارة نمذجة اللغة للنص (لتوقع الرمز التالي).logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة النصية (درجات لكل رمز في المفردات قبل SoftMax).last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل
past_key_values) لتسريع فك الترميز التسلسلي.hidden_states (
tuple[torch.Tensor, ...]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple[torch.Tensor, ...]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
depth_loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرaudio_labels) — خسارة نمذجة لغة الصوت (لتوقع الرمز التالي).audio_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرؤوس نمذجة اللغة الصوتية.depth_past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عندconfig.use_cache=True) — قيم المفاتيح السابقة لفكّ الترميز العميق.depth_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — حالات المخفية لمفكك ترميز العمقdepth_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — أوزان انتباه مُفكِّك العمق بعد دالة softmax للانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> from transformers import MoshiForConditionalGeneration
>>> import torch
>>> model = MoshiForConditionalGeneration.from_pretrained("kmhf/hf-moshika")
>>> inputs = moshi.get_unconditional_inputs()
>>> logits = model(**inputs, ).logits
>>> logits.shape # (bsz, seq_len, text_vocab_size)
torch.Size([1, 1, 32000])generate
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneuser_input_values: typing.Optional[torch.Tensor] = Noneuser_audio_codes: typing.Optional[torch.Tensor] = Nonemoshi_input_values: typing.Optional[torch.Tensor] = Nonemoshi_audio_codes: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonereturn_audio_waveforms: bool | None = Truereturn_audio_codes: bool | None = Noneconcat_unconditional_inputs: bool | None = True**kwargs )
المعاملات
- input_ids (
torch.Tensorمن الشكل `(batch_size, sequence_length), اختياري) — التسلسل المستخدم كموجّه نصي للتوليد. - user_input_values (
torch.Tensorمن الشكل `(batch_size, 1, audio_sequence_length), اختياري) — موجات الصوت المستخدمة كموجّه صوتي للمستخدم في عملية التوليد. - user_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority overuser_input_valuesand represents the audio "tokens" ofuser_input_values` once passed through the audio encoder. - moshi_input_values (
torch.Tensorمن الشكل `(batch_size, 1, audio_sequence_length), اختياري) — موجات الصوت المستخدمة كموجّه صوتي لمودييل Moshi في عملية التوليد. - moshi_audio_codes (
torch.Tensorof shape(batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority overmoshi_input_valuesand represents the audio "tokens" ofmoshi_input_values` once passed through the audio encoder. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_idsومدخلات الصوت، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل المدخلات إلى متجهات مرتبطة بها مقارنةً بمصفوفة البحث التضميني الداخلية للنموذج. - return_audio_waveforms (
bool، اختياري، القيمة الافتراضيةTrue) — إذا كانتFalse، فلن يتم توليد موجات الصوت. - return_audio_codes (
bool، اختياري) — إذا كانTrue، فسيُعاد أيضًا رموز الصوت المولّدة، أي رموز الصوت الوسيطة التي تتحول إلىaudio_sequencesبعد مرورها عبر مُفكّك الصوت. - concat_unconditional_inputs (
bool، اختياري، القيمة الافتراضيةTrue) — إذا كانتFalse، فلن يتم دمج رموز الصوت والنص الأولية. - kwargs (
dict[str, Any], optional) — Remaining dictionary of keyword arguments that are passed to thegeneratemethod. Refers to the originalgeneratedocstrings for more information on how to use them. Note that keywords with a depth_ prefix will be input for thegeneratemethod of the depth decoder. Otherwise, the latter will use its default generation config.
يولّد تسلسلات من معرّفات رموز النص ومعرّفات رموز الصوت.
get_unconditional_inputs
< source >( num_samples = 1 )
دالة مساعدة للحصول على مدخلات فارغة (null) للتوليد غير الشرطي، مما يتيح استخدام النموذج دون الحاجة إلى مستخرج الميزات أو المرمّز.
مثال:
>>> from transformers import MoshiForConditionalGeneration
>>> model = MoshiForConditionalGeneration.from_pretrained("kmhf/hf-moshika")
>>> # get the unconditional (or 'null') inputs for the model
>>> unconditional_inputs = model.get_unconditional_inputs(num_samples=1)
>>> audio_samples = model.generate(**unconditional_inputs, max_new_tokens=256)