# Laguna

Laguna, Poolside'in mixture-of-experts dil modeli ailesidir. Standart bir SwiGLU MoE transformer'a kıyasla Laguna'ya özgü farklar şunlardır:

- `num_attention_heads_per_layer` ile **Katman başına baş sayısı** — farklı decoder katmanları, aynı KV önbellek biçimini paylaşırken farklı sorgu başı sayılarına sahip olabilir.
- **Yardımcı kayıp içermeyen yük dengelemesine sahip Sigmoid MoE yönlendirici** ([arXiv:2408.15664](https://huggingface.co/papers/2408.15664)) ve isteğe bağlı logit yumuşak sınırlama (`moe_router_logit_softcapping`) — yönlendirici puanları, kapı logitlerinin eleman bazlı sigmoid değerine, yalnızca seçim sırasında eklenen ve uzman başına öğrenilen bir önyargı (`e_score_correction_bias`) eklenerek elde edilir.

## Kullanım

```python
from transformers import pipeline

pipe = pipeline(
    "text-generation",
    model="poolside/Laguna-XS.2",
    dtype="auto",
    device_map="auto",
)
print(pipe("The capital of France is", max_new_tokens=20, do_sample=False)[0]["generated_text"])
```

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "poolside/Laguna-XS.2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    device_map="auto",
)

prompt = "The capital of France is"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
generated = model.generate(**inputs, max_new_tokens=20, do_sample=False)
print(tokenizer.decode(generated[0], skip_special_tokens=True))
```

## Notlar

- **Dikkat (attention) arka uçları.** SDPA (varsayılan), FlashAttention-2 ve esnek dikkat (flex attention) desteklenir. Dikkat çıktısı kapısı (gating), çekirdek çağrısının dışında uygulandığından tüm arka uçlarla çalışır.
- **`num_attention_heads_per_layer`.** Verildiğinde, uzunluğu `num_hidden_layers` ile eşit olmalıdır. Her giriş, `num_key_value_heads` değerine tam bölünmelidir.
- **`layer_types`.** Ayarlanmadığında varsayılan olarak `["full_attention"] * num_hidden_layers` değerini alır. Kayan pencere dikkatini etkinleştirmek için `"full_attention"` / `"sliding_attention"` değerlerinden oluşan bir liste geçirin.
- **`mlp_layer_types`.** Katman başına MLP türü, değerler `"dense"` veya `"sparse"`. Uzunluk `num_hidden_layers` ile eşit olmalıdır. Ayarlanmadığında varsayılan olarak `["dense"] + ["sparse"] * (num_hidden_layers - 1)` (ilk katman dense, geri kalanı MoE) kullanılır.
- **`moe_apply_router_weight_on_input=True`** şu anda füzyonlu uzman çekirdeği (`grouped_mm_experts_forward`) ile birlikte desteklenmemektedir; `validate_architecture` yapılandırma oluşturma sırasında hata fırlatır. Bunu `False` (varsayılan) olarak ayarlayın.

## LagunaConfig[[transformers.LagunaConfig]]

#### transformers.LagunaConfig[[transformers.LagunaConfig]]

```python
transformers.LagunaConfig(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 = 100352, hidden_size: int = 2048, intermediate_size: int = 8192, num_hidden_layers: int = 40, num_attention_heads: int = 48, num_key_value_heads: int = 8, hidden_act: str = 'silu', max_position_embeddings: int = 131072, initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, use_cache: bool = True, tie_word_embeddings: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, sliding_window: int = 512, attention_dropout: float | int = 0.0, moe_intermediate_size: int = 512, shared_expert_intermediate_size: int = 512, num_experts_per_tok: int = 8, num_experts: int = 256, output_router_logits: bool = False, router_aux_loss_coef: float = 0.001, layer_types: list[str] | None = None, pad_token_id: int | None = None, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, head_dim: int = 128, attention_bias: bool = False, gating: bool | str = True, num_attention_heads_per_layer: list[int] | None = None, mlp_layer_types: list[str] | None = None, moe_routed_scaling_factor: float = 1.0, moe_apply_router_weight_on_input: bool = False, moe_router_logit_softcapping: float = 0.0)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/laguna/configuration_laguna.py#L31)

**Parametreler:**

vocab_size (*int*, *optional*, varsayılan *100352*) : Modelin sözlük boyutu. *input_ids* tarafından temsil edilebilecek farklı token sayısını tanımlar.

hidden_size (*int*, *optional*, varsayılan *2048*) : Gizli temsillerin boyutu.

intermediate_size (*int*, *optional*, varsayılan *8192*) : MLP temsillerinin boyutu.

num_hidden_layers (*int*, *optional*, varsayılan *40*) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (*int*, *optional*, varsayılan *48*) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

num_key_value_heads (*int*, *optional*, varsayılan *8*) : Grouped Query Attention'ı uygulamak için kullanılması gereken 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.

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

max_position_embeddings (*int*, *optional*, varsayılan *131072*) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

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

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

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

tie_word_embeddings (*bool*, *opsiyonel*, varsayılan *False*) : Modelin *tied_weights_keys* eşlemesine göre ağırlık gömme bağlamasının (weight tying) uygulanıp uygulanmayacağını belirtir.

rope_parameters (*Union[~modeling_rope_utils.RopeParameters, dict]*, *optional*) : 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.

sliding_window (*int*, *optional*, varsayılan *512*) : Kayan pencere dikkat pencere boyutu. *None* ise kayan pencere uygulanmaz.

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

moe_intermediate_size (*int*, *optional*, varsayılan *512*) : Yönlendirilmiş uzman MLP'lerinin ara boyutu.

shared_expert_intermediate_size (*int*, *optional*, varsayılan *512*) : Paylaşılan uzman MLP'lerinin ara boyutu.

num_experts_per_tok (*int*, *optional*, varsayılan *8*) : Her token'ın yönlendirileceği uzman sayısı. Bu, token seçimli yönlendirmedeki top-k değeridir.

num_experts (*int*, *optional*, varsayılan *256*) : MoE katmanlarındaki yönlendirilmiş uzman sayısı.

output_router_logits (*bool*, *opsiyonel*, varsayılan *False*) : Modelin router logit'lerini döndürüp döndürmeyeceğini belirtir. Bu özellik etkinleştirildiğinde, modelin yük dengeleme kaybı ve router z-kaybı dahil olmak üzere yardımcı kaybı (auxiliary loss) da çıkarmasına olanak tanınır.

router_aux_loss_coef (*float*, *optional*, varsayılan *0.001*) : Yardımcı yük dengeleme kaybı katsayısı. MoE modellerinde dengesiz uzman yönlendirmesini cezalandırmak için kullanılır.

layer_types (*list[str]*, *opsiyonel*) : Her katman indeksini katman türüyle açıkça eşleyen bir liste. Sağlanmazsa, config değerlerine göre otomatik olarak oluşturulur.

pad_token_id (*int*, *optional*) : Sözlükte dolgu için kullanılan token kimliği.

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

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

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

attention_bias (*bool*, *opsiyonel*, varsayılan *False*) : Kendi kendine dikkat (self-attention) sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında sapma (bias) kullanılıp kullanılmayacağı.

gating (*bool* veya *str*, *isteğe bağlı*, varsayılan *True*) : Softplus çıktı kapısı granülerliği. `True` veya `"per-head"`, `head_dim` boyunca yayınlanan baş başına bir kapı uygular; `"per-element"`, `(head, head_dim)` kanalının her birine bir kapı uygular.

num_attention_heads_per_layer (*list[int]*, *isteğe bağlı*) : `num_attention_heads` için katman bazında geçersiz kılma. Uzunluk `num_hidden_layers` ile eşit olmalıdır.

mlp_layer_types (*list[str]*, *isteğe bağlı*) : Katman başına MLP tipi — `"dense"` veya `"sparse"`. Uzunluk `num_hidden_layers` ile eşit olmalıdır. Varsayılan olarak ilk katman dense, diğerleri sparse'dir.

moe_routed_scaling_factor (*float*, *optional*, varsayılan 1.0) : Paylaşılan uzman çıktısıyla birleştirilmeden önce yönlendirilen uzman çıktısına uygulanan skaler.

moe_apply_router_weight_on_input (*bool*, *opsiyonel*, varsayılan *False*) : Router ağırlıklarının MoE girdisine mi yoksa çıktısına mı uygulanacağını belirtir. Henüz transformers tarafından desteklenmemektedir; şu an için `True` bir `NotImplementedError` yükseltir.

moe_router_logit_softcapping (*float*, *optional*, varsayılan 0.0) : MoE yönlendirici logitlerine tanh softcapping uygularken kullanılan ölçekleme faktörü.

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

Yapılandırma nesneleri [*PreTrainedConfig*] sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [*PreTrainedConfig*] belgesini okuyun.

Örnek:

```python
>>> from transformers import LagunaModel, LagunaConfig

>>> configuration = LagunaConfig()
>>> model = LagunaModel(configuration)
>>> configuration = model.config
```

#### validate_architecture[[transformers.LagunaConfig.validate_architecture]]

```python
validate_architecture()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/laguna/configuration_laguna.py#L150)

`@strict` destekli doğrulamanın bir parçası.

## LagunaModel[[transformers.LagunaModel]]

#### transformers.LagunaModel[[transformers.LagunaModel]]

```python
transformers.LagunaModel(config: LagunaConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/laguna/modeling_laguna.py#L497)

**Parametreler:**

config ([LagunaConfig](/docs/transformers/main/tr/model_doc/laguna#transformers.LagunaConfig)) : 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-states üreten çıplak Laguna 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.LagunaModel.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/laguna/modeling_laguna.py#L514)

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

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

[LagunaModel](/docs/transformers/main/tr/model_doc/laguna#transformers.LagunaModel) 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** (`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.
- **router_logits** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_router_probs=True` ve `config.add_router_probs=True` geçirildiğinde veya `config.output_router_probs=True` olduğunda döndürülür) -- `(batch_size, sequence_length, num_experts)` biçiminde, her katman için bir adet içeren `torch.Tensor` tuple'ı.

  MoE yönlendiricileri tarafından hesaplanan ham yönlendirici logitleri (softmax sonrası), bu terimler Mixture of Experts modelleri için yardımcı kaybı hesaplamakta kullanılır.

## LagunaForCausalLM[[transformers.LagunaForCausalLM]]

#### transformers.LagunaForCausalLM[[transformers.LagunaForCausalLM]]

```python
transformers.LagunaForCausalLM(config: LagunaConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/laguna/modeling_laguna.py#L650)

**Parametreler:**

config ([LagunaConfig](/docs/transformers/main/tr/model_doc/laguna#transformers.LagunaConfig)) : 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.

Nedensel dil modellemesi için Laguna 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.LagunaForCausalLM.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, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, output_router_logits: bool | None = 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/laguna/modeling_laguna.py#L669)

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

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.

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

output_router_logits (`bool`, *isteğe bağlı*) : Tüm yönlendiricilerin (router) logit değerlerinin döndürülüp döndürülmeyeceğini belirtir. Bunlar yönlendirici kaybını (router loss) hesaplamak için kullanışlıdır ve çıkarım sırasında döndürülmemelidir.

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

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

[LagunaForCausalLM](/docs/transformers/main/tr/model_doc/laguna#transformers.LagunaForCausalLM) 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).
- **aux_loss** (`torch.Tensor`, *opsiyonel*, `output_router_logits=True` geçirildiğinde veya `config.output_router_logits=True` olduğunda ve model, yük dengeleme kaybı ile router'ını eğittiğinde döndürülür) -- Seyrek modüller için yük dengeleme yardımcı kaybı. Uzmanlarını router sapması ile dengeleyen modeller (DeepSeek-V3 ve ondan türetilen mimariler) burada `None` döndürürken yine de `router_logits` döndürür.
- **router_logits** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_router_logits=True` geçirildiğinde veya `config.output_router_logits=True` olduğunda döndürülür) -- `torch.Tensor` (her seyrek katman için bir tane) içeren bir tuple, şekli `(batch_size * sequence_length, num_experts)`.

  MoE yönlendiricileri tarafından hesaplanan ham yönlendirici logitleri. Bunlar, bir yük dengeleme kaybı hesaplamak veya tokenlerin uzmanlara nasıl dağıtıldığını incelemek için kullanılabilir.
- **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` (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.

Örnek:

```python
```

