Transformers documentation

DeepSeek-V4

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bu model, 2026-05-02 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.

DeepSeek-V4

DeepSeek-V4, DeepSeek'in bir sonraki nesil MoE dil modelidir (makale). 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.

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 bölümüne bakın.

Mimari (makale §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 dikkati ("sliding_attention"): yalnızca sliding_window belirteçlik yerel pencere, uzun menzilli dal yok. V3’ün bootstrap katmanları için “Full Attention” stiliyle eşleşir.
  • Sıkıştırılmış Seyrek Dikkat ("compressed_sparse_attention", CSA — makale §2.3.1): örtüşen 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 — havuzlanmış 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ı tensor 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 kanallarına 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 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)

Residual bağlantılar, mHC ile değiştirilir (Xie et al., 2026): hc_mult paralel residual akışları, her blok boyunca [B, S, hc_mult, D] biçiminde tutulur. İki DeepseekV4HyperConnection modülü — attn_hc ve ffn_hc — (pre, post, comb) üçlüsü aracılığıyla dikkat / MLP alt katmanlarının etrafında akışları karıştırır. comb matrisi, manifold üzerindeki hc_sinkhorn_iters Sinkhorn–Knopp iterasyonlarıyla üretilen çift olasılıklı bir projeksiyondur; bu da derin yığınlar boyunca sinyal yayılımının genişletici olmayan (non-expansive) olmasını sağlar. Son bir DeepseekV4HyperHead, model normundan önce hc_mult akışları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 kapı weight hâlâ seçilen uzmanları ağırlıklandıran uzman başına puanları üretir; 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), top-k argmax’i gradyan akıtmadan önyargılayan e_score_correction_bias tamponu aracılığıyla korunur.

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 ekseninde 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) kullanılarak 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 çizginin ötesindeki 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 (pencere = 8) düz kayan pencere nedensel maskesidir. i ≥ window için sol alt üçgen kesilir ve yalnızca yerel dikkat deseni geri kazanılır.

DeepSeek-V4 sliding attention mask

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.

DeepSeek-V4 CSA attention mask

HCA katmanı ("heavily_compressed_attention"). Indexer yok — önbelleğe alınmış sıkıştırılmış her giriş potansiyel olarak görünür. T_total = entry_count["compressor"] sütunu ile sağdan dolgu yapılır. Sorgu t, kaynak penceresi kapanana kadar, yani w < (t + 1) // m koşulunu sağlayan 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 yalnızca t ≥ 7 ve t ≥ 15 anlarında görünür hale gelir.

DeepSeek-V4 HCA attention mask

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

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ütanı 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) + paralel indeksleyici index_head_dim için tampon / havuz / sayı / örtüşme.

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

DeepseekV4Config

sınıf transformers.DeepseekV4Config

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 129280hidden_size: int = 4096moe_intermediate_size: int = 2048num_hidden_layers: int = 43num_attention_heads: int = 64num_key_value_heads: int = 1head_dim: int = 512q_lora_rank: int = 1024num_experts_per_tok: int = 6n_routed_experts: int = 256n_shared_experts: int = 1scoring_func: str = 'sqrtsoftplus'norm_topk_prob: bool = Truerouted_scaling_factor: float = 1.5max_position_embeddings: int = 1048576rope_theta: float | int = 10000.0layer_types: list[str] | None = Nonecompress_rates: dict | None = Nonecompress_rope_theta: float | int = 160000.0hc_mult: int = 4hc_sinkhorn_iters: int = 20hc_eps: float = 1e-06mlp_layer_types: list[str] | None = Noneswiglu_limit: float = 10.0sliding_window: int = 128o_groups: int = 8o_lora_rank: int = 1024index_n_heads: int = 64index_head_dim: int = 128index_topk: int = 512num_nextn_predict_layers: int = 1output_router_logits: bool = Falserouter_aux_loss_coef: float = 0.001router_jitter_noise: float = 0.0hidden_act: str = 'silu'initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1tie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonepartial_rotary_factor: float | None = Noneattention_bias: bool = Falsemlp_bias: bool = Falseattention_dropout: float = 0.0 )

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önlendirilen uzman MLP'lerinin ara boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 43) — Transformer çözücüdeki 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, isteğe bağlı, varsayılan 1) — Bu, Grouped Query Attention uygulamasında kullanılacak 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 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şlığı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alı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 tokenın yönlendirileceği uzman sayısı. Bu, token seçimli yönlendirmede 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ği.
  • routed_scaling_factor (float, isteğe bağlı, varsayılan 1.5) — Ölçekleme faktörü veya yönlendirilen uzmanlar.
  • max_position_embeddings (int, isteğe bağlı, varsayılan 1048576) — Bu modelin kullanılabileceği en uzun 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ı) — Katman başına dikkat zamanlaması, değerler {"compressed_sparse_attention", "heavily_compressed_attention"} kümesinden seçilir. 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: üst düzey kwargs olarak compress_rate_csa / compress_rate_hca 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şlemesinin çift stokastik matrislere izdüşümünde kullanılan Sinkhorn-Knopp t_max yinelemeleri.
  • 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ı) — Katman başına MoE zamanlaması, değerler {"hash_moe", "moe"} kümesinden seçilir. hash_moe, dondurulmuş 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: ilk 3 katman için hash_moe, geri kalanlar için moe. BC: üst düzey bir kwarg olarak num_hash_layers 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 g başlık grubu sayısı (kâğıt §2.3.1, “Grouped Output Projection”).
  • 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) — Dizinleyici sorgu baş sayısı n_h^I (makale §2.3.1, denklem 14).
  • index_head_dim (int, isteğe bağlı, varsayılan 128) — Indexer head dim c^I (makale §2.3.1).
  • index_topk (int, isteğe bağlı, varsayılan 512) — Lightning Indexer'ın top-k ile her sorgu başına 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 logits'lerini döndürüp döndürmeyeceği. Bu özelliğin etkinleştirilmesi, modelin yük dengeleme kaybı ve router z-kaybı dahil olmak üzere yardımcı kaybı da çıkarmasına olanak tanı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, isteğe bağlı, varsayılan 0.0) — Dengeli yük dağılımı için eğitim sırasında router logitlerine eklenecek gürültü miktarı.
  • hidden_act (str, isteğe bağlı, varsayılan silu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • initializer_range (float, isteğe bağlı, 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, isteğe bağlı, 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 (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. 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) — Modelin tied_weights_keys eşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
  • 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 ve daha uzun max_position_embeddings ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan isteğe bağlı parametreleri 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ğerine ayarlanır, böylece cos/sin boyutu qk_rope_head_dim olur.
  • attention_bias (bool, isteğe bağlı, varsayılan False) — Öz-dikkat sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında önyargı (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 modelini ö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 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.

validate_layer_type

< >

( )

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

sınıf transformers.DeepseekV4Model

< >

( config: DeepseekV4Config )

Parametreler

  • config (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() yöntemine bakın.

Üzerinde herhangi bir özel head olmadan ham hidden-state'ler üreten çıplak Deepseek V4 Modeli.

Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

    Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Girdi kimlikleri nelerdir?

  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • 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 ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden 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üş değeri

MoeModelOutputWithPast veya tuple(torch.Tensor)

MoeModelOutputWithPast veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırma (DeepseekV4Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

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ü önceki, ö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 örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza 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 (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer 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 (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıkları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) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, sequence_length, num_experts).

    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

sınıf transformers.DeepseekV4ForCausalLM

< >

( config: DeepseekV4Config )

Parametreler

  • config (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() yöntemine bakın.

Nedensel dil modellemesi için Deepseek V4 Modeli.

Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_router_logits: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

    Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Girdi kimlikleri nelerdir?

  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • 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 ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden 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 etiketleri [0, ..., config.vocab_size] aralığında olan 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. Yönlendirici kaybının (router loss) hesaplanmasında faydalıdırlar 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 logits'leri gereklidir 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 boyutundaki korunacak 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üş değeri

MoeCausalLMOutputWithPast veya tuple(torch.Tensor)

MoeCausalLMOutputWithPast veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (DeepseekV4Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

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ü önceki, ö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, isteğe bağlı, 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 örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza 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 (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer 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 (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

>>> 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."
Update on GitHub