ÖZET
nanochat, Andrej Karpathy'nin açık kaynaklı LLM eğitim çerçevesidir ve yaklaşık 50 dolar maliyetle, 2 saatten kısa sürede GPT-2 seviyesinde bir sohbet robotu eğitebilmenizi sağlar. Proje, tek bir 8xH100 GPU düğümünde, ~500 satırlık çekirdek kodla çalışır ve tüm hiperparametreleri otomatik optimize etmek için yalnızca bir yapılandırma parametresine (--depth) odaklanır. Mevcut kayıtlar, 1.65 saatte 0.2626 CORE puanına ulaşarak OpenAI'ın 2019'da 43.000 dolara ve 168 saatte tamamladığı GPT-2 eğitimini geride bırakıyor.
Giriş
Büyük bir dil modeli eğitmek artık milyonlarca dolar ve uzmanlardan oluşan bir ekip gerektirmiyor. Andrej Karpathy, nanochat projesiyle, düşük maliyetle ve kısa sürede GPT-2 seviyesinde bir sohbet yapay zekası eğitilebileceğini kanıtladı. Tüm süreç tek bir 8xH100 GPU düğümünde, 2 saatten kısa sürede tamamlanabiliyor.
💡 Apidog gibi API geliştirme platformlarıyla nanochat'i entegre ederek yapay zeka servislerinizi kolayca test edebilir, dokümante edebilir ve üretim kalitesinde AI uygulamaları oluşturabilirsiniz.
Bu Neden Şimdi Önemli?
Yapay zeka ekosistemi 2026'nın başlarında dramatik şekilde değişti. OpenAI'ın 2019'da 43.000 dolara ve 168 saatte yaptığı iş, artık 1.65 saatte ve 48 dolara tamamlanabiliyor. Bu, algoritma optimizasyonları ve gelişmiş donanım ile mümkün oldu. Artık API geliştiricileri veya küçük ekipler, devasa altyapı bütçelerine gerek duymadan özel LLM eğitimi ve denemeleri yapabiliyor.
Neler Öğreneceksiniz?
Bu yazıda şunları uygulayabilecek ve kavrayabileceksiniz:
- nanochat’in LLM eğitim maliyetini nasıl 100 kat düşürdüğünü
- Mimarinin tamamını (GPT modeli, Muon optimize edici, veri yükleme)
- Kendi modelinizi eğitmek için tam adımları
- Hızlı LLM araştırması ve prototiplemesi için nanochat’i nasıl kullanacağınızı
- Gerçek sınırları ve GPT-2 seviyesinin ne anlama geldiğini
nanochat Nedir?
nanochat, uçtan uca LLM eğitimi için minimal bir çerçevedir. Şu süreçleri kapsar: tokenizasyon, ön eğitim, ince ayar (SFT), değerlendirme, çıkarım ve ChatGPT benzeri bir web arayüzü.
Kod tabanı tek depo içinde, sade ve okunabilir. Karpathy bunu "güçlü bir temel" olarak tasarladı: değiştirmesi ve çatallaması kolay.
Temel İddia
GPT-2 boyutundaki bir model (1.6B parametre) için eğitim maliyeti:
- Talep üzerine 48 dolar (8xH100, 2 saat)
- Spot örneklerde ~15 dolar
Karşılaştırma için: OpenAI, GPT-2'yi 2019'da 43.000 dolara, 7 gün ve 32 TPU v3 ile eğitti.
nanochat Neleri Kapsar?
| Aşama | Betik | Açıklama |
|---|---|---|
| Belirteçleme | scripts.tok_train |
BPE belirteçleyiciyi eğit (32,768 kelime) |
| Ön eğitim | scripts.base_train |
GPT modelini eğit |
| İnce ayar | scripts.chat_sft |
Sohbet için denetimli SFT |
| Değerlendirme | scripts.base_eval |
CORE metriği, bayt başına bit |
| Çıkarım | scripts.chat_cli |
CLI sohbet arayüzü |
| Web Arayüzü | scripts.chat_web |
ChatGPT tarzı web arayüzü |
Felsefe: Her Şeyi Kontrol Eden Tek Bir Kadran
Çoğu LLM çerçevesi karmaşık yapılandırma dosyalarıyla gelir. nanochat ise her şeyi tek bir parametreye, --depth'e indirger.
# GPT-1 boyutu
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=12
# GPT-2 boyutu
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=24
# Daha büyük model
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26
Derinliği değiştirin, nanochat geri kalan her şeyi otomatik olarak hesaplar:
- Transformatör genişliği
- Dikkat başlıkları
- Öğrenme hızları
- Eğitim adım sayısı
- Ağırlık azaltma programı
- Yığın boyutları
Bu "tek kadran" yaklaşımı, farklı boyutlarda, optimum şekilde eğitilmiş modeller ailesi oluşturmayı kolaylaştırıyor.
Bu Neden İşe Yarar?
nanochat, derinlik, genişlik, yığın boyutu ve eğitim süresi arasında ölçeklendirme yasalarını doğrudan eğitim betiğine kodlar. Böylece modeliniz, hesaplama açısından optimal biçimde eğitilir.
Lider Tablosu: GPT-2'yi Geçme Yarışı
nanochat, halka açık bir lider tablosunda "GPT-2 seviyesine ulaşma süresi"ni izler. Hedef: 22 değerlendirme görevinde OpenAI'ın 0.256525 CORE puanını aşmak.
Mevcut Rekorlar
| Çalışma | Model | Süre | CORE Puanı | Temel Yenilik |
|---|---|---|---|---|
| Orijinal GPT-2 | 1.6B | 168 saat | 0.2565 | OpenAI 2019 çizgisi |
| Çalışma 1 | d24 | 3.04 saat | 0.2585 | İlk temel çizgi |
| Çalışma 2 | d26 | 2.91 saat | 0.2578 | FP8 eğitimi |
| Çalışma 3 | d26 | 2.76 saat | 0.2602 | 1M belirteç yığın boyutu |
| Çalışma 4 | d24 | 2.02 saat | 0.2571 | ClimbMix veri kümesi |
| Çalışma 5 | d24 | 1.80 saat | 0.2690 | AI tarafından bulunan opt. |
| Çalışma 6 | d24 | 1.65 saat | 0.2626 | Gelişmiş smear/backout |
Yapay Zeka Optimizasyonları Nasıl Keşfetti?
Çalışma 5 ve 6'da, Karpathy'nin "otomatik araştırma" sistemi ile küçük modellerde test edilen mimari değişiklikler tam kurulumda uygulandı. Örneğin:
- Geri çekilme mekanizması (Backout): Orta katman artıkları daha iyi çıkarıldı
- Yayma (Smear): Bigram karıştırma daha verimli hale geldi
Bu değişikliklerle eğitim süresi 2.02 saatten 1.65 saate indi.
nanochat Nasıl Çalışır?
Kod tabanı yaklaşık 3.000 satırdan oluşur. Temel bileşenleri:
1. GPT Modeli (nanochat/gpt.py)
- Döner gömmeler (RoPE)
- QK normalizasyonu
- Bağlantısız ağırlıklar
- ReLU² aktivasyonu
- Gruplandırılmış Sorgu Dikkat Mekanizması (GQA)
- Kayar pencere dikkati
- Flash Attention 3
Değer Gömmeleri (ResFormer):
# Value residual: mix in value embedding with per-head gate
if ve is not None:
ve = ve.view(B, T, self.n_kv_head, self.head_dim)
gate = 3 * torch.sigmoid(self.ve_gate(x[..., :self.ve_gate_channels]))
v = v + gate.unsqueeze(-1) * ve
Verimlilik Püf Noktaları:
# 1. Katman başına artıklık ölçekleme
x = self.resid_lambdas[i] * x + self.x0_lambdas[i] * x0
# 2. Yayma: bigram bilgisi için önceki belirteç gömme karıştırma
gate = self.smear_lambda * torch.sigmoid(self.smear_gate(x[:, :, :24]))
x = x + gate * x_pre_smear
# 3. Geri çekilme: orta katman artıklığını çıkarma
x = x - self.backout_lambda * x_backout
2. Muon Optimize Edici (nanochat/optim.py)
| Parametre Tipi | Optimize Edici | Amaç |
|---|---|---|
| Gömmeler, lm_head | AdamW | Standart adaptif optimizasyon |
| Skaler parametreler | AdamW | Öğrenilmiş ölçekler |
| 2D matrisler | Muon | Ortogonalleştirilmiş update |
Muon (Newton-Schulz ile Ortogonalleştirilmiş Momentum):
# Polar Express katsayıları (5 iterasyon)
polar_express_coeffs = [
(8.156, -22.483, 15.879),
(4.043, -2.809, 0.500),
# ...
]
# Ortogonalleştirme döngüsü
for a, b, c in polar_express_coeffs[:ns_steps]:
A = X.mT @ X
B = b * A + c * (A @ A)
X = a * X + X @ B
NorMuon Varyans Azaltma:
v_mean = g.float().square().mean(dim=red_dim, keepdim=True)
v_norm = v_mean.sum(dim=(-2, -1), keepdim=True).sqrt()
final_scale = step_size * (v_norm / v_norm_new.clamp_min(1e-10))
g = g * final_scale.to(g.dtype)
Dağıtılmış Eğitim:
Aşama 1: Tüm eşzamansız reduce_scatter işlemlerini başlat
Aşama 2: Azaltmaları bekle, güncellemeleri hesapla, all_gathers'ı başlat
Aşama 3: Toplamaları bekle, güncellenmiş parametreleri geri kopyala
3. Hassasiyet Yönetimi (nanochat/common.py)
| Donanım | Varsayılan Veri Tipi | Neden |
|---|---|---|
| CUDA SM 80+ (A100, H100) | bfloat16 | Yerel BF16 çekirdekleri |
| CUDA SM < 80 (V100, T4) | float32 | BF16 desteği yok |
| CPU / MPS | float32 | Donanım desteği yok |
class Linear(nn.Linear):
def forward(self, x):
return F.linear(x, self.weight.to(dtype=x.dtype))
H100 ve Blackwell GPU'lar için --fp8 ile FP8 eğitimi aktif edilebilir.
4. Veri Yükleme (nanochat/dataloader.py)
- Satırlar BOS (Dizinin Başı) belirteciyle başlar
- Belgeler en uygun algoritmayla paketlenir
- Dolu olmayan durumda belge kırpılır
- %100 kullanım, ~%35 kırpma ile
# Tamamen uyan en büyük belgeyi bul
best_idx = -1
best_len = 0
for i, doc in enumerate(doc_buffer):
doc_len = len(doc)
if doc_len <= remaining and doc_len > best_len:
best_idx = i
best_len = doc_len
if best_idx >= 0:
doc = doc_buffer.pop(best_idx)
# Tam belgeyi ekle
else:
# Kalan alanı doldurmak için en kısa belgeyi kırp
5. Flash Dikkat Mekanizması Birleşimi (nanochat/flash_attention.py)
from nanochat.flash_attention import flash_attn
y = flash_attn.flash_attn_func(q, k, v, causal=True, window_size=window_size)
Hopper GPU'larda FA3, diğerlerinde PyTorch SDPA otomatik seçilir.
6. Çıkarım Motoru (nanochat/engine.py)
- KV Önbelleği: FA3 ile hızlı önbellek
- Araç Kullanımı: Özel belirteçlerle Python hesaplayıcı tetikleme
- Toplu Üretim: Paralel örnekleme için KV cache klonlama
Adım Adım: Kendi Modelinizi Eğitin
Eğitim ve çıkarım süreçlerini adım adım uygulayın.
Ön Koşullar
- 8xH100 GPU düğümü (veya eşdeğeri)
- ~20 GB disk alanı
- Python 3.10+
- uv paket yöneticisi
Adım 1: Ortam Kurulumu
# uv'yi yükle
curl -LsSf https://astral.sh/uv/install.sh | sh
# Sanal ortam oluştur ve etkinleştir
uv venv
source .venv/bin/activate
# Bağımlılıkları yükle
uv sync --extra gpu
Adım 2: Eğitim Verilerini İndirin
# ClimbMix veri kümesinden ~2B karakter indir
python -m nanochat.dataset -n 170
# ~170 bölüm, toplam ~17 GB
Adım 3: Belirteçleyiciyi Eğitin
# 32.768 kelime dağarcığı ile BPE belirteçleyici
python -m scripts.tok_train
# Sıkıştırma oranı değerlendirme
python -m scripts.tok_eval
Adım 4: Temel Modeli Ön Eğitin
# d24 modelini eğit (GPT-2 yeteneği)
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- \
--depth=24 \
--target-param-data-ratio=8 \
--device-batch-size=16 \
--fp8 \
--run=my-first-model
Adım 5: Denetimli İnce Ayar
# Kimlik konuşmalarını indir
curl -L -o ~/.cache/nanochat/identity_conversations.jsonl \
https://karpathy-public.s3.us-west-2.amazonaws.com/identity_conversations.jsonl
# SFT başlat
torchrun --standalone --nproc_per_node=8 -m scripts.chat_sft -- \
--device-batch-size=16 \
--run=my-sft
Adım 6: Modelinizle Sohbet Edin
# CLI üzerinden sohbet
python -m scripts.chat_cli -p "Why is the sky blue?"
# Web arayüzü başlat
python -m scripts.chat_web
Web arayüzü 8000 portunda çalışır ve ChatGPT'ye benzeyen bir deneyim sunar.
Araştırma İş Akışı: Hızlı Deneyler
Daha hızlı prototipleme için küçük modeller kullanın.
Hızlı Deneyler (~5 dakika)
OMP_NUM_THREADS=1 torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- \
--depth=12 \
--run="d12-test" \
--core-metric-every=999999 \
--sample-every=-1 \
--save-every=-1
Bu, minimum günlük kaydı ile d12 (GPT-1) boyutunda bir modeli hızlıca eğitir.
İzlenecek Metrikler
- val_bpb: Doğrulama bayt başına bit
- core_metric: DCLM CORE değerlendirme puanı
- train/mfu: GPU verimliliği (FLOPS kullanımı)
- train/tok_per_sec: Eğitim verimi
Test Gereksinimleri
Her değişikliği d12'den d26'ya kadar olan tüm derinliklerde test edin. Böylece modeliniz tek bir boyuta fazla uymaz, genel iyileştirme sağlanır.
nanochat Neden Önemli?
Maliyet Erişilebilirliği
| Yaklaşım | Maliyet | Süre | Donanım |
|---|---|---|---|
| OpenAI GPT-2 (2019) | $43,000 | 168 saat | 32xTPU v3 |
| nanochat (2026) | $48 | 2 saat | 8xH100 |
| nanochat spot | ~$15 | 2 saat | 8xH100 spot |
Bu sayede bireysel araştırmacılar, küçük start-up'lar, üniversite dersleri ve hobi sahipleri de LLM eğitebilir.
Eğitimsel Değer
- GPT modeli: ~500 satır
- Optimize edici: ~530 satır
- Tüm kararlar kodda açıkça belirtilmiş
- Gizli yapılandırma yok
Kod tabanı öğrenmek ve denemek için idealdir.
Araştırma Hızı
- Eğitim süresi günlerden saatlere indi
- Daha hızlı hipotez testi ve iterasyon
- Düşük başarısızlık maliyeti
- Topluluk lider tablosu ile iş birliği
Şeffaflık
- Tüm ölçeklendirme yasaları
dev/LOG.mddosyasında - Github tartışmalarında ablasyon çalışmaları
- Lider tablosu girişlerinde tam tekrar detayları
- Açık AI katkı açıklaması
Sınırlamalar ve Gerçeklik Kontrolü
Donanım Gereksinimleri
48 $'lık maliyet, 8xH100 erişimine dayalıdır. Bulut fiyatları değişken:
- Lambda Labs: 8xH100, saatlik ~25 $
- RunPod: spot ile saatlik ~15 $
- Tam çalışma: ~50-100 $
Yetenek Tavanı
nanochat, GPT-2 seviyesine ulaşır. Yani:
Yapabilecekleri:
- Temel sohbet
- Basit muhakeme
- Basit matematik
- Sınırlı bilgi hatırlama
Yapamayacakları:
- Karmaşık çok adımlı muhakeme
- Gelişmiş kod üretimi
- Detaylı talimat takibi
- GPT-4/Claude/Gemini ile rekabet
Onu, temel sohbet edebilen bir anaokulu öğrencisi gibi düşünün.
Veri Gereksinimleri
- ~170 veri bölümü (~17 GB)
- Toplam ~2B karakter
Depolama ve bant genişliği önemli.
Metrik Sınırlamaları
CORE puanı 22 görevi ölçer ancak:
- Gerçek dünya sohbet kalitesini
- Alana özgü bilgi seviyesini
- Talimat takibi detayını
- Güvenlik/hizalama konusunu
doğrudan ölçmez. Farklı rastgele tohumlar ~0.016 CORE varyansı yaratır.
Sıkça Sorulan Sorular
nanochat ile bir model eğitmek ne kadara mal olur?
Talep üzerine ~48 dolar veya spot GPU ile ~15 dolar (ön eğitim için). SFT için ~30 dakika ekleyin.
Hangi GPU'ya ihtiyacım var?
Minimum: Tek modern veri merkezi GPU'su. Optimum: 8xH100 veya 8xA100. Kod, otomatik gradyan birikimiyle 1-8 GPU arası ölçeklenir.
Eğitim ne kadar sürer?
Donanım ve yapılandırmaya göre 1.65-3 saat arası. Lider tablosu rekoru 1.65 saat (d24 modeli).
CORE metriği nedir?
DCLM CORE puanı, 22 farklı görevde (ARC, MMLU vb.) performansı ölçer. GPT-2: 0.2565, nanochat: genellikle 0.26+.
Tek bir GPU üzerinde eğitim yapabilir miyim?
Evet. torchrun'ı atlayın, otomatik gradyan birikimi ile eğitim yapılır. Eğitim süresi 8 kat artar ama sonuçlar benzer.
nanochat hangi veri kümesini kullanır?
En iyi sürüm ClimbMix'i (NVIDIA seçkisi) kullanır. Önceki versiyonlar FineWeb-EDU ileydi.
nanochat Apple Silicon üzerinde çalışır mı?
Evet. MPS (Metal) üzerinde float32 hassasiyetle çalışır. Eğitim hızı daha düşük ancak prototipleme için yeterli.
Eğitimi bir kontrol noktasından devam ettirebilir miyim?
Evet. --resume-from-step=<step> ile devam edebilirsiniz. Veri yükleyici durumu da kaydedilir.
nanochat ile nanoGPT arasındaki fark nedir?
nanoGPT yalnızca ön eğitim yapar. nanochat ise tokenizasyon, ön eğitim, SFT, RLHF, değerlendirme, çıkarım ve web arayüzünü kapsar.
Sonuç
nanochat, büyük bütçeler veya özel altyapılar olmadan LLM eğitilebileceğini kanıtlıyor. 2019'da 43.000 dolara mal olan süreç, artık 50 doların altında.
Hem araştırma aracı hem eğitim kaynağı olarak minimal ve okunabilir bir kod tabanı sunuyor.
Temel Çıkarımlar
- 100 kat maliyet azaltma: GPT-2 yeteneği için 43.000 $ → 48 $
- 100 kat hızlanma: 168 saat → 1.65 saat
-
Tek kadran:
--depthile her şey kontrol ediliyor - Tüm süreç: Tokenlemeden web arayüzüne kadar uçtan uca
- Topluluk odaklı: Sürekli iyileşen halka açık lider tablosu
Sonraki Adımlar
Kendi modelinizi eğitmek için nanochat deposunu ve runs/speedrun.sh betiğini kullanarak hemen başlayın.
API geliştiricileri için LLM eğitimi artık erişilebilir; haftasonu projesi seviyesine indi.


Top comments (0)