# Mamba 2

[Mamba 2](https://huggingface.co/papers/2405.21060), yapılandırılmış durum uzayı modelleri (SSM) ile dikkat varyantlarını birbirine bağlayan durum uzayı ikiliği (SSD) çerçevesine dayanır. Mamba'dan 2-8 kat daha hızlı olan daha verimli bir SSD algoritması kullanır ve mimariyi, tensör paralelliğini ve gruplanmış-değer dikkati (GVA) başlık yapısını destekleyecek şekilde değiştirir.

Tüm orijinal Mamba 2 checkpoint'lerini [State Space Models](https://huggingface.co/state-spaces) organizasyonu altında bulabilirsiniz ancak aşağıda gösterilen örnekler, orijinal checkpoint'ler için henüz bir Hugging Face uygulamasının desteklenmemesi nedeniyle [mistralai/Mamba-Codestral-7B-v0.1](https://huggingface.co/mistralai/Mamba-Codestral-7B-v0.1) kullanmaktadır.

Diğer Mamba 2 tabanlı mimariler arasında [Bamba](./bamba), [FalconH1](./falcon_h1) ve [Zamba2](./zamba2) yer alır.

> [!TIP]
> Bu model [ArthurZ](https://huggingface.co/ArthurZ) 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="mistralai/Mamba-Codestral-7B-v0.1",
    device=0
)
pipeline("Plants create energy through a process known as")
```

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1", 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 transformers import AutoModelForCausalLM, AutoTokenizer, TorchAoConfig

quantization_config = TorchAoConfig("int4_weight_only", group_size=128)
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1", 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

- Codestral Mamba'nın, dikkat tabanlı bir modeldeki kv başlarının sayısına benzer şekilde `groups=8` değeri vardır.
- Codestral Mamba iki farklı ileri geçişe sahiptir: `torch_forward` veya `cuda_kernels_forward` ve bu geçişlerin sonuçlarının hafifçe farklı olması beklenir.
  - Derleme olmadan `torch_forward`, `cuda_kernels_forward`'den 3-4 kat daha hızlıdır.
  - `cuda_kernels_forward`, ortamınızda mevcut ise orijinal CUDA çekirdeklerini kullanır. Daha yüksek CPU yükü nedeniyle bir "ısınma turu" gerektirdiğinden, prefill sırasında daha yavaştır (daha fazla ayrıntı için [bu](https://github.com/state-spaces/mamba/issues/389#issuecomment-2171755306) [yorumlara](https://github.com/state-spaces/mamba/issues/355#issuecomment-2147597457) bakın).

- Bu modelde konumsal gömme (positional embedding) bulunmamaktadır; ancak `attention_mask` ve toplu üretim (batched generation) durumunda gizli durumları (hidden states) iki farklı noktada maskelemek için özel bir mantık vardır (daha fazla ayrıntı için bu [yorumu](https://github.com/state-spaces/mamba/issues/66#issuecomment-1863563829)na bakınız). Bu durum (ve yeniden uygulanan Mamba 2 çekirdeklerinin eklenmesi), toplu üretim ile önbellekli üretim (cached generation) arasında küçük bir tutarsızlığa yol açmaktadır.

- SSM algoritması, matmul karşılıkları olan ancak işlemlerin sırası biraz farklı olan tensör çarpımlarına büyük ölçüde dayanır. Bu durum, daha düşük hassasiyetlerde farkın daha belirgin olmasına neden olur.

- Padding yalnızca sol padding ile test edilir. Sağ padding, önbelleği pad konumlarıyla günceller ve güvenilir olmayan sonuçlar verir. Toplu üretim için `tokenizer.padding_side="left"` ayarlayın. [Padding tarafı](../llm_tutorial#padding-side) bölümüne bakın.

- Aşağıdaki örnek, Mamba 2'nin [PEFT](https://huggingface.co/docs/peft) ile nasıl ince ayarlanacağını göstermektedir.

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

model_id = "mistralai/Mamba-Codestral-7B-v0.1"
dataset = load_dataset("Abirate/english_quotes", split="train")
training_args = SFTConfig(dataset_text_field="quote", gradient_checkpointing=True, per_device_train_batch_size=4)
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()
```

## Mamba2Config[[transformers.Mamba2Config]]

#### transformers.Mamba2Config[[transformers.Mamba2Config]]

```python
transformers.Mamba2Config(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, num_heads: int = 128, head_dim: int = 64, vocab_size: int = 32768, hidden_size: int = 4096, state_size: int = 128, num_hidden_layers: int = 64, layer_norm_epsilon: float = 1e-05, pad_token_id: int | None = 1, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 2, expand: int = 2, conv_kernel: int = 4, n_groups: int = 8, 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_min: float = 0.001, time_step_max: float = 0.1, time_step_floor: float = 0.0001, time_step_limit: list[float] | tuple[float, ...] = (0.0, inf), rescale_prenorm_residual: bool = False, use_cache: bool = True, chunk_size: int = 256, tie_word_embeddings: bool = False)
```

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

**Parametreler:**

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

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

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

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

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `64`) : 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 `1`) : 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 `2`) : 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.

n_groups (`int`, *isteğe bağlı*, varsayılan 8) : mamba 2'nin evrim matrisleri için grup sayısı.

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_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_floor (`float`, *opsiyonel*, varsayılan `0.0001`) : softplus aktivasyonu sonrası ayrık zaman adımı delta için izin verilen minimum değer.

time_step_limit (`Union[list[float], tuple[float, ...]]`, *isteğe bağlı*, varsayılan `(0.0, inf)`) : Sıkıştırma için kabul edilen zaman adımı değerleri aralığı.

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.

chunk_size (`int`, *isteğe bağlı*, varsayılan 256) : Diziyi oluşturacak parçaların boyutu.

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.

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

>>> # Initializing a Mamba2 configuration
>>> configuration = Mamba2Config()

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

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

## Mamba2Model[[transformers.Mamba2Model]]

#### transformers.Mamba2Model[[transformers.Mamba2Model]]

```python
transformers.Mamba2Model(config: Mamba2Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L731)

**Parametreler:**

config ([Mamba2Config](/docs/transformers/main/tr/model_doc/mamba2#transformers.Mamba2Config)) : 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 gizli durumları (hidden-states) üreten çıplak Mamba2 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.Mamba2Model.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.Tensor] = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L756)

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

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

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

[Mamba2Model](/docs/transformers/main/tr/model_doc/mamba2#transformers.Mamba2Model) 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ı.

## Mamba2LMHeadModel[[transformers.Mamba2ForCausalLM]]

#### transformers.Mamba2ForCausalLM[[transformers.Mamba2ForCausalLM]]

```python
transformers.Mamba2ForCausalLM(config: Mamba2Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L834)

**Parametreler:**

config ([Mamba2Config](/docs/transformers/main/tr/model_doc/mamba2#transformers.Mamba2Config)) : 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ı olmayan ağırlıklı doğrusal katman) bulunan MAMBA2 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.Mamba2ForCausalLM.forward]]

```python
forward(input_ids: 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, attention_mask: typing.Optional[torch.Tensor] = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L875)

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

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)

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

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

[Mamba2ForCausalLM](/docs/transformers/main/tr/model_doc/mamba2#transformers.Mamba2ForCausalLM) 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
```

