# Moshi

## Genel Bakış

Moshi modeli, Alexandre Défossez, Laurent Mazaré, Manu Orsini, Amélie Royer, Patrick Pérez, Hervé Jégou, Edouard Grave ve Neil Zeghidour tarafından [Moshi: a speech-text foundation model for real-time dialogue](https://huggingface.co/papers/2410.00037) adlı çalışmada önerilmiştir.

Moshi, konuşulan diyaloğu konuşmadan konuşmaya üretim olarak ele alan bir konuşma-metin temel modelidir. Metin dil modeli omurgasından yola çıkan Moshi, sinirsel ses kodlayıcısının artıksal kuantizatöründen token'lar olarak ses üretirken, kendi sesini ve kullanıcının sesini ayrı ayrı paralel akışlarda modeler. Bu, açık konuşmacı sıralarının kaldırılmasına ve keyfi konuşma dinamiklerinin modellenmesine olanak tanır. Moshi ayrıca, ses token'larının bir öneki olarak zamanla hizalı metin token'larını tahmin eder. Bu “Inner Monologue” yöntemi, üretilen sesin dilbilimsel kalitesini önemli ölçüde artırır ve akışkan ses tanıma ile metinden sese çevirisi sağlar. Sonuç olarak Moshi, teorik gecikmesi 160 ms, pratikte 200 ms olan ilk gerçek zamanlı tam çift yönlü konuşan büyük dil modelidir.

Makalenin özeti aşağıdaki gibidir:

*Moshi'yi tanıtıyoruz; bu, bir konuşma-metin temel modeli ve tam çift yönlü (full-duplex) sözlü diyalog çerçevesidir. Sözlü diyalog için mevcut sistemler, bağımsız bileşenlerden oluşan hatlara dayanır: ses aktivitesi algılama, konuşma tanıma, metin tabanlı diyalog ve metinden sese dönüştürme. Bu tür çerçeveler gerçek bir sohbet deneyimini taklit edemez. Birincisi, karmaşıklıkları etkileşimler arasında birkaç saniyelik bir gecikmeye yol açar. İkincisi, diyalog için ara modül metin olduğu için, anlamı değiştiren dil dışı bilgiler—duygu veya konuşma dışı sesler gibi—etkileşimde kaybolur. Son olarak, bu sistemler konuşmacı sıralarına dayalı bir segmentasyona dayanır; bu yaklaşım üst üste binen konuşmaları, kesintileri ve araya giren sesleri göz önüne almaz. Moshi, sözlü diyaloğu konuşmadan konuşmaya üretime dönüştürerek bu bağımsız sorunların tümünü bir arada çözer. Bir metin dil modeli omurgasından yola çıkan Moshi, sinirsel bir ses kodlayıcısının (neural audio codec) artımsal kuantizatöründen (residual quantizer) token'lar olarak ses üretirken, kendi sesini ve kullanıcının sesini paralel akışlarda ayrı ayrı modeler. Bu, açık konuşmacı sıralarının kaldırılmasına ve keyfi konuşma dinamiklerinin modellenmesine olanak tanır. Ayrıca, önceki çalışmalardaki hiyerarşik semantikten akustik token üretimini genişleterek, ses token'larından önce zamanla hizalı metin token'larını bir önek (prefix) olarak tahmin ediyoruz. Bu “Inner Monologue” yöntemi yalnızca üretilen sesin dil kalitesini önemli ölçüde artırmakla kalmıyor, aynı zamanda akışkan konuşma tanıma ve metinden sese dönüştürme sağlayabileceğini de gösteriyoruz. Sonuç olarak ortaya çıkan modelimiz, teorik gecikmesi 160 ms, pratikte 200 ms olan ve github.com/kyutai-labs/moshi adresinde erişilebilir olan, gerçek zamanlı tam çift yönlü sözlü büyük dil modelidir.*

Moshi, 3 bilgi akışıyla ilgilenir:

1. Kullanıcının sesi
2. Moshi'nin sesi
3. Moshi'nin metinsel çıktısı

[~MusicgenModel](/docs/transformers/main/tr/model_doc/musicgen#transformers.MusicgenModel)'de olduğu gibi, ses, token'lar gibi yorumlanabilen ses kod kitaplarıyla temsil edilir. Metin token'ları ile ses kod kitapları arasındaki temel fark, ses kod kitaplarının ek bir bilgi boyutu tanıtmış olmasıdır. Metin token'ları genellikle `(batch_size, sequence_length)` boyutunda iken ses token'ları `(batch_size, num_codebooks, sequence_length)` boyutundadır.

Moshi 3 bileşenden oluşur:

**1. Ana çözücü (makalede Helium)**

[MoshiForCausalLM](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiForCausalLM) sınıfına karşılık gelir. Kesinlikle klasik bir metin LLM'idir ve [~GemmaForCausalLM](/docs/transformers/main/tr/model_doc/gemma#transformers.GemmaForCausalLM) ile benzer bir mimari kullanır. Başka bir deyişle, metin tokenlarını alır, bunları gömme (embedding) yapar, decoder ve bir dil başlığından geçirerek metin logitlerini elde eder.

**2. Derinlik çözücü**

Kendi başına, bu da klasik bir LLM'dir; ancak bu sefer zaman boyutu üzerinde değil, codebook boyutu üzerinde üretim yapar.

Bu da bağlam uzunluğunun `num_codebooks` olduğu anlamına gelir, dolayısıyla `num_codebooks`'den fazlasını üretemez.

Her zaman damgasının - yani her kod kitabının - kendi Linear Layers ve Embeddings setine sahip olduğunu unutmayın.

**3. [MimiModel](/docs/transformers/main/tr/model_doc/mimi#transformers.MimiModel)**

Kyutai'nin ses kodlayıcısıdır; kısa süre önce [~MusicgenModel](/docs/transformers/main/tr/model_doc/musicgen#transformers.MusicgenModel) içinde [~EncodecModel](/docs/transformers/main/tr/model_doc/encodec#transformers.EncodecModel)'ın sahip olduğu aynı işlevi görmek üzere transformers'a entegre edilmiştir ve sesleri "tokenize" etmek için kullanılır.

## İpuçları

Orijinal kontrol noktaları, `src/transformers/models/moshi/convert_moshi_transformers.py` dönüştürme betiği kullanılarak dönüştürülebilir.

### Modeli nasıl kullanılır

Bu uygulamanın iki ana amacı vardır:

1. orijinal API'yi basitleştirerek model üretimini hızlıca test edin
2. eğitimi basitleştirir. Bir eğitim kılavuzu yakında eklenecek, ancak kullanıcı katkıları memnuniyetle karşılanır!

Ara kullanım için tasarlanmıştır. Modeli gerçek zamanlı akışta çıkarım yapmak için orijinal [uygulamayı](https://github.com/kyutai-labs/moshi) kullanmanızı şiddetle öneririz.

**1. Model üretimi**

Moshi, iki ses akışına sahip bir akışkan oto-gerçeklemeli modeldir. Başka bir deyişle, bir ses akışı modelin söylediği/söyleyeceği içeriğe, diğer ses akışı ise kullanıcının söylediği/söyleyeceği içeriğe karşılık gelir.

[MoshiForConditionalGeneration.generate()](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiForConditionalGeneration.generate) bu nedenle 3 girdiye ihtiyaç duyar:

1. `input_ids` - metin token geçmişine karşılık gelir
2. `moshi_input_values` veya `moshi_audio_codes` - modelin ses geçmişine karşılık gelen
3. `user_input_values` veya `user_audio_codes` - kullanıcı ses geçmişine karşılık gelen

Bu üç girdi senkronize olmalıdır. Yani uzunlukları aynı sayıda token'a karşılık gelmelidir.

Test etmek istediğinize bağlı olarak 3 girdiyi dinamik olarak kullanabilirsiniz:

1. Sadece kullanıcı istemine verilen model yanıtını kontrol edin - bu durumda, `input_ids` dolgu (pad) jetonlarıyla doldurulabilir ve `user_input_values`, kullanıcı istemiyle aynı şekle sahip sıfır bir tensör olabilir.
2. Daha karmaşık davranışları test edin - bu durumda, girdi token'larının seslerle nasıl senkronize edildiğine dikkat etmeniz gerekir.

Orijinal model, her token telaffuzu arasındaki metni dolgu (padding) ile doldurarak metni sesle senkronize eder.

Aşağıdaki görseldeki örneği takip etmek için, `"Hello, I'm Moshi"` ifadesi `"Hello,<pad><unk>I'm Moshi"` biçimine dönüştürülebilir.

[MoshiForConditionalGeneration.generate()](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiForConditionalGeneration.generate) ardından kendi ses akışını otomatik regresif olarak kendisine besler; ancak `transformers` kullanılırken kullanıcı girdi akışına erişimi olmadığından, **kullanıcının boş ses ürettiğini varsayar**.

```python
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. Model eğitimi**

Çoğu iş, akışların hizalanması/senkronize edilmesi gerekliliği nedeniyle veri oluşturma/ön işleme sırasında yapılmalıdır.

Tamamlandığında, model kaybını almak için `text_labels` ve `audio_labels` değerlerini, standart girdilerle birlikte [MoshiForConditionalGeneration.forward()](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiForConditionalGeneration.forward) fonksiyonuna iletebilirsiniz.

Eğitim kılavuzu yakında paylaşılacak, ancak kullanıcı katkıları memnuniyetle karşılanır!

### Model girdileri nasıl iletir / üretir

1. Girdi akışları gömülür ve `inputs_embeds` içinde birleştirilir.

2. `inputs_embeds`, ana decoder üzerinden geçirilir ve normal bir LLM tarafından işlenir.

3. Ana decoder `text logits` çıktısı üretir ancak makalede `temporal context` olarak adlandırılan `last hidden state` çıktısını da üretir.

3. Derinlik çözücü, ileriye taşıma / üretim yapılan boyutu değiştirir (zaman yerine kod kitapları). `text logits` 'ten üretilen token'ı ve `temporal context` 'i kullanarak ses kod kitaplarını otoregresif olarak üretir.

Bu model [Yoach Lacombe (ylacombe)](https://huggingface.co/ylacombe) tarafından katkıda bulunmuştur.

Orijinal kod [burada](https://github.com/kyutai-labs/moshi) bulunabilir.

## MoshiConfig[[transformers.MoshiConfig]]

#### transformers.MoshiConfig[[transformers.MoshiConfig]]

```python
transformers.MoshiConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 32000, hidden_size: int = 4096, num_hidden_layers: int = 32, num_attention_heads: int = 32, num_key_value_heads: int | None = None, audio_vocab_size: int | None = None, max_position_embeddings: int = 3000, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, hidden_act: str = 'silu', head_dim: int | None = None, initializer_range: float = 0.02, use_cache: bool = True, sliding_window: int = 3000, attention_dropout: float | int = 0.0, ffn_dim: int = 22528, rms_norm_eps: float = 1e-08, num_codebooks: int = 8, tie_word_embeddings: bool = False, pad_token_id: int | None = None, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, audio_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, depth_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/configuration_moshi.py#L93)

**Parametreler:**

vocab_size (`int`, *isteğe bağlı*, varsayılan `32000`) : Modelin sözlük boyutu. `input_ids` tarafından temsil edilebilecek farklı token sayısını tanımlar.

hidden_size (`int`, *isteğe bağlı*, varsayılan `4096`) : Gizli temsillerin boyutu.

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `32`) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (`int`, *isteğe bağlı*, varsayılan `32`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

num_key_value_heads (`int`, *isteğe bağlı*) : Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır. `num_key_value_heads=num_attention_heads` ise model Multi Head Attention (MHA) kullanır, `num_key_value_heads=1` ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için [bu makaleye](https://huggingface.co/papers/2305.13245) göz atın. Belirtilmezse, varsayılan olarak `num_attention_heads` kullanılır.

audio_vocab_size (`int`, *isteğe bağlı*) : Modelin ses kısmının sözlük boyutu. Moshi modelleri çağrılırken geçirilen `audio_codes` ile temsil edilebilecek farklı token sayısını tanımlar.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `3000`) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *isteğe bağlı*) : RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, `rope_theta` için bir değer içermeli ve daha uzun `max_position_embeddings` ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan parametreleri isteğe bağlı olarak içermelidir.

hidden_act (`str`, *isteğe bağlı*, varsayılan `silu`) : Dekoderdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

head_dim (`int`, *isteğe bağlı*) : Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

use_cache (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin son anahtar/değer dikkatlerini döndürüp döndürmeyeceğini belirtir (tüm modellerde kullanılmaz). Yalnızca `config.is_decoder=True` olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.

sliding_window (`int`, *isteğe bağlı*, varsayılan `3000`) : Kayan pencere dikkat penceresi boyutu. `None` ise kayan pencere uygulanmaz.

attention_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Dikkat olasılıkları için dropout oranı.

ffn_dim (`int`, *isteğe bağlı*, varsayılan 22528) : Ana decoder bloğundaki "intermediate" (genellikle feed-forward olarak adlandırılan) katmanının boyutluluğu. Çift sayı olmalıdır.

rms_norm_eps (`float`, *opsiyonel*, varsayılan `1e-08`) : rms normalizasyon katmanları tarafından kullanılan epsilon.

num_codebooks (`int`, *isteğe bağlı*, varsayılan `8`) : Modelin kullandığı paralel kod kitaplarının sayısı.

tie_word_embeddings (`bool`, *isteğe bağlı*, varsayılan `False`) : Ağırlık gömme bağlamalarının, modelin `tied_weights_keys` eşlemesine göre yapılıp yapılmayacağını belirtir.

pad_token_id (`int`, *isteğe bağlı*) : Sözlükte dolgu için kullanılan token kimliği.

bos_token_id (`int`, *isteğe bağlı*) : Sözlükte akış başlangıcı için kullanılan token kimliği.

eos_token_id (`Union[int, list[int]]`, *isteğe bağlı*) : Sözlükte akış sonu için kullanılan token kimliği.

audio_encoder_config (`PreTrainedConfig | dict`, *isteğe bağlı*) : Ses kodlayıcısının yapılandırması.

depth_decoder_config (`PreTrainedConfig | dict`, *isteğe bağlı*) : Derinlik çözücü için yapılandırma.

Bu, bir MoshiModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Moshi modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [kmhf/hf-moshika](https://huggingface.co/kmhf/hf-moshika) ile benzer bir yapılandırmaya yol açar.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

```python
>>> 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[[transformers.MoshiConfig.from_audio_encoder_config]]

```python
from_audio_encoder_config(audio_encoder_config: PreTrainedConfig, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/configuration_moshi.py#L199)

**Dönüş:** [MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)

Bir yapılandırma nesnesi örneği

Bir ses kodlayıcı yapılandırmasından [MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig) (veya türetilmiş bir sınıf) örneği oluşturun.

## MoshiDepthConfig[[transformers.MoshiDepthConfig]]

#### transformers.MoshiDepthConfig[[transformers.MoshiDepthConfig]]

```python
transformers.MoshiDepthConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 32000, hidden_size: int = 1024, input_size: int = 4096, num_hidden_layers: int = 6, num_attention_heads: int = 16, num_key_value_heads: int | None = None, audio_vocab_size: int = 2048, max_position_embeddings: int = 9, hidden_act: str = 'silu', head_dim: int | None = None, initializer_range: float = 0.02, use_cache: bool = True, sliding_window: int = 8, attention_dropout: float | int = 0.0, ffn_dim: int = 5632, rms_norm_eps: float = 1e-08, num_codebooks: int = 8, tie_word_embeddings: bool = False, pad_token_id: int | None = None, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/configuration_moshi.py#L26)

**Parametreler:**

vocab_size (`int`, *isteğe bağlı*, varsayılan `32000`) : Modelin sözlük boyutu. `input_ids` tarafından temsil edilebilecek farklı token sayısını tanımlar.

hidden_size (`int`, *isteğe bağlı*, varsayılan `1024`) : Gizli temsillerin boyutu.

input_size (`int`, *isteğe bağlı*, varsayılan 4096) : Girdi gizli durumlarının boyutluluğu. Ana çözücü ile derinlik çözücüsünü bağlamak için kullanılır.

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `6`) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (`int`, *isteğe bağlı*, varsayılan `16`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

num_key_value_heads (`int`, *isteğe bağlı*) : Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır. `num_key_value_heads=num_attention_heads` ise model Multi Head Attention (MHA) kullanır, `num_key_value_heads=1` ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için [bu makaleye](https://huggingface.co/papers/2305.13245) göz atın. Belirtilmezse, varsayılan olarak `num_attention_heads` kullanılır.

audio_vocab_size (`int`, *isteğe bağlı*, varsayılan 2048) : Modelin ses kısmının sözlük boyutu. Moshi modelleri çağrılırken geçirilen `audio_codes` ile temsil edilebilecek farklı token sayısını tanımlar.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `9`) : Bu modelin kullanılabileceği en büyük dizi uzunluğu.

hidden_act (`str`, *isteğe bağlı*, varsayılan `silu`) : Dekoderdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

head_dim (`int`, *isteğe bağlı*) : Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

use_cache (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin son anahtar/değer dikkatlerini döndürüp döndürmeyeceğini belirtir (tüm modellerde kullanılmaz). Yalnızca `config.is_decoder=True` olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.

sliding_window (`int`, *isteğe bağlı*, varsayılan `8`) : Kayan pencere dikkat penceresi boyutu. `None` ise, kayan pencere uygulanmaz.

attention_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Dikkat olasılıkları için dropout oranı.

ffn_dim (`int`, *isteğe bağlı*, varsayılan 5632) : Derinlik çözücü bloğundaki "ara" (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. Çift olmalıdır.

rms_norm_eps (`float`, *opsiyonel*, varsayılan `1e-08`) : rms normalizasyon katmanları tarafından kullanılan epsilon.

num_codebooks (`int`, *isteğe bağlı*, varsayılan `8`) : Modelin kullandığı paralel kod kitaplarının sayısı.

tie_word_embeddings (`bool`, *isteğe bağlı*, varsayılan `False`) : Ağırlık gömme bağlamalarının, modelin `tied_weights_keys` eşlemesine göre yapılıp yapılmayacağını belirtir.

pad_token_id (`int`, *isteğe bağlı*) : Sözlükte dolgu için kullanılan token kimliği.

bos_token_id (`int`, *isteğe bağlı*) : Sözlükte akış başlangıcı için kullanılan token kimliği.

eos_token_id (`Union[int, list[int]]`, *isteğe bağlı*) : Sözlükte akış sonu için kullanılan token kimliği.

Bu, bir MoshiModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Moshi modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [kmhf/hf-moshika](https://huggingface.co/kmhf/hf-moshika) ile benzer bir yapılandırmaya yol açar.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

```python
>>> 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]]

#### transformers.MoshiModel[[transformers.MoshiModel]]

```python
transformers.MoshiModel(config: MoshiConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L735)

**Parametreler:**

config ([MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üzerinde herhangi bir özel head olmadan ham hidden-state çıktısı üreten çıplak Moshi Model.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.MoshiModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L754)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

position_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdi dizisi token'larının konum gömme (position embeddings) içindeki konum indeksleri. `[0, config.n_positions - 1]` aralığında seçilir.  [Konum kimlikleri (position IDs) nedir?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

**Dönüş:** [BaseModelOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) veya `tuple(torch.Tensor)`

[BaseModelOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırma ([MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[MoshiModel](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  `past_key_values` kullanılırsa, yalnızca `(batch_size, 1, hidden_size)` biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarak `config.is_encoder_decoder=True` ise cross-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

## MoshiForCausalLM[[transformers.MoshiForCausalLM]]

#### transformers.MoshiForCausalLM[[transformers.MoshiForCausalLM]]

```python
transformers.MoshiForCausalLM(config: MoshiConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L807)

**Parametreler:**

config ([MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üstünde bir metin dil modelleme başlığı bulunan Moshi decoder modeli. Yalnızca metin için kullanılabilir.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.MoshiForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, labels: typing.Optional[torch.LongTensor] = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L820)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

position_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdi dizisi token'larının konum gömme (position embeddings) içindeki konum indeksleri. `[0, config.n_positions - 1]` aralığında seçilir.  [Konum kimlikleri (position IDs) nedir?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

labels (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler `[0, ..., config.vocab_size]` aralığında olmalı ya da -100 olmalı (`input_ids` docstring'ine bakın). Endeksleri `-100` olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca `[0, ..., config.vocab_size]` aralığında etiketlere sahip tokenlar için hesaplanır.

logits_to_keep (`Union[int, torch.Tensor]`, *isteğe bağlı*, varsayılan `0`) : `int` ise, son `logits_to_keep` token için logits hesaplanır. `0` ise, tüm `input_ids` için logits hesaplanır (özel durum). Üretim için yalnızca son token'ın logits'ine ihtiyaç duyulur ve bunların yalnızca o token için hesaplanması bellek tasarrufu sağlar; bu, uzun diziler veya büyük sözlük boyutu için oldukça önemli hale gelir. `torch.Tensor` ise, dizi uzunluğu boyutunda tutulacak indekslere karşılık gelen 1B olmalıdır. Bu, paketlenmiş tensor biçimini (batch ve dizi uzunluğu için tek boyut) kullanırken faydalıdır.

**Dönüş:** `MoshiCausalLMOutputWithPast` veya `tuple(torch.Tensor)`

Bir `MoshiCausalLMOutputWithPast` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda), yapılandırmaya ([MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[MoshiForCausalLM](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiForCausalLM) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `labels` sağlandığında döndürülür) -- Dil modelleme kaybı (sonraki token tahmini için).
- **logits** (`torch.Tensor`, şekli `(batch_size, sequence_length, config.vocab_size)`) -- Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).
- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

```python
>>> 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]]

#### transformers.MoshiForConditionalGeneration[[transformers.MoshiForConditionalGeneration]]

```python
transformers.MoshiForConditionalGeneration(config: MoshiConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L884)

**Parametreler:**

config ([MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Ses-sese dönüştürme için ses kodlayıcıya, Moshi derinlik çözücüye ve Moshi çözücüye sahip orijinal Moshi modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.MoshiForConditionalGeneration.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.BoolTensor] = None, user_input_values: typing.Optional[torch.Tensor] = None, user_audio_codes: typing.Optional[torch.Tensor] = None, moshi_input_values: typing.Optional[torch.Tensor] = None, moshi_audio_codes: typing.Optional[torch.Tensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, text_labels: typing.Optional[torch.LongTensor] = None, audio_labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L911)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.BoolTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

user_input_values (`torch.Tensor `şekli `(batch_size, 1, audio_sequence_length), *isteğe bağlı*) : Üretim için sesli kullanıcı komutu olarak kullanılan ses dalgaları.

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_values` and represents the audio "tokens" of `user_input_values` once passed through the audio encoder.

moshi_input_values (`torch.Tensor `şekli `(batch_size, 1, audio_sequence_length), *isteğe bağlı*) : Üretim için ses Moshi komutu olarak kullanılan ses dalga formları.

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_values` and represents the audio "tokens" of `moshi_input_values` once passed through the audio encoder.

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. `past_key_values` kullanılıyorsa, isteğe bağlı olarak yalnızca son `inputs_embeds` değerlerinin girdi olarak verilmesi yeterlidir (bkz. `past_key_values`). Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. `input_ids` ve `inputs_embeds` parametrelerinin ikisi de ayarlanmamışsa, `inputs_embeds` parametresi `inputs_embeds` değerini alır.

text_labels (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Metin dil modellemesi için etiketler. Not: Etiketler model içinde **kaydırılır**, yani `labels = input_ids` olarak ayarlayabilirsiniz. Endeksler `[-100, 0, ..., config.vocab_size]` aralığından seçilir. `-100` olarak ayarlanan tüm etiketler yok sayılır (maske uygulanır), kayıp yalnızca `[0, ..., config.vocab_size]` aralığındaki etiketler için hesaplanır.

audio_labels (`torch.LongTensor`, şekli `(batch_size, num_codebooks, sequence_length)`, *isteğe bağlı*) : Dil modelleme için etiketler. Not: Etiketler model içinde **kaydırılır**, yani `labels = input_ids` olarak ayarlayabilirsiniz. İndisler `[-100, 0, ..., config.vocab_size]` aralığından seçilir. `-100` olarak ayarlanan tüm etiketler yok sayılır (maske uygulanır), kayıp yalnızca `[0, ..., config.audio_vocab_size]` aralığındaki etiketler için hesaplanır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

**Dönüş:** `MoshiConditionalGenerationOutputWithPast` veya `tuple(torch.Tensor)`

Bir `MoshiConditionalGenerationOutputWithPast` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda), yapılandırma ([MoshiConfig](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[MoshiForConditionalGeneration](/docs/transformers/main/tr/model_doc/moshi#transformers.MoshiForConditionalGeneration) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `text_labels` sağlandığında döndürülür) -- Metin dil modelleme kaybı (sonraki token tahmini için).
- **logits** (`torch.Tensor`, şekli `(batch_size, sequence_length, config.vocab_size)`) -- Metin dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).
- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple[torch.Tensor, ...]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
- **depth_loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `audio_labels` sağlandığında döndürülür) -- Ses dil modelleme kaybı (sonraki token tahmini için).
- **audio_logits** (`torch.Tensor`, şekli `(batch_size, sequence_length, config.vocab_size)`) -- Ses dil modelleme başlıklarının tahmin puanları.
- **depth_past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Derinlik çözücü geçmiş anahtar-değerleri.
- **depth_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- Derinlik çözücü gizli durumları
- **depth_attentions** (`tuple(torch.Tensor)`, *opsiyonel*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- Self-attention başlıklarında ağırlıklı ortalama hesaplamak için kullanılan, attention softmax'ından sonraki derinlik decoder'ının Attentions ağırlıkları.

Örnekler:
```python
>>> 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[[transformers.MoshiForConditionalGeneration.generate]]

```python
generate(input_ids: typing.Optional[torch.LongTensor] = None, user_input_values: typing.Optional[torch.Tensor] = None, user_audio_codes: typing.Optional[torch.Tensor] = None, moshi_input_values: typing.Optional[torch.Tensor] = None, moshi_audio_codes: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, return_audio_waveforms: bool | None = True, return_audio_codes: bool | None = None, concat_unconditional_inputs: bool | None = True, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L1203)

**Parametreler:**

input_ids (`torch.Tensor `şekli `(batch_size, sequence_length), *isteğe bağlı*) : Üretim için metin istemi olarak kullanılan dizi.

user_input_values (`torch.Tensor `şekli `(batch_size, 1, audio_sequence_length), *isteğe bağlı*) : Üretim için sesli kullanıcı komutu olarak kullanılan ses dalgaları.

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_values` and represents the audio "tokens" of `user_input_values` once passed through the audio encoder.

moshi_input_values (`torch.Tensor `şekli `(batch_size, 1, audio_sequence_length), *isteğe bağlı*) : Üretim için ses Moshi komutu olarak kullanılan ses dalga formları.

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_values` and represents the audio "tokens" of `moshi_input_values` once passed through the audio encoder.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : İsteğe bağlı olarak, `input_ids` ve ses girişlerini iletmek yerine doğrudan gömülü bir temsil iletebilirsiniz. Bu, modelin dahili gömme arama matrisine kıyasla girişlerin ilgili vektörlere nasıl dönüştürüleceği üzerinde daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

return_audio_waveforms (`bool`, *isteğe bağlı*, varsayılan `True`) : `False` ise, ses dalga formları oluşturulmaz.

return_audio_codes (`bool`, *isteğe bağlı*) : `True` ise, üretilen ses kodlarını da döndürür; bu, ses kodlayıcıdan geçirildiğinde `audio_sequences` olarak dönüştürülen ara ses "token"leridir.

concat_unconditional_inputs (`bool`, *isteğe bağlı*, varsayılan `True`) : `False` ise, başlangıç ses ve metin jetonları birleştirilmez.

kwargs (`dict[str, Any]`, *isteğe bağlı*) : `generate` yöntemine aktarılan anahtar kelime argümanlerinin kalan sözlüğü. Bunların nasıl kullanılacağına dair daha fazla bilgi için orijinal [`generate` dokümantasyon dizelerine](https://huggingface.co/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationMixin.generate) bakın. *depth_* önekiyle başlayan anahtar kelimelerin, derinlik çözücü (depth decoder) için `generate` yönteminin girdisi olacağını unutmayın. Aksi takdirde, bu yöntem varsayılan üretim yapılandırmasını kullanır.

**Dönüş:**

`MoshiConditionalGenerationGenerateOutput`

Metin token kimlikleri ve ses token kimlikleri dizileri üretir.

#### get_unconditional_inputs[[transformers.MoshiForConditionalGeneration.get_unconditional_inputs]]

```python
get_unconditional_inputs(num_samples = 1)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moshi/modeling_moshi.py#L1632)

**Parametreler:**

num_samples (int, *isteğe bağlı*) : Koşulsuz olarak üretilecek ses örneklerinin sayısı.

max_new_tokens (int, *isteğe bağlı*) : Her örnek için üretilecek jeton sayısı. Daha fazla jeton, daha uzun ses örnekleri anlamına gelir; bunun bedeli daha uzun çıkarım süresidir (çünkü her örnek için daha fazla ses jetonu üretilmelidir).

Koşulsuz üretim için null girdileri almak yardımcı işlevi, modelin özellik çıkarıcısı veya belirteçleyici olmadan kullanılmasını sağlar.

Örnek:
```python
>>> 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)
```

