# DeepSeek-V4

[DeepSeek-V4](https://huggingface.co/deepseek-ai), DeepSeek'in bir sonraki nesil MoE dil modelidir ([makale](https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash/blob/main/DeepSeek_V4.pdf)). Mimari, DeepSeek-V3'ün Çok Başlı Gizli Dikkat (MLA) mekanizmasını yerel + uzun menzilli hibrit bir tasarımla değiştirir, artımsal bağlantıları Manifold-Kısıtlı Hiper-Bağlantılar (mHC) ile değiştirir ve ilk birkaç MoE katmanını statik bir token-id → expert-id hash tablosuyla başlatır.

Bu uygulama `DeepSeek-V4-Flash`, `DeepSeek-V4-Pro` ve `-Base` önceden eğitilmiş kardeşlerini kapsar. Dördü de aynı mimariyi paylaşır; yalnızca genişlik / derinlik / uzman sayısı ve ağırlıklar açısından farklılık gösterirler.

> [!TIP]
> [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) içinde `use_kernels=True` değerini ayarlayarak desteklenen katmanları Hub'daki optimize edilmiş çekirdeklerle değiştirin. Daha fazla bilgi için [Çekirdekleri yükleme](../kernel_doc/loading_kernels) bölümüne bakın.

## Architecture (kâğıt §2)

### Hibrit dikkat (§2.3)

Her decoder bloğu, `config.layer_types[i]` tarafından yönlendirilen üç dikkat türünden biridir:

* **Kayan pencere tam dikkat** (`"sliding_attention"`): yalnızca `sliding_window` belirteçlik yerel pencere, uzun menzilli dal yok. Bootstrap katmanları için V3'ün "Full Attention" stiliyle eşleşir.
* **Compressed Sparse Attention** (`"compressed_sparse_attention"`, **CSA** — makale §2.3.1): üst üste binen pencerelere sahip düşük sıkıştırma oranlı bir havuz (`compress_rate_csa`, varsayılan `m=4`) ve sorguları havuzla karşılaştırarak puanlayan, ardından çekirdek dikkate ulaşmadan önce her sorgu için en iyi `index_topk` bloğu toplayan bir **Lightning Indexer** (denk. 13–17).
* **Yoğun Sıkıştırılmış Dikkat** (`"heavily_compressed_attention"`, **HCA** — makale §2.3.2): örtüşmeyen pencerelere sahip yüksek sıkıştırma havuzu (`compress_rate_hca`, varsayılan `m'=128`). Indexer yok — havuzdaki her giriş dikkate katkıda bulunur.

Üç türün de aynı omurgayı paylaştığı görülür:

* **Paylaşılan K=V Çoklu Sorgu Dikkati**: `num_key_value_heads = 1`; `kv_proj` tek bir KV başı üretir ve aynı tensör hem anahtar hem değer olarak okunur.
* **Kısmi RoPE** (aralıklı çift, makale §2.3.3 "Partial Rotary Positional Embedding"), her başın sonundaki `qk_rope_head_dim = head_dim * partial_rotary_factor` kanalında uygulanır. Aynı dönüşüm, dikkat çıktısının rope dilimine `-i` konumuyla uygulanır (denklem 26) böylece her KV girdisinin katkısı, sorguya olan *göreli* mesafenin bir fonksiyonu olarak kalır.
* **Baş başına öğrenilebilir dikkat çukuru** (denk. 27).
* **Gruplanmış düşük ranlı çıktı projeksiyonu** (§2.3.1 "Grouped Output Projection"): `o_groups` baş-grubu → grup başına `o_lora_rank` → `hidden_size`, `DeepseekV4GroupedLinear` (`o_a_proj`) ile hesaplanır ve ardından `o_b_proj` uygulanır. Geniş dikkat çıktısının token başına maliyetini, ifade gücünden ödün vermeden azaltır.
* `sliding_window` boyutundaki **Paylaşılan kayan pencere K=V dalı** ("Additional Branch of Sliding Window Attention", §2.3.1) yerel ince taneli bağımlılıkları korur; uzun menzilli sıkıştırıcının çıktısı, çekirdek dikkat işleminden önce bu dalın KV'leriyle birleştirilir.

### Çok-Çizgi Kısıtlı Hiper-Bağlantılar (§2.2)

Kalan bağlantılar, mHC ile değiştirilir (Xie et al., 2026): `hc_mult` paralel kalan akış, her blok boyunca `[B, S, hc_mult, D]` biçiminde tutulur. Dikkat / MLP alt katmanlarının etrafında akışları karıştıran iki `DeepseekV4HyperConnection` modülü — `attn_hc` ve `ffn_hc` — `(pre, post, comb)` üçlüsü aracılığıyla çalışır. `comb` matrisi, manifold üzerindeki `hc_sinkhorn_iters` Sinkhorn–Knopp yinelemeleriyle üretilen çift olasılıksal bir projeksiyondur; bu sayede derin yığınlar boyunca sinyal yayılımı genişletici olmayan (non-expansive) hale gelir. Model normundan önce, son bir `DeepseekV4HyperHead`, `hc_mult` akışını tek bir diziye indirger.

### MoE zamanlaması (§2.1)

Yönlendirme, `{"hash_moe", "moe"}` değerlerinden oluşan `config.mlp_layer_types` ile katman bazında yapılandırılır:

* `"hash_moe"`: uzman indeksleri, V4 kontrol noktasından doldurulan dondurulmuş `tid2eid[input_ids]` aramasından gelir. Öğrenilen `weight` kapısı, seçilen uzmanları ağırlıklandıran uzman başına puanları üretmeye devam eder; yalnızca *hangi uzmanların* seçildiği statiktir. İlk birkaç önyükleme katmanı için kullanılır (varsayılan 3, eski `num_hash_layers` ile geçersiz kılınabilir).
* `"moe"`: standart top-k yönlendirmeli MoE. Uzman yakınlığı, V3'ün Sigmoid'ı yerine **Sqrt(Softplus(·))** kullanır ("yakınlık skorlarını hesaplayan aktivasyon fonksiyonunu Sigmoid(·) yerine Sqrt(Softplus(·)) olarak değiştiriyoruz", makale §2.1) ve V3'ün `n_group` / `topk_group` kısıtı kaldırılır. Yardımcı-kayıpsız strateji (DeepSeek'in `noaux_tc`'i), `e_score_correction_bias` tamponu aracılığıyla korunur; bu tampon, gradyan akıtmadan top-k argmax'ını önyargılar.

Routed uzmanlar, standart Mixtral `[num_experts, 2 * moe_intermediate_size, hidden_size]` uzman ağırlık düzeninin üzerine **clamped SwiGLU** (`gate.clamp(max=swiglu_limit)`, `up.clamp(min=-swiglu_limit, max=swiglu_limit)`, ardından `act_fn(gate) * up`) uygular. Tek bir paylaşılan uzman (`moe_intermediate_size` genişliğinde düz bir SwiGLU MLP), her token üzerinde paralel olarak çalışır.

### Dikkat maskesi yerleşimi

Her `DeepseekV4Attention` katmanı, anahtar ekseni boyunca standart kayan pencere nedensel maskesini, sıkıştırıcısının döndürdüğü `block_bias` ile genişletir ve ardından birleştirilen maskeyi `eager_attention_forward` işlevine iletir. Kayan bölüm (sol, `[S, S]`) her katman tipi için aynıdır; sıkıştırıcı bölümü (sağ) ise katman tipine göre değişir ve V4 tarafından tanıtılan asıl "yeni" parçadır.

Aşağıdaki diyagramlar, tam katman tipi maskesinin ekrana sığması için 16 jetonluk bir girdi üzerinde küçük bir yapılandırma (`sliding_window=8`, CSA `m=4`, HCA `m'=8`, `index_topk=2`) ile oluşturulmuştur. Yeşil = kayan bölümdeki sorgu/anahtar köşegeni, koyu = görünen standart KV konumu, açık = maskelenmiş, kehribar = sorgunun dikkat etmesine izin verilen sıkıştırıcı / indeksleyici yuvası. Kesikli çizgiyi geçen sütunlar, sıkıştırıcı tarafından `cat([sliding_causal_mask, block_bias], dim=-1)` ile eklenir.

**Sadece kayan katman (`"sliding_attention"`).** Sıkıştırıcı yok, sağ dolgusu yok — maske, `[S, S]` boyutlu düz kayan pencere nedensel maskesidir (pencere = 8). `i ≥ window` için sol alt üçgen kesilir ve yalnızca yerel dikkat deseni geri kazanılır.

**CSA katmanı (`"compressed_sparse_attention"`).** Sıkıştırıcı, sorgu başına toplanan çıktısını `[B, 1, S·k, D]` biçimine düzleştirir ve maskenin sağ tarafını `S·k` sütun kadar doldurur. `t` sorgusu için, yalnızca `[S + t·k, S + (t+1)·k)` sütunlarındaki `k` yuva, indeksleyicinin seçimlerini taşır; sıkıştırıcının diğer tüm sütunları `-inf` değerine sahiptir. İlk pencere kapanmadan önceki sorgular (`t < m − 1`) hiçbir şey almaz — indeksleyicinin `-1` işaretçisi doğrudan maskeye yansır. `t` büyüdükçe, daha fazla sıkıştırılmış girdi hazır hale gelir ve indeksleyici tüm `k` yuvayı doldurabilir.

**HCA katmanı (`"heavily_compressed_attention"`).** Indexer yok — önbelleğe alınmış sıkıştırılmış her giriş potansiyel olarak görülebilir. `T_total = entry_count["compressor"]` sütunu kadar sağdan dolgu yapılır. Sorgu `t`, kaynak penceresi kapanana kadar, yani `w < (t + 1) // m` koşuluna kadar, yalnızca `w` girişini görebilir. Burada `m=8` olduğundan, 0 numaralı giriş (pozisyonları `0..7` kapsar) ve 1 numaralı giriş (`8..15` kapsar) sırasıyla `t ≥ 7` ve `t ≥ 15` değerlerinde görülebilir hale gelir.

Bu diyagramlar uçtan uca şu şekilde yeniden üretilebilir:

```bash
python docs/source/en/imgs/deepseek_v4/visualize_attention_masks.py \
    --svg docs/source/en/imgs/deepseek_v4
```

Betik, bu küçük yapılandırma üzerinde bir ileri geçiş çalıştırır, her dikkat katmanını sarmalayarak tam olarak `cat([attention_mask, block_bias])` sonrası maskesini yakalar, CSA'nın `[S, S·k]` düz yuva maskesini bir `[S, T_entries]` girdi görünürlüğü görünümüne geri eşler (böylece her `C_w` sütunu bir toplama yuvası değil, sıkıştırılmış bir *girdi* olur) ve yukarıdaki üç SVG dosyasını yazar. Ayrıca hızlı terminal denetimi için stdout'a bir ANSI ızgarası basar ve ısınma gözcüleri ile seçim tercihlerinin denetlenebilir olması için indeksleyicinin sorgu başına top-k seçimlerini dışa aktarır.

### Önbellek katmanları

Her kayan olmayan dikkat bloğu, ileri çağrılar arasında sıkıştırıcı / indeksleyici durumunu iletmek zorundadır. V4, `LAYER_TYPE_CACHE_MAPPING` ile otomatik olarak kaydedilen iki önbellek katmanı türü sunar:

* `DeepseekV4HCACache`: kayan pencere K=V + HCA sıkıştırıcı tamponu / havuzu / sayısı (örtüşme yok, indeksleyici yok).
* `DeepseekV4CSACache`: kayan pencere K=V + CSA sıkıştırıcı (örtüşme durumuyla) + `index_head_dim` üzerinde paralel indeksleyici tamponu / havuzu / sayısı / örtüşmesi.

`DynamicCache(config=…)`, her `config.layer_types[i]` için doğru önbellek katmanını oluşturur.

## DeepseekV4Config[[transformers.DeepseekV4Config]]

#### transformers.DeepseekV4Config[[transformers.DeepseekV4Config]]

```python
transformers.DeepseekV4Config(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 = 4096, moe_intermediate_size: int = 2048, num_hidden_layers: int = 43, num_attention_heads: int = 64, num_key_value_heads: int = 1, head_dim: int = 512, q_lora_rank: int = 1024, num_experts_per_tok: int = 6, n_routed_experts: int = 256, n_shared_experts: int = 1, scoring_func: str = 'sqrtsoftplus', norm_topk_prob: bool = True, routed_scaling_factor: float = 1.5, max_position_embeddings: int = 1048576, rope_theta: float | int = 10000.0, layer_types: list[str] | None = None, compress_rates: dict | None = None, compress_rope_theta: float | int = 160000.0, hc_mult: int = 4, hc_sinkhorn_iters: int = 20, hc_eps: float = 1e-06, mlp_layer_types: list[str] | None = None, swiglu_limit: float = 10.0, sliding_window: int = 128, o_groups: int = 8, o_lora_rank: int = 1024, index_n_heads: int = 64, index_head_dim: int = 128, index_topk: int = 512, num_nextn_predict_layers: int = 1, output_router_logits: bool = False, router_aux_loss_coef: float = 0.001, router_jitter_noise: float = 0.0, hidden_act: str = 'silu', 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: transformers.modeling_rope_utils.RopeParameters | dict | None = None, partial_rotary_factor: float | None = None, attention_bias: bool = False, mlp_bias: bool = False, attention_dropout: float = 0.0)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v4/configuration_deepseek_v4.py#L40)

**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 `4096`) : Gizli temsillerin 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 `43`) : Transformer decoder'ındaki gizli katman sayısı.

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

num_key_value_heads (`int`, *opsiyonel*, varsayılan `1`) : 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.

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

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

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

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

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

scoring_func (`str`, *isteğe bağlı*, varsayılan `sqrtsoftplus`) : Router aktivasyonu — `sqrtsoftplus`, `softmax` veya `sigmoid`.

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.

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

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

rope_theta (`Union[float, int]`, *isteğe bağlı*, varsayılan `10000.0`) : Ana öz-dikkat döneri için RoPE tabanı.

layer_types (`list[str]`, *isteğe bağlı*) : `{"compressed_sparse_attention", "heavily_compressed_attention"}` değerlerinden oluşan katman başına dikkat zamanlaması. V4-Pro varsayılanı: 2× HCA bootstrap + iç içe CSA / HCA.

compress_rates (`dict[str, int]`) : Katman tipi başına sıkıştırma oranı. Varsayılan `{"compressed_sparse_attention": 4, "heavily_compressed_attention": 128}` (CSA için m=4, HCA için m'=128, makale §2.3.1 / §2.3.2). BC: `compress_rate_csa` / `compress_rate_hca` değerlerini üst düzey kwargs olarak içeren yapılandırmalar, `__post_init__` sırasında birleştirilir.

compress_rope_theta (`Union[float, int]`, *isteğe bağlı*, varsayılan `160000.0`) : Sıkıştırılmış dallar için RoPE tabanı (YaRN için `rope_scaling` ile eşleştirilir).

hc_mult (`int`, *isteğe bağlı*, varsayılan `4`) : Manifold-Constrained Hyper-Connection (mHC) genişleme faktörü n_hc (her zaman etkin; Bölüm 2.2).

hc_sinkhorn_iters (`int`, *isteğe bağlı*, varsayılan `20`) : mHC artık eşleme için çift stokastik matrislere yansıtma için Sinkhorn-Knopp yinelemeleri t_max.

hc_eps (`float`, *isteğe bağlı*, varsayılan `1e-06`) : Sinkhorn-Knopp normalizasyonu için sayısal alt sınır.

mlp_layer_types (`list[str]`, *isteğe bağlı*) : `{"hash_moe", "moe"}` değerlerinden oluşan katman başına MoE zamanlaması. `hash_moe`, dondurulmuş bir `tid2eid[input_ids]` araması üzerinden yönlendirme yapar (makale §2.1, "Hash-MoE bootstrap"); `moe` ise standart top-k yönlendirmeli MoE'dir. Varsayılan: 3× `hash_moe` ardından kalanlar için `moe`. BC: `num_hash_layers` parametresini üst düzey bir kwarg olarak içeren eski yapılandırmalar, `__post_init__` sırasında birleştirilir.

swiglu_limit (`float`, *isteğe bağlı*, varsayılan `10.0`) : Yönlendirilen uzmanların gate/up ön-aktivasyonlarını kırpın.

sliding_window (`int`, *isteğe bağlı*, varsayılan `128`) : Her dikkat bloğunun kayan pencere dalında kullanılan yerel pencere boyutu n_win.

o_groups (`int`, *isteğe bağlı*, varsayılan `8`) : Gruplu çıktı projeksiyonundaki (makale §2.3.1, "Grouped Output Projection") g başlık grubu sayısı.

o_lora_rank (`int`, *isteğe bağlı*, varsayılan `1024`) : Gruplu çıktı projeksiyonundaki grup başına ara boyut d_g.

index_n_heads (`int`, *isteğe bağlı*, varsayılan `64`) : İndeksleyici sorgu baş sayısı n_h^I (makale §2.3.1, denk. 14).

index_head_dim (`int`, *isteğe bağlı*, varsayılan `128`) : Indexer head boyutu c^I (makale §2.3.1).

index_topk (`int`, *isteğe bağlı*, varsayılan `512`) : Lightning Indexer'ın top-k ile her sorgu için tuttuğu sıkıştırılmış giriş sayısı (makale §2.3.1, denklem 17).

num_nextn_predict_layers (`int`, *isteğe bağlı*, varsayılan `1`) : Yukarı akış kontrol noktasındaki MTP katman sayısı (burada örneklenmez).

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.

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

router_jitter_noise (`float`, *opsiyonel*, varsayılan `0.0`) : Daha iyi yük dengelemesi için eğitim sırasında yönlendirici logitlerine eklenecek gürültü miktarı.

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

partial_rotary_factor (`float`, *isteğe bağlı*) : RoPE uygulanan head_dim oranı. Varsayılan olarak `qk_rope_head_dim / head_dim` değerini alır, böylece cos/sin boyutu `qk_rope_head_dim` olur.

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

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

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

Bu, bir DeepseekV4Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Deepseek V4 modeli örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, [deepseek-ai/DeepSeek-V4-Flash-Base](https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Base) 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.

#### validate_layer_type[[transformers.DeepseekV4Config.validate_layer_type]]

```python
validate_layer_type()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v4/configuration_deepseek_v4.py#L214)

V4, standart uzunluk / tip üyelik kontrollerinin yanı sıra, küresel `ALLOWED_LAYER_TYPES` listesini yalnızca birlikte sunduğu üç dikkat bloğu tipine ve iki MLP bloğu tipine daraltır.

## DeepseekV4Model[[transformers.DeepseekV4Model]]

#### transformers.DeepseekV4Model[[transformers.DeepseekV4Model]]

```python
transformers.DeepseekV4Model(config: DeepseekV4Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v4/modeling_deepseek_v4.py#L1296)

**Parametreler:**

config ([DeepseekV4Config](/docs/transformers/main/tr/model_doc/deepseek_v4#transformers.DeepseekV4Config)) : 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 hidden-state'ler üreten çıplak Deepseek V4 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.DeepseekV4Model.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_v4/modeling_deepseek_v4.py#L1314)

**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 ([DeepseekV4Config](/docs/transformers/main/tr/model_doc/deepseek_v4#transformers.DeepseekV4Config)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

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

## DeepseekV4ForCausalLM[[transformers.DeepseekV4ForCausalLM]]

#### transformers.DeepseekV4ForCausalLM[[transformers.DeepseekV4ForCausalLM]]

```python
transformers.DeepseekV4ForCausalLM(config: DeepseekV4Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/deepseek_v4/modeling_deepseek_v4.py#L1441)

**Parametreler:**

config ([DeepseekV4Config](/docs/transformers/main/tr/model_doc/deepseek_v4#transformers.DeepseekV4Config)) : 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 V4 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.DeepseekV4ForCausalLM.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/deepseek_v4/modeling_deepseek_v4.py#L1459)

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

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

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

>>> model = DeepseekV4ForCausalLM.from_pretrained("mistralai/DeepseekV4-8x7B-v0.1")
>>> tokenizer = AutoTokenizer.from_pretrained("mistralai/DeepseekV4-8x7B-v0.1")

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

