# DeepSeek-V3.2

## Genel Bakış

[DeepSeek-V3.2-Exp](https://huggingface.co/deepseek-ai/DeepSeek-V3.2-Exp), DeepSeek-AI tarafından yayınlanan deneysel bir sürümdür ve uzun bağlam senaryolarında eğitim ve çıkarım verimliliğini artırmak üzere tasarlanmış, eğitilebilir, ince taneli bir seyrek dikkat mekanizması olan **DeepSeek Sparse Attention (DSA)**'ı tanıtır. Model doğrudan [DeepSeek-V3.1-Terminus](https://huggingface.co/deepseek-ai/DeepSeek-V3.1-Terminus) üzerine inşa edilmiştir: aynı 685B parametreli Mixture-of-Experts (MoE) omurgasını ve Multi-head Latent Attention (MLA)'ı korur ve seyrek dikkat indeksleyicisini ekleyen, ancak eğitim dağılımını V3.1-Terminus ile bilinçli olarak hizalayan devam eden eğitim yoluyla elde edilir; böylece iki model başa baş karşılaştırılabilir.

Bu çalışma, DSA'yı ölçeklenebilir bir pekiştirmeli öğrenme çerçevesiyle eşleştiren ve yarışma matematiği (IMO) ile rekabetçi programlama (IOI) ölçütlerinde altın madalya düzeyinde sonuçlar bildiren [DeepSeek-V3.2 teknik raporu](https://huggingface.co/papers/2512.02556), *DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models* ile daha sonra genişletilmiştir.

DeepSeek-V3.2-Exp sürümünün özeti aşağıdaki gibidir:

*DeepSeek-V3.2-Exp'yi tanıtıyoruz. Bu, modelimizin deneysel bir sürümüdür ve uzun bağlam senaryolarında eğitim ve çıkarım verimliliği için optimizasyonları keşfetmek ve doğrulamak amacıyla DeepSeek Sparse Attention (DSA) teknolojisini içerir. DeepSeek Sparse Attention, model çıktı kalitesine minimal etki yaparak ince taneli (fine-grained) seyrek dikkati (sparse attention) ilk kez gerçekleştirir. DeepSeek-V3.1-Terminus üzerine inşa edilen DeepSeek-V3.2-Exp, özellikle uzun bağlam ayarlarında, hem eğitimde hem de çıkarımda önemli ölçüde iyileştirilmiş verimlilik sunarken, neredeyse aynı benchmark performansını korur.*

### DeepSeek Seyrek Dikkat (DSA)

DSA, uzun dizilerde dikkatin karesel maliyetini, yalnızca seçilmiş bir geçmiş token alt kümesine odaklanarak azaltır. İki bileşeni vardır:

1. **Lightning indeksleyici.** Hafif, düşük başlık sayılı bir puanlama modülü, her sorgu ile her bir önceki anahtar arasında bir *indeks puanı* hesaplar. Referans uygulamada FP8 ile bir Hadamard (`rotate_activation`) dönüşümü çalıştırılır; dönüşüm ortogonal olduğundan (`Hq·Hk = q·k`) ve FP8 yalnızca bir hassasiyet optimizasyonu olduğundan, transformers portu aynı puanları doğrudan bf16/fp32'de hesaplar ve indeksleyiciyi ana dikkate göre ucuz tutar.
2. **İnce taneli token seçimi.** Her sorgu için indeksleyici, en üst `index_topk` (varsayılan olarak 2048) tokenı saklar ve ana MLA dikkati, ardından yalnızca bu tokenlar üzerinden eklemeli bir maske aracılığıyla hesaplanır. Bu, `flash_mla` kullanıldığında uzun diziler için sorgu başına dikkat maliyetini `O(L)`'den `O(index_topk)`'e dönüştürür; bu özellik henüz desteklenmemektedir 😉.

Indexer, ana K/V önbelleğinin yanında kendi küçük token başına anahtar önbelleğini (tek baş, `index_head_dim`) tutar. Transformers'ta bu, büyüyen önbellekler için `DynamicIndexedLayer` ve statik / `torch.compile` önbellekleri için `StaticIndexedLayer` olmak üzere ayrı bir önbellek katmanında bulunur ve `past_key_values.update_indexer()` üzerinden güncellenir.

DeepSeek-V3.2'de **her katman kendi indeksleyicisini çalıştırır** — katmanlar arası top-k paylaşımı yoktur.

> [!NOTE]
> **MLA sorgu LoRA yolu (`q_lora_rank`) zorunludur.** Indexer, düşük rütbeli sorgu latentinden `q_a_layernorm(q_a_proj(x))` (bu latentin `wq_b` projeksiyonu `q_lora_rank` ile boyutlandırılır) gelen sorguları puanlar, bu nedenle model her zaman LoRA sorgu yolunu kullanır ve `q_lora_rank` ayarlanmalıdır — yayınlanan checkpoint `1536` değerini kullanır. [DeepSeek-V3](./deepseek_v3)'ün `q_lora_rank=None` için sunduğu isteğe bağlı olmayan LoRA `q_proj` yolu burada **desteklenmez**: sorgu latentinin olmaması durumunda indexer'ın tüketebileceği bir şey yoktur.

## Kullanım örnekleri

DeepSeek-V3.2-Exp, FP8 checkpoint olarak dağıtılır. Checkpoint bunları bf16/fp32 olarak sakladığı için, indexer projeksiyonları FP8 kuantizasyonunun dışında tutulur:

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

model_name = "deepseek-ai/DeepSeek-V3.2-Exp"
quantization_config = FineGrainedFP8Config(
    modules_to_not_convert=["model.layers.*.mlp.gate.*", "*.self_attn.indexer.weights_proj.*"],
    weight_block_size=(128, 128),
)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    quantization_config=quantization_config,
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

inputs = tokenizer("What are we having for dinner?", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```

Orijinal kod [burada](https://github.com/deepseek-ai/DeepSeek-V3.2-Exp) bulunabilir.

## DeepseekV32Config[[transformers.DeepseekV32Config]]

#### transformers.DeepseekV32Config[[transformers.DeepseekV32Config]]

```python
transformers.DeepseekV32Config(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 = 129280, hidden_size: int = 7168, intermediate_size: int = 18432, moe_intermediate_size: int = 2048, num_hidden_layers: int = 61, num_attention_heads: int = 128, num_key_value_heads: int = 128, n_shared_experts: int = 1, n_routed_experts: int = 256, output_router_logits: bool = False, routed_scaling_factor: float = 2.5, kv_lora_rank: int = 512, q_lora_rank: int = 1536, qk_rope_head_dim: int = 64, v_head_dim: int = 128, qk_nope_head_dim: int = 128, n_group: int = 8, topk_group: int = 4, num_experts_per_tok: int = 8, norm_topk_prob: bool = True, hidden_act: str = 'silu', max_position_embeddings: int = 163840, initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, use_cache: bool = True, pad_token_id: int | None = None, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 1, tie_word_embeddings: bool = False, rope_parameters: dict | None = None, mlp_layer_types: list[str] | None = None, attention_bias: bool = False, attention_dropout: float | int = 0.0, index_topk: int = 2048, index_head_dim: int = 128, index_n_heads: int = 64, mlp_bias: bool = False, head_dim: int = 64, first_k_dense_replace: int = 3, layer_types: list[str] | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v32/configuration_deepseek_v32.py#L28)

**Parametreler:**

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

intermediate_size (`int`, *isteğe bağlı*, varsayılan `18432`) : MLP temsil boyutu.

moe_intermediate_size (`int`, *isteğe bağlı*, varsayılan `2048`) : Yönlendirilmiş uzman MLP'lerinin ara boyutu.

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

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

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

n_shared_experts (`int`, *isteğe bağlı*, varsayılan `1`) : Paylaşılan uzman sayısı.

n_routed_experts (`int`, *isteğe bağlı*, varsayılan `256`) : Yönlendirilen uzman sayısı.

output_router_logits (`bool`, *isteğe bağlı*, 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.

routed_scaling_factor (`float`, *isteğe bağlı*, varsayılan `2.5`) : Ölçekleme faktörü veya yönlendirilmiş uzmanlar.

kv_lora_rank (`int`, *isteğe bağlı*, varsayılan `512`) : Anahtar ve değer projeksiyonları için LoRA matrislerinin rütbesi.

q_lora_rank (`int`, *isteğe bağlı*, varsayılan `1536`) : Sorgu projeksiyonları için LoRA matrislerinin rütbesi.

qk_rope_head_dim (`int`, *isteğe bağlı*, varsayılan `64`) : Döner konum gömme kullanan sorgu/anahtar başlarının boyutu.

v_head_dim (`int`, *isteğe bağlı*, varsayılan `128`) : Değer başlarının boyutu.

qk_nope_head_dim (`int`, *isteğe bağlı*, varsayılan `128`) : Döner konum gömme kullanmayan sorgu/anahtar başlarının boyutu.

n_group (`int`, *isteğe bağlı*, varsayılan 1) : Yönlendirilmiş uzmanlar için grup sayısı.

topk_group (`int`, *isteğe bağlı*, varsayılan `4`) : Her token için seçilen grup sayısı (her token için, seçilen uzmanların yalnızca `topk_group` grupları içinde olmasını sağlar).

num_experts_per_tok (`int`, *isteğe bağlı*, varsayılan `8`) : Her jetonu yönlendirilecek uzman sayısı. Bu, jeton seçimli yönlendirmenin top-k değeridir.

norm_topk_prob (`bool`, *isteğe bağlı*, varsayılan `True`) : Yönlendirilen uzmanların ağırlıklarının normalize edilip edilmeyeceğini belirtir.

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.

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

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

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

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.

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ı*, 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 `1`) : Sözlükte akış sonu için kullanılan token kimliği.

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.

rope_parameters (`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.

mlp_layer_types (`list`, *isteğe bağlı*) : Her katman için MLP tipi deseni (`"dense"` veya `"sparse"`). Varsayılan olarak 3 dense + kalanı sparse.

attention_bias (`bool`, *isteğe bağlı*, 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ğı.

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

index_topk (`int`, *isteğe bağlı*, varsayılan 2048) : Seyrek dikkat için indeksleyici tarafından seçilen üst token sayısı.

index_head_dim (`int`, *opsiyonel*, varsayılan 128) : DSA için indeksleyici projeksiyonlarının baş boyutu.

index_n_heads (`int`, *isteğe bağlı*, varsayılan 64) : DSA için indeksleyici projeksiyonlarının baş sayısı.

mlp_bias (`bool`, *isteğe bağlı*, varsayılan `False`) : MLP katmanlarındaki up_proj, down_proj ve gate_proj katmanlarında bias kullanılıp kullanılmayacağı.

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

first_k_dense_replace (`int`, *isteğe bağlı*, varsayılan 3) : Yoğun MLP kullanan öndeki katman sayısı; geri kalanı MoE bloğunu kullanır.

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

Bu, bir DeepseekV32Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Deepseek V32 modelinin örneklenmesi için kullanılır ve model mimarisini tanımlar. Varsayılanlarla bir yapılandırma örneği oluşturmak, [deepseek-ai/DeepSeek-V3.2-Exp](https://huggingface.co/deepseek-ai/DeepSeek-V3.2-Exp) yapılandırmasına benzer bir yapılandırma elde edilmesini sağlar.

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.

```python
>>> from transformers import DeepseekV32Config, DeepseekV32Model

>>> # Initializing a DeepSeek-V3.2 configuration
>>> configuration = DeepseekV32Config()

>>> # Initializing a model from the configuration
>>> model = DeepseekV32Model(configuration)

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

## DeepseekV32PreTrainedModel[[transformers.DeepseekV32PreTrainedModel]]

#### transformers.DeepseekV32PreTrainedModel[[transformers.DeepseekV32PreTrainedModel]]

```python
transformers.DeepseekV32PreTrainedModel(config: PreTrainedConfig, *inputs, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v32/modeling_deepseek_v32.py#L645)

**Parametreler:**

config ([PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig)) : 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.

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

```python
forward(*args, **kwargs)
```

Noktalı bir yol için sahte bir değer (ör. `torch.float32`): öznitelik erişim zincirleri, çağrılar geçiş (pass-through) dekoratörleri gibi davranır, `repr` noktalı yoldur ve bir taban sınıf olarak kullanıldığında düz bir `type` tabanı yerleştirilir (PEP 560 `__mro_entries__`), böylece gerçek alt sınıflar normal bir metasınıfı korur ve `inspect.signature` sahtenin yerine gerçek `__init__` değerlerini okur.

## DeepseekV32Model[[transformers.DeepseekV32Model]]

#### transformers.DeepseekV32Model[[transformers.DeepseekV32Model]]

```python
transformers.DeepseekV32Model(config: DeepseekV32Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v32/modeling_deepseek_v32.py#L678)

**Parametreler:**

config ([DeepseekV32Config](/docs/transformers/main/tr/model_doc/deepseek_v32#transformers.DeepseekV32Config)) : 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 bakın.

Üzerinde herhangi bir özel head olmadan ham gizli durumları (hidden-states) üreten çıplak Deepseek V32 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.DeepseekV32Model.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/deepseek_v32/modeling_deepseek_v32.py#L694)

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

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

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

## DeepseekV32ForCausalLM[[transformers.DeepseekV32ForCausalLM]]

#### transformers.DeepseekV32ForCausalLM[[transformers.DeepseekV32ForCausalLM]]

```python
transformers.DeepseekV32ForCausalLM(config: DeepseekV32Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v32/modeling_deepseek_v32.py#L755)

**Parametreler:**

config ([DeepseekV32Config](/docs/transformers/main/tr/model_doc/deepseek_v32#transformers.DeepseekV32Config)) : 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 bakın.

Nedensel dil modellemesi için Deepseek V32 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.DeepseekV32ForCausalLM.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, 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/deepseek_v32/modeling_deepseek_v32.py#L770)

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

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

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

[DeepseekV32ForCausalLM](/docs/transformers/main/tr/model_doc/deepseek_v32#transformers.DeepseekV32ForCausalLM) 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
>>> from transformers import AutoTokenizer, DeepseekV32ForCausalLM

>>> model = DeepseekV32ForCausalLM.from_pretrained("meta-deepseek_v32/DeepseekV32-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-deepseek_v32/DeepseekV32-2-7b-hf")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> 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]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
```

