Transformers documentation

Moshi

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

Moshi

FlashAttention SDPA

نظرة عامة

قُدِّم نموذج 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 مع ثلاث تدفقات من المعلومات:

  1. صوت المستخدم
  2. صوت Moshi
  3. الناتج النصي لمودييل 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. اختبار توليد النموذج بسرعة من خلال تبسيط واجهة برمجة التطبيقات الأصلية
  2. تبسيط التدريب. سيصدر دليل تدريب قريبًا، لكن مساهمات المستخدمين مرحّب بها!

تم تصميمه للاستخدام المتوسط. ننصح بشدة باستخدام التنفيذ الأصلي لاستدلال النموذج في البث المباشر.

1. توليد النموذج

Moshi هو نموذج ذاتي التتابع (auto-regressive) يعمل بالبث المباشر ويتضمن تدفقيين للصوت. بصيغة أخرى، يتوافق أحد تدفقي الصوت مع ما قاله النموذج/سيقوله، بينما يتوافق التدفق الآخر مع ما قاله المستخدم/سيقوله.

لذلك يحتاج MoshiForConditionalGeneration.generate() إلى 3 مدخلات:

  1. input_ids - المقابلة لتاريخ رموز النص
  2. moshi_input_values أو moshi_audio_codes - المقابلة لتاريخ الصوت في النموذج
  3. user_input_values أو user_audio_codes - المقابلة لتاريخ صوت المستخدم

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

يمكنك استخدام المدخلات الثلاثة الثلاثة ديناميكيًا اعتمادًا على ما تريد اختباره:

  1. يكفي التحقق من استجابة النموذج لموجّه المستخدم - في هذه الحالة، يمكن ملء input_ids برموز الحشو (pad tokens) ويمكن أن يكون user_input_values متجهًا صفريًا (zero tensor) بنفس شكل موجّه المستخدم.
  2. اختبر سلوكًا أكثر تعقيدًا - في هذه الحالة، يجب أن تكون حريصًا بشأن كيفية مزامنة رموز الإدخال مع المقاطع الصوتية.

يتم مزامنة النص الأصلي مع الصوت عن طريق ملء الفراغات بين نطق كل رمز.

للتحري على مثال الصورة التالية، يمكن تحويل "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_sequences

2. تدريب النموذج

يجب إنجاز معظم العمل أثناء إنشاء البيانات/المعالجة المسبقة، بسبب الحاجة إلى محاذاة/مزامنة التدفقات.

بمجرد اكتمالها، يمكنك ببساطة تمرير text_labels وaudio_labels إلى MoshiForConditionalGeneration.forward()، إلى جانب المدخلات المعتادة، للحصول على خسارة النموذج.

ستصدر قريباً دليل تدريب، لكن مساهمات المستخدمين مرحّب بها!

كيف يمرّر النموذج المدخلات / يولّد

  1. تُدمج تدفقات الإدخال وتُدمج معًا في inputs_embeds.

  2. يُمرَّر inputs_embeds عبر المُفكِّك الرئيسي، الذي يعالجه كما تفعل نماذج اللغة الكبيرة العادية.

  3. تُخرج وحدة فك الترميز الرئيسية text logits كما تُخرج last hidden state الخاص بها، والذي يُسمى temporal context في الورقة البحثية.

  4. يبدّل مُفكّك العمق البُعد الذي نمرّر/نولّد عليه (كتب الرموز بدلاً من الزمن). فهو يستخدم الرمز المولّد من text logits وtemporal context لتوليد كتب رموز الصوت بشكل ذاتي التراجع.

تمت مساهمة هذا النموذج من قِبل Yoach Lacombe (ylacombe).

يمكن العثور على الكود الأصلي هنا.

MoshiConfig

فئة transformers.MoshiConfig

< >

( 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

< >

( audio_encoder_config: PreTrainedConfig**kwargs ) → MoshiConfig

يعيد

MoshiConfig

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

أنشئ كائنًا من MoshiConfig (أو فئة مشتقة) من إعدادات مُشفِّر الصوت.

MoshiDepthConfig

فئة transformers.MoshiDepthConfig

< >

( 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.config

MoshiModel

فئة transformers.MoshiModel

< >

( config: MoshiConfig )

المعاملات

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

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

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

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

forward

< >

( 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

< >

( config: MoshiConfig )

المعاملات

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

نموذج فك الترميز Moshi مع رأس لنمذجة اللغة النصية في الأعلى. قابل للاستخدام للنص فقط.

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

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

forward

< >

( 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_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -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.Tensor of 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

< >

( config: MoshiConfig )

المعاملات

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

نموذج Moshi الأصلي مع مُشفِّر صوتي ومُفكِّك عمق Moshi ومُفكِّك Moshi، لتحويل الكلام إلى كلام.

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

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

forward

< >

( 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.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority over user_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.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority over moshi_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.Tensor of 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

< >

( 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.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio user prompt for the generation. Has priority over user_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.Tensor of shape (batch_size, num_codebooks, sequence_length), *optional*) -- The audio codes used as audio Moshi prompt for the generation. Has priority over moshi_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 the generate method. Refers to the original generate docstrings for more information on how to use them. Note that keywords with a depth_ prefix will be input for the generate method of the depth decoder. Otherwise, the latter will use its default generation config.

يولّد تسلسلات من معرّفات رموز النص ومعرّفات رموز الصوت.

get_unconditional_inputs

< >

( num_samples = 1 )

المعاملات

  • num_samples (int, اختياري) — عدد عينات الصوت التي سيتم توليدها بشكل غير مشروط.
  • max_new_tokens (int, اختياري) — عدد الرموز التي سيتم توليدها لكل عينة. كلما زاد عدد الرموز، أصبحت عينات الصوت أطول، على حساب زمن الاستدلال الأطول (حيث يجب توليد المزيد من رموز الصوت لكل عينة).

دالة مساعدة للحصول على مدخلات فارغة (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)
Update on GitHub