# Mamba

[Mamba](https://huggingface.co/papers/2312.00752), uzun dizilerle uğraşırken Transformers'ın hesaplama verimsizliğini aşmak için tasarlanmış seçici yapılandırılmış durum uzayı modelidir (SSM). Tamamen dikkat mekanizmasız bir mimariye sahiptir ve H3 ile kapılı MLP bloklarının (Mamba bloğu) bir kombinasyonundan oluşur. Mamba'nın "içerik tabanlı çıkarım" yeteneği, mevcut token'a bağlı olarak girdinin belirli kısımlarına odaklanmasını sağlar. Mamba ayrıca konvolüsyonel işlemlerin yokluğunu telafi etmek için yeni bir donanım farkında paralel algoritma kullanır. Sonuç olarak Mamba'nın çıkarımı hızlıdır ve çok uzun dizilere ölçeklenebilir.

Tüm orijinal Mamba kontrol noktalarını [State Space Models](https://huggingface.co/state-spaces) kuruluşu altında bulabilirsiniz.

> [!TIP]
> Bu model [Molbap](https://huggingface.co/Molbap) ve [AntonV](https://huggingface.co/AntonV) tarafından katkıda bulunmuştur. Mamba'nın farklı dil görevlerine nasıl uygulanacağına dair daha fazla örnek için sağ kenar çubuğundaki Mamba modellerine tıklayın.

Aşağıdaki örnek, [Pipeline](/docs/transformers/main/tr/main_classes/pipelines#transformers.Pipeline), [AutoModel](/docs/transformers/main/tr/model_doc/auto#transformers.AutoModel) ve komut satırından metin üretmenin nasıl yapılacağını göstermektedir.

```python
from transformers import pipeline

pipeline = pipeline(
    task="text-generation",
    model="state-spaces/mamba-130m-hf",
    device=0
)
pipeline("Plants create energy through a process known as")
```

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("state-spaces/mamba-130m-hf")
model = AutoModelForCausalLM.from_pretrained("state-spaces/mamba-130m-hf", device_map="auto")
input_ids = tokenizer("Plants create energy through a process known as", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

Quantization, ağırlıkları daha düşük bir hassasiyetle temsil ederek büyük modellerin bellek yükünü azaltır. Daha fazla kullanılabilir quantization backend'i için [Quantization](../quantization/overview) genel bakışına başvurun.

Aşağıdaki örnek, ağırlıkları yalnızca 4 bit tamsayılara kuantize etmek için [torchao](../quantization/torchao) kullanır.

```python
from torchao.quantization import Int4WeightOnlyConfig

from transformers import AutoModelForCausalLM, AutoTokenizer, TorchAoConfig

quantization_config = Int4WeightOnlyConfig(group_size=128)
quantization_config = TorchAoConfig(quant_type=quant_config)
tokenizer = AutoTokenizer.from_pretrained("state-spaces/mamba-2.8b-hf")
model = AutoModelForCausalLM.from_pretrained("state-spaces/mamba-2.8b-hf", quantization_config=quantization_config, device_map="auto")
input_ids = tokenizer("Plants create energy through a process known as", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

## Notlar

- Mevcut uygulama, orijinal CUDA çekirdeklerini kullanır. FlashAttention eşdeğeri uygulama, [mamba-ssm](https://github.com/state-spaces/mamba) ve [causal_conv1d](https://github.com/Dao-AILab/causal-conv1d) depolarında barındırılmaktadır. Donanımınız destekliyorsa bunları kurduğunuzdan emin olun!
- Mamba yığınları, `Attention` katmanlarına eşdeğer olan `mixer` katmanlarını kullanır. Mamba'nın ana mantığı `MambaMixer` sınıfında bulunur.
- Aşağıdaki örnek, Mamba'nın [PEFT](https://huggingface.co/docs/peft) ile nasıl ince ayarlanacağını göstermektedir.

  ```py
  from datasets import load_dataset
  from trl import SFTConfig, SFTTrainer
  from peft import LoraConfig

  model_id = "state-spaces/mamba-130m-hf"
  dataset = load_dataset("Abirate/english_quotes", split="train")
  training_args = SFTConfig(dataset_text_field="quote")
  lora_config =  LoraConfig(target_modules=["x_proj", "embeddings", "in_proj", "out_proj"])
  trainer = SFTTrainer(
      model=model_id,
      args=training_args,
      train_dataset=dataset,
      peft_config=lora_config,
  )
  trainer.train()
   ```

- Toplu üretim için sol dolguyu kullanın. [Dolgu tarafı](../llm_tutorial#padding-side) bölümüne bakın.

## MambaConfig[[transformers.MambaConfig]]

#### transformers.MambaConfig[[transformers.MambaConfig]]

```python
transformers.MambaConfig(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 = 50280, hidden_size: int = 768, state_size: int = 16, num_hidden_layers: int = 32, layer_norm_epsilon: float = 1e-05, pad_token_id: int | None = 0, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 0, expand: int = 2, conv_kernel: int = 4, use_bias: bool = False, use_conv_bias: bool = True, hidden_act: str = 'silu', initializer_range: float = 0.1, residual_in_fp32: bool = True, time_step_rank: str | int = 'auto', time_step_scale: float = 1.0, time_step_min: float = 0.001, time_step_max: float = 0.1, time_step_init_scheme: str = 'random', time_step_floor: float = 0.0001, rescale_prenorm_residual: bool = False, use_cache: bool = True, use_mambapy: bool = False, use_associative_scan: bool = True, tie_word_embeddings: bool = True)
```

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

**Parametreler:**

vocab_size (`int`, *isteğe bağlı*, varsayılan `50280`) : 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 `768`) : Gizli temsillerin boyutu.

state_size (`int`, *isteğe bağlı*, varsayılan `16`) : Mamba katmanlarındaki SSM durumunun boyutu (gizli durum boyutu).

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

layer_norm_epsilon (`float`, *opsiyonel*, varsayılan 1e-05) : Katman normalizasyonu katmanlarında kullanılacak epsilon.

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

bos_token_id (`int`, *isteğe bağlı*, varsayılan `0`) : 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ı*, varsayılan `0`) : Sözlükte akış sonu için kullanılan token kimliği.

expand (`int`, *isteğe bağlı*, varsayılan 2) : Ara boyutu belirlemek için kullanılan genişletme faktörü.

conv_kernel (`int`, *isteğe bağlı*, varsayılan `4`) : Konvolüsyon çekirdeğinin boyutu.

use_bias (`bool`, *isteğe bağlı*, varsayılan `False`) : Mixer bloğundaki ["in_proj", "out_proj"] bileşenlerinde bias kullanılıp kullanılmayacağı

use_conv_bias (`bool`, *isteğe bağlı*, varsayılan `True`) : Mixer bloğundaki konvolüsyon katmanında bias kullanılıp kullanılmayacağı.

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.

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

residual_in_fp32 (`bool`, *isteğe bağlı*, varsayılan `True`) : Kalıntıların `float32` içinde olup olmayacağı. `False` olarak ayarlanırsa kalıntılar, modelin geri kalanıyla aynı `dtype`'i korur.

time_step_rank (`Union[str, int]`, *isteğe bağlı*, varsayılan `auto`) : Delta (zaman adımı) projeksiyonunun rütbesi. Otomatik olarak ayarlamak için `"auto"` olabilir.

time_step_scale (`float`, *opsiyonel*, varsayılan `1.0`) : Diskretizasyon öncesi zaman adımı farkına uygulanan ölçek.

time_step_min (`float`, *isteğe bağlı*, varsayılan `0.001`) : `dt_proj.bias`'i sınırlamak için kullanılan minimum `time_step`.

time_step_max (`float`, *isteğe bağlı*, varsayılan `0.1`) : `dt_proj.bias` değerini sınırlamak için kullanılan maksimum `time_step`.

time_step_init_scheme (`str`, *isteğe bağlı*, varsayılan `random`) : Zaman adımı deltası için başlatma şeması. `"random"` veya `"uniform"` olabilir.

time_step_floor (`float`, *opsiyonel*, varsayılan `0.0001`) : softplus aktivasyonu sonrası ayrık zaman adımı delta için izin verilen minimum değer.

rescale_prenorm_residual (`bool`, *isteğe bağlı*, varsayılan `False`) : Başlatma sırasında `out_proj` ağırlıklarının yeniden ölçeklendirilip ölçeklendirilmeyeceği.

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.

use_mambapy (`bool`, *isteğe bağlı*, varsayılan `False`) : CUDA tabanlı resmi Mamba uygulaması kullanılamadığında eğitim sırasında yedek stratejiyi belirler. `True` ise mamba.py uygulaması kullanılır. `False` ise basit ve daha yavaş uygulama kullanılır. Bellek sınırlıysa basit sürüme geçmeyi düşünün.

use_associative_scan (`bool`, *isteğe bağlı*, varsayılan `True`) : Naif sıralı uygulamanın yerine paralel tarama için PyTorch'un `torch._higher_order_ops.associative_scan` işlevinin kullanılıp kullanılmayacağını belirtir. İlişkisel tarama yalnızca `torch.compile` izleme sırasında etkin olur ve torch >= 2.9.0 gerektirir. Her iki yolun da sayısal olarak aynı sonuçları ürettiği test edilmiştir (bkz. `test_associative_scan_matches_sequential`). Sıralı döngüye geri düşmek için `False` olarak ayarlayın.

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

Bu, bir MambaModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Mamba modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [state-spaces/mamba-2.8b](https://huggingface.co/state-spaces/mamba-2.8b) 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 MambaConfig, MambaModel

>>> # Initializing a Mamba configuration
>>> configuration = MambaConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = MambaModel(configuration)

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

## MambaModel[[transformers.MambaModel]]

#### transformers.MambaModel[[transformers.MambaModel]]

```python
transformers.MambaModel(config: MambaConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba/modeling_mamba.py#L614)

**Parametreler:**

config ([MambaConfig](/docs/transformers/main/tr/model_doc/mamba#transformers.MambaConfig)) : 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 Mamba 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.MambaModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.LongTensor] = None, cache_params: transformers.cache_utils.Cache | None = None, use_cache: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, attention_mask: typing.Optional[torch.LongTensor] = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba/modeling_mamba.py#L639)

**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)

inputs_embeds (`torch.LongTensor`, ş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.

cache_params (`Cache`, *isteğe bağlı*) : İletilirse, model tüm bloklarda önceki durumu kullanır (bu, modelin `state_input_ids + input_ids` ifadesini bağlam olarak eklediği varsayımıyla, sağlanan `input_ids` için çıktıyı verir).

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `cache_params` döndürülür ve bir sonraki logits'leri hızlıca üretmek için kullanılabilir.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

attention_mask (`torch.LongTensor`, ş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)

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

Yapılandırmaya ([MambaConfig](/docs/transformers/main/tr/model_doc/mamba#transformers.MambaConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşan bir `MambaOutput` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda).

[MambaModel](/docs/transformers/main/tr/model_doc/mamba#transformers.MambaModel) 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)`, *isteğe bağlı*) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.
- **cache_params** (`~cache_utils.Cache`, *isteğe bağlı*) -- Modelin son zaman adımındaki durumu. Eski `input_ids` değerlerini tekrar sağlamak zorunluluğunu ortadan kaldırmak için, bir forward yönteminde bir sonraki `input_ids` ile birlikte kullanılabilir.

  Seçici taramadan sonraki Durum Uzayı Modeli durum matrislerinin yanı sıra Konvolüsyonel durumları da 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 ve `(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ı.

## MambaLMHeadModel[[transformers.MambaForCausalLM]]

#### transformers.MambaForCausalLM[[transformers.MambaForCausalLM]]

```python
transformers.MambaForCausalLM(config: MambaConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba/modeling_mamba.py#L709)

**Parametreler:**

config ([MambaConfig](/docs/transformers/main/tr/model_doc/mamba#transformers.MambaConfig)) : 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 bir dil modelleme başlığı (giriş gömme ağırlıklarıyla bağlı ağırlıklı doğrusal katman) bulunan MAMBA Model dönüştürücüsü.

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.MambaForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, cache_params: transformers.cache_utils.Cache | None = None, labels: typing.Optional[torch.LongTensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba/modeling_mamba.py#L750)

**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.LongTensor`, ş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)

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.

cache_params (`Cache`, *isteğe bağlı*) : İletilirse, model tüm bloklarda önceki durumu kullanır (bu, modelin `state_input_ids + input_ids` ifadesini bağlam olarak eklediği varsayımıyla, sağlanan `input_ids` için çıktıyı verir).

labels (`torch.LongTensor`, şekli `(batch_size, 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.vocab_size]` aralığındaki etiketler için hesaplanır.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `cache_params` döndürülür ve bir sonraki logits'leri hızlıca üretmek için kullanılabilir.

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üş:** `MambaCausalLMOutput` veya `tuple(torch.Tensor)`

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

[MambaForCausalLM](/docs/transformers/main/tr/model_doc/mamba#transformers.MambaForCausalLM) 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).
- **cache_params** (`~cache_utils.Cache`, *isteğe bağlı*) -- Modelin son zaman adımındaki durumu. Eski `input_ids` değerlerini tekrar sağlamak zorunluluğunu ortadan kaldırmak için, bir forward yönteminde bir sonraki `input_ids` ile birlikte kullanılabilir.

  Seçici taramadan sonraki Durum Uzayı Modeli durum matrislerinin yanı sıra Konvolüsyonel durumları da 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 ve `(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ı.

Örnek:

```python
```

