DEV Community

Cover image for ChatGPT'nizi 50 Dolara Nasıl Eğitirsiniz?
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

ChatGPT'nizi 50 Dolara Nasıl Eğitirsiniz?

Ö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.

Apidog'u hemen deneyin

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ü.

nanochat mimarisi

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
Enter fullscreen mode Exit fullscreen mode

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.

Ölçeklendirme yasaları

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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))
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.md dosyası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: --depth ile 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)