Transformers documentation
DeepSeek-V4
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=Truedeğ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ızcasliding_windowbelirteç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ılanm=4) ve sorguları havuzla karşılaştırarak puanlayan, ardından çekirdek dikkate ulaşmadan önce her sorgu için en iyiindex_topkbloğ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ılanm'=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_projtek 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_factorkanallarına uygulanır. Aynı dönüşüm, dikkat çıktısının rope dilimine-ikonumuyla 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_groupsbaş-grubu → grup başınao_lora_rank→hidden_size,DeepseekV4GroupedLinear(o_a_proj) ile hesaplanır ve ardındano_b_projuygulanır. Geniş dikkat çıktısının token başına maliyetini, ifade gücünden ödün vermeden azaltır. sliding_windowboyutundaki 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ıweighthâ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, eskinum_hash_layersile 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’ünn_group/topk_groupkısıtı kaldırılır. Yardımcı-kayıpsız strateji (DeepSeek’innoaux_tc), top-k argmax’i gradyan akıtmadan önyargılayane_score_correction_biastamponu 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.
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ü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.
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_v4Betik, 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 indeksleyiciindex_head_dimiç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
< source >( 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ılan129280) — Modelin sözlük boyutu.input_idstarafından temsil edilebilecek farklı token sayısını tanımlar. - hidden_size (
int, isteğe bağlı, varsayılan4096) — Gizli temsillerin boyutu. - moe_intermediate_size (
int, isteğe bağlı, varsayılan2048) — Yönlendirilen uzman MLP'lerinin ara boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan43) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan64) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - num_key_value_heads (
int, isteğe bağlı, varsayılan1) — Bu, Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır.num_key_value_heads=num_attention_headsise model Multi Head Attention (MHA) kullanır,num_key_value_heads=1ise 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 olaraknum_attention_headskullanılır. - head_dim (
int, isteğe bağlı, varsayılan512) — 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ılan1024) — Sorgu projeksiyonları için LoRA matrislerinin rütbesi. - num_experts_per_tok (
int, isteğe bağlı, varsayılan6) — 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ılan256) — Yönlendirilen uzman sayısı. - n_shared_experts (
int, isteğe bağlı, varsayılan1) — Paylaşılan uzman sayısı. - scoring_func (
str, isteğe bağlı, varsayılansqrtsoftplus) — Router aktivasyonu —sqrtsoftplus,softmaxveyasigmoid. - norm_topk_prob (
bool, isteğe bağlı, varsayılanTrue) — Yönlendirilen uzmanların ağırlıklarının normalize edilip edilmeyeceği. - routed_scaling_factor (
float, isteğe bağlı, varsayılan1.5) — Ölçekleme faktörü veya yönlendirilen uzmanlar. - max_position_embeddings (
int, isteğe bağlı, varsayılan1048576) — Bu modelin kullanılabileceği en uzun dizi uzunluğu. - rope_theta (
Union[float, int], isteğe bağlı, varsayılan10000.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 olarakcompress_rate_csa/compress_rate_hcaiçeren yapılandırmalar__post_init__sırasında birleştirilir. - compress_rope_theta (
Union[float, int], isteğe bağlı, varsayılan160000.0) — Sıkıştırılmış dallar için RoPE tabanı (YaRN içinrope_scalingile eşleştirilir). - hc_mult (
int, isteğe bağlı, varsayılan4) — 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ılan20) — 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ılan1e-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”);moeise standart top-k yönlendirmeli MoE’dir. Varsayılan: ilk 3 katman içinhash_moe, geri kalanlar içinmoe. BC: üst düzey bir kwarg olaraknum_hash_layersiçeren eski yapılandırmalar,__post_init__sırasında birleştirilir. - swiglu_limit (
float, isteğe bağlı, varsayılan10.0) — Yönlendirilen uzmanların gate/up ön-aktivasyonlarını kırpın. - sliding_window (
int, isteğe bağlı, varsayılan128) — Her dikkat bloğunun kayan pencere dalında kullanılan yerel pencere boyutu n_win. - o_groups (
int, isteğe bağlı, varsayılan8) — 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ılan1024) — Gruplu çıktı projeksiyonundaki grup başına ara boyut d_g. - index_n_heads (
int, isteğe bağlı, varsayılan64) — Dizinleyici sorgu baş sayısı n_h^I (makale §2.3.1, denklem 14). - index_head_dim (
int, isteğe bağlı, varsayılan128) — Indexer head dim c^I (makale §2.3.1). - index_topk (
int, isteğe bağlı, varsayılan512) — 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ılan1) — Yukarı akış kontrol noktasındaki MTP katman sayısı (burada örneklenmez). - output_router_logits (
bool, isteğe bağlı, varsayılanFalse) — 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ılan0.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ılan0.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ılansilu) — Çö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ılan0.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ılan1e-06) — rms normalizasyon katmanları tarafından kullanılan epsilon. - use_cache (
bool, isteğe bağlı, varsayılanTrue) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızcaconfig.is_decoder=Trueolduğ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ılan0) — 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ılan1) — Sözlükte akış sonu için kullanılan token kimliği. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanFalse) — Modelintied_weights_keyseş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_thetaiçin bir değer ve daha uzunmax_position_embeddingsile 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 olarakqk_rope_head_dim / head_dimdeğerine ayarlanır, böylece cos/sin boyutuqk_rope_head_dimolur. - attention_bias (
bool, isteğe bağlı, varsayılanFalse) — Ö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ılanFalse) — 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ılan0.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.
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
< source >( 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
< source >( 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.
- 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.
- 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]. - 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarakconfig.is_encoder_decoder=Trueise cross-attention bloklarındaki anahtar ve değerler) içerir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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=Trueveconfig.add_router_probs=Truegeçirildiğinde veyaconfig.output_router_probs=Trueolduğ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
< source >( 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
< source >( 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.
- 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.
- 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]. - 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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_idsdocstring'ine bakın). Endeksleri-100olarak 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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ılan0) —intise, sonlogits_to_keeptoken için logits hesaplanır.0ise, tüminput_idsiç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.Tensorise, 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ı,labelssağ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=Truegeçirildiğinde veyaconfig.output_router_logits=Trueolduğ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) buradaNonedöndürürken yine derouter_logitsdöndürür.router_logits (
tuple(torch.Tensor), isteğe bağlı,output_router_logits=Truegeçirildiğinde veyaconfig.output_router_logits=Trueolduğ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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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."