---
title: "DeepSeek V3 Mimarisini 190 Satır Saf JAX İle İncelemek"
url: https://blog.edumints.com/deepseek-v3-mimarisini-190-satir-saf-jax-ile-incelemek
category: "Makine Öğrenmesi"
date: 2026-11-14T17:06:13.301Z
publisher: Edumints Blog
lang: tr-TR
source_name: "Hacker News"
source_url: https://github.com/Vaibhaav-Tiwari/deepseek-v3-jax
---

# DeepSeek V3 Mimarisini 190 Satır Saf JAX İle İncelemek

Büyük dil modellerinin teknik raporlarını okurken soyut matematiksel formüllerle gerçek kod arasındaki bağı kurmak bazen zorlaşır. Vaibhaav Tiwari tarafından paylaşılan `deepseek-v3-jax` projesi, DeepSeek-V3 teknik raporundaki çekirdek mimariyi hiçbir ek kütüphane kullanmadan 190 satırlık saf JAX koduyla sıfırdan uyguluyor. Flax, Equinox veya PyTorch yok. Modeldeki tüm parametreler düz dizi sözlükleri (dicts of arrays) olarak tutuluyor ve her bileşen `deepseek_v3.py` dosyasında yukarıdan aşağıya okunabilen saf fonksiyonlardan oluşuyor.

## Kütüphanesiz Mimaride Neler Var?

Geliştirici, karmaşık çerçeveleri aradan çıkararak modelin yapı taşlarını doğrudan görünür kılmış. Tek bir dosyada bir araya getirilen temel mekanizmalar şunlar:

- **Multi-head Latent Attention (MLA) ve Ayrık RoPE:** Standart yaklaşımdaki gibi tüm anahtar (key) ve değerleri (value) önbellekte tutmak yerine token başına tek bir küçük gizli (latent) temsil önbelleğe alınıyor. Böylece katman ve token başına saklanan sayı miktarı 480'den 144'e düşüyor (`mla`, `init_cache`). Tüm dikkat başlıklarının (heads) paylaştığı tek bir döner anahtar (rotary key) ise sıkıştırılmış bu gizli alanın dışında tutuluyor (`rope`, `apply_rope`).
- **DeepSeekMoE ve Yardımcı Kayıpsız Dengeleme:** Mimari, her zaman çalışan 1 paylaşımlı uzman ile token başına en yüksek skorlu 4 tanesi seçilen 16 yönlendirilmiş uzmandan oluşuyor (`route`, `moe`). Uzmanlar arasındaki yükü dengelemek için ek bir kayıp fonksiyonu (auxiliary loss) kullanılmıyor. Bunun yerine uzman başına tanımlanan bir sapma (bias) değeri, yönlendirmeyi boşta kalan uzmanlara doğru itiyor (`update_bias`). Bu mekanizma uzmanların ağırlıklarını değiştirmeden yalnızca hangi uzmanların seçileceğini belirliyor. Ek olarak makaledeki küçük tamamlayıcı dizi bazlı denge kaybı (`seq_balance_loss`, α = 1e-4) hesaba katılıyor.
- **Çoklu Token Tahmini (MTP):** Modele eklenen fazladan bir modül, bir sonraki token'ın ardından gelen token'ı da tahmin ediyor ve toplam kayıp fonksiyonuna λ = 0.3 ağırlığıyla katılıyor (`forward`, `loss_fn`).

## MacBook Air Üzerinde Sıfırdan Eğitim

Bu çalışma güçlü bir dil modeli üretmeyi değil, mimarinin nasıl çalıştığını göstermeyi hedefliyor. Eğitim süreci 24 GB belleğe sahip M5 işlemcili bir MacBook Air üzerinde, kamu malı dedektif kurgu metinleriyle sıfırdan gerçekleştirilmiş.

Toplam 36.2 milyon parametreye sahip modelde her token için 13.6 milyon parametre aktifleşiyor. Eğitimde f32 ana ağırlıklar üzerinde bf16 hesaplaması (`make_train_step`, `generate`) kullanılmış. Hammett eserlerinin 3 kez tekrarlandığı 207 kitaptan oluşan 21.7 milyon eğitim token'ı ile 12.000 adım (~98 milyon token, ~4.5 epoch) süren eğitim yaklaşık 2.6 saatte tamamlanmış. Saniyede ortanca 10.7 bin token hızına ulaşan modelin doğrulama kaybı (validation loss), 250. adımdaki 5.02 seviyesinden 3.51'e gerilemiş.

Makalenin en önemli iddialarından biri olan kayıpsız yük dengelemenin etkisi bu küçük deneyde bile net biçimde görülüyor. 2000. adımda doğrulama kaybı dengeleme açıkken (3.921) ve kapalıyken (3.923) neredeyse aynı kalmış. Ancak uzman yük dağılımına bakıldığında, sapma değeri kapalıyken uzman başına yük %0.09 ile %18.6 arasında dengesizce dağılırken, sapma açıkken %5.7 ile %6.9 aralığında (ideal eşit dağılım %6.25) dengelenmiş. Yani bu yöntem ek bir performans maliyeti yaratmadan uzman kullanımını eşitliyor.

## Kodu İncelemek ve Denemek İçin

Derin öğrenme çatılarının soyutlama katmanları altında kaybolmadan modern bir MoE ve dikkat mekanizmasının matris çarpımları düzeyinde nasıl işlediğini görmek istiyorsan bu depo doğrudan okunacak bir kaynak. Veri hazırlamadan eğitime kadar tüm süreç `prepare_data.py`, `train.py`, `sample.py` ve `tests.py` gibi ayrı betiklerle açıkça paylaşılmış.

Eğitilmiş modeli kendi bilgisayarında denemek istersen, v1.0 sürümünde yayınlanan çalışmanın birebir kontrol noktasını (checkpoint) ve verisini bulabilirsin. Kurulum adımlarının ilkini tamamladıktan sonra şu komutlarla dizinleri oluşturup ağırlık dosyasını indirebilirsin:

```bash
mkdir -p data runs/main
curl -L -o runs/main/ckpt.pkl
```

Eğitilen bu küçük model, "The fog came in off the" istemi verildiğinde kendi kelimeleriyle şu çıktıyı üretiyor: *"The fog came in off the bay, and the great trees were spreading and the stars were shining."* Büyük kümeler olmadan da güncel makalelerdeki algoritmaları yerel donanımda doğrulamak ve satır satır takip ederek öğrenmek için bu yapıyı kendi deneylerine temel alabilirsin.

---

**Kaynak:** Hacker News (https://github.com/Vaibhaav-Tiwari/deepseek-v3-jax)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/deepseek-v3-mimarisini-190-satir-saf-jax-ile-incelemek
