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

Ashley Innocent

Ashley Innocent

19 March 2026

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

Kurumsal Apidog

Şirket İçi Dağıtım

SSO & RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfet

ÖZET

nanochat, Andrej Karpathy'nin açık kaynaklı LLM eğitim çerçevesidir ve 50 doların altında, yaklaşık 2 saatte GPT-2 seviyesinde bir sohbet robotu eğitmenize olanak tanır. Proje, tek bir 8xH100 GPU düğümü, minimum kod (çekirdek model için ~500 satır) ve tüm hiperparametreleri otomatik olarak optimize etmek için tek bir yapılandırma düğmesi (--depth) kullanır. Mevcut kayıtlar, 1.65 saatte 0.2626 CORE puanıyla eğitimin tamamlandığını gösteriyor ve OpenAI'ın 2019'da 43.000 dolara mal olan ve 168 saat süren GPT-2'sini geride bırakıyor.

Giriş

Büyük bir dil modeli eğitmek, eskiden milyonlarca dolar ve doktora dereceli araştırmacılardan oluşan bir ekip gerektiriyordu. O günler geride kaldı.

Andrej Karpathy, az önce güzel bir akşam yemeği maliyetinden daha ucuza yetenekli bir konuşmaya dayalı yapay zeka eğiten açık kaynaklı bir proje olan nanochat'i yayınladı. Tüm süreç, tek bir 8xH100 GPU düğümünde çalışır ve 2 saatten kısa sürede tamamlanır.

Bu Neden Şimdi Önemli?

Yapay zeka ortamı 2026'nın başlarında önemli ölçüde değişti. OpenAI'ın 2019'da 168 saat ve 43.000 dolara yaptığı iş, şimdi 1.65 saat ve 48 dolara yapılıyor. Bu, algoritmik iyileştirmeler, daha iyi donanım ve topluluk optimizasyonu sayesinde 100 katlık bir hızlanma anlamına geliyor.

API geliştiricileri ve yapay zeka destekli uygulamalar oluşturan ekipler için bu, her şeyi değiştiriyor. Artık büyük altyapı bütçeleri olmadan özel model eğitimi deneyleri yapabilir, mimari değişiklikleri test edebilir ve LLM iç işleyişini anlayabilirsiniz.

💡
Bunu, yapay zeka hizmetlerinizi test etmek ve belgelemek için Apidog gibi API geliştirme platformlarıyla eşleştirin; üretim düzeyinde yapay zeka uygulamaları oluşturmak için eksiksiz bir yığına sahip olursunuz.
düğme

Neler Öğreneceksiniz?

Bu makalenin sonunda şunları anlamış olacaksınız:

nanochat Nedir?

nanochat, tüm geliştirme sürecini kapsayan minimal bir LLM eğitim çerçevesidir: belirteçleme (tokenization), ön eğitim (pretraining), ince ayar (finetuning), değerlendirme (evaluation), çıkarım (inference) ve ChatGPT benzeri bir web arayüzü.

Kod tabanı, yapılandırma karmaşası veya çerçeve karmaşıklığı olmadan tek bir depoda yer alır. Karpathy, bunu okunabilir, değiştirilebilir ve çatallanabilir "güçlü bir temel" olarak tasarladı.

Temel İddia

GPT-2 yeteneğinde bir model (1.6B parametre) için eğitim maliyetleri:

Bağlam sağlamak gerekirse, OpenAI'ın 2019'daki orijinal GPT-2 eğitimi yaklaşık 43.000 dolara mal olmuş ve 32 TPU v3 çip üzerinde 7 gün sürmüştü.

nanochat Neleri Kapsar?

Aşama Betik Açıklama
Belirteçleme scripts.tok_train BPE belirteçleyiciyi eğit (kelime dağarcığı 32,768)
Ön eğitim scripts.base_train Temel GPT modelini eğit
İnce ayar scripts.chat_sft Sohbet için denetimli ince ayar
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 benzeri web arayüzü

Felsefe: Her Şeyi Kontrol Eden Tek Bir Kadran

Çoğu LLM çerçevesi sizi yapılandırma dosyalarına boğar. nanochat tam tersi bir yaklaşım sergiler.

Tüm sistem tek bir parametre etrafında döner: --depth (transformatör katmanlarının sayısı).

# GPT-1 boyutunda model
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=12

# GPT-2 yeteneğinde model
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=24

# Sınırları zorlama
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26

Derinliği ayarlayın, nanochat diğer her şeyi otomatik olarak hesaplar:

Bu "tek kadran" felsefesi, Karpathy'nin nanochat mini dizisi olarak adlandırdığı şeyi mümkün kılar: farklı boyutlarda, hepsi aynı ilkeli yaklaşımla eğitilmiş, hesaplama açısından optimal modeller ailesi.

Bu Neden İşe Yarar?

Ekip, düzinelerce eğitim çalışması boyunca ölçeklendirme yasalarını ölçtü. Derinlik, genişlik, yığın boyutu ve eğitim süresi arasında öngörülebilir ilişkiler buldular. Tüm bu ayarları açığa vurmak yerine, nanochat bu ilişkileri doğrudan eğitim betiğine kodlar.

Derin öğrenme alanında doktora yapmanıza gerek kalmadan hesaplama açısından optimal eğitim elde edersiniz.

Lider Tablosu: GPT-2'yi Geçme Yarışı

nanochat, "GPT-2'ye ulaşma süresi" yeteneğini izleyen halka açık bir lider tablosu tutar. Hedef, 22 değerlendirme görevinde (ARC, MMLU ve DCLM kıyaslama paketindeki diğerleri) OpenAI'ın orijinal 0.256525 CORE puanını geçmektir.

Mevcut Rekorlar

Çalışma Model Süre CORE Puanı Temel Yenilik
Orijinal GPT-2 1.6B 168 saat 0.2565 OpenAI 2019 temel ç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 Yapay zeka tarafından keşfedilen optimizasyonlar
Çalışma 6 d24 1.65 saat 0.2626 Geliştirilmiş smear/backout

Yapay Zeka Optimizasyonları Nasıl Keşfetti?

Çalışma 5 ve 6, Karpathy'nin "otomatik araştırma" sisteminden değişiklikleri içeriyordu. Bir yapay zeka ajanı, küçük d12 modelleri üzerinde mimari değişiklikleri araştırdı (5 dakikalık eğitim çalışmaları), ardından kazanan değişiklikleri tam d24 kurulumuna çevirdi.

Sistem şu konularda iyileştirmeler buldu:

Bu değişiklikler, eğitim süresini 2.02 saatten 1.65 saate indirdi; bu, otonom deneyler yoluyla keşfedilen %19'luk bir iyileşme.

nanochat Nasıl Çalışır?

Kod tabanı, çekirdek modüllerde yaklaşık 3.000 satır içerir. Her bir bileşeni inceleyelim.

1. GPT Modeli (nanochat/gpt.py)

Transformatör, çeşitli optimizasyonlarla modern en iyi uygulamaları takip eder:

Mimari Özellikler:

Değer Gömmeleri (ResFormer):Dönüşümlü katmanlar, girdi bağımlı geçitleme yoluyla karıştırılan öğrenilebilir değer gömmeleri içerir:

# 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

Bu, önemli hesaplama yükü olmadan kapasite ekler.

Verimlilik Püf Noktaları:

Model, eğitim dinamiklerini iyileştiren üç öğrenilmiş mekanizma içerir:

# 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)

nanochat, karma bir optimize edici stratejisi kullanır:

Parametre Tipi Optimize Edici Amaç
Gömmeler, lm_head AdamW Standart adaptif optimizasyon
Skaler parametreler AdamW Öğrenilmiş ölçeklendirme faktörleri
2D matrisler Muon Ortogonalleştirilmiş güncellemeler

Muon (Newton-Schulz ile Ortogonalleştirilmiş Momentum):

Muon optimize edici, "Polar Express" adı verilen beşinci dereceden bir Newton-Schulz yinelemesi kullanarak ağırlık güncellemelerini ortogonalleştirir:

# Polar Express katsayıları (5 iterasyon)
polar_express_coeffs = [
    (8.156, -22.483, 15.879),
    (4.043, -2.809, 0.500),
    # ... daha fazla katsayı
]

# 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:

Ortogonalleştirmeden sonra, ölçek çökmesini önlemek için güncellemeler nöron başına normalleştirilir:

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:

Çoklu GPU kurulumları için optimize edici, üç aşamalı eşzamansız iletişimle ZeRO-2 tarzı parçalama uygular:

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

Bu, iletişimi hesaplama ile çakıştırarak GPU kullanımını en üst düzeye çıkarır.

3. Hassasiyet Yönetimi (nanochat/common.py)

nanochat, torch.amp.autocast kullanmak yerine hassasiyeti açıkça yönetir:

Donanım Varsayılan Veri Tipi Neden
CUDA SM 80+ (A100, H100) bfloat16 Yerel BF16 tensör çekirdekleri
CUDA SM < 80 (V100, T4) float32 BF16 desteği yok
CPU / MPS float32 Azaltılmış hassasiyetli çekirdek yok

Özel Linear katmanı, ileri geçiş sırasında ağırlıkları hesaplama veri tipine uyacak şekilde dönüştürür:

class Linear(nn.Linear):
    def forward(self, x):
        return F.linear(x, self.weight.to(dtype=x.dtype))

Ana ağırlıklar, optimize edici hassasiyeti için FP32'de kalır. H100 ve Blackwell GPU'lar için, --fp8 aracılığıyla FP8 eğitimi mevcuttur ve çoğu katmanı tensör bazında ölçeklendirme ile Float8Linear'a dönüştürür.

4. Veri Yükleme (nanochat/dataloader.py)

Veri yükleyici, BOS hizalı en uygun paketleme kullanır:

Bu, her belirtecin BOS'a geri dönebilmesini ve tam belge bağlamını görebilmesini sağlar.

# 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)

Proje, FA3 ve PyTorch SDPA arasında otomatik geçiş yapan birleşik bir arayüz sağlar:

from nanochat.flash_attention import flash_attn

# Her donanımda çalışır - en iyi arka ucu otomatik seçer
y = flash_attn.flash_attn_func(q, k, v, causal=True, window_size=window_size)

bfloat16'lı Hopper GPU'larda Flash Attention 3'ü kullanır. Diğer her yerde PyTorch'un ölçeklendirilmiş nokta-çarpım dikkat mekanizmasına geri döner.

6. Çıkarım Motoru (nanochat/engine.py)

Engine sınıfı, şunlarla verimli üretimi yönetir:

Motor, model hesaplayıcıyı çağırdığında araç çıktı belirteçlerini zorlamak da dahil olmak üzere konuşma akışını koordine eder.

Adım Adım: Kendi Modelinizi Eğitin

Tüm süreç runs/speedrun.sh içinde yer alır. İşte nasıl çalıştırılacağı.

Ön Koşullar

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

# Bu, her biri ~100MB olan ~170 bölümü indirir
# Toplam: ~17 GB sıkıştırılmış

Betik, çoklu sıra koordinasyonunu yönetmek için dosya kilitleme ile ön eğitim veri bölümlerini indirir.

Adım 3: Belirteçleyiciyi Eğitin

# 32.768 kelime dağarcığı ile BPE belirteçleyiciyi eğit
python -m scripts.tok_train

# Sıkıştırma oranını değerlendir
python -m scripts.tok_eval

Belirteçleyici, bayt geri dönüşlü BPE ile GPT-4 tarzı bir bölme deseni kullanır. Eğitim, 2B karakter üzerinde yaklaşık 10 dakikada tamamlanır.

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

Temel parametreler:

Beklenen çalışma süresi: ~2 saat.

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

# Sohbet yeteneği için SFT'yi çalıştır
torchrun --standalone --nproc_per_node=8 -m scripts.chat_sft -- \
    --device-batch-size=16 \
    --run=my-sft

Bu, modele konuşma formatını, özel belirteçleri ve araç kullanımını öğretir.

Adım 6: Modelinizle Sohbet Edin

# CLI sohbeti
python -m scripts.chat_cli -p "Why is the sky blue?"

# Veya web arayüzünü başlat
python -m scripts.chat_web

Web arayüzü 8000 portunda çalışır ve ChatGPT benzeri bir arayüz sağlar.

Araştırma İş Akışı: Hızlı Deneyler

Yeni fikirleri test etmek için, daha hızlı yineleme için daha 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, minimal günlük kaydı ile bir d12 (GPT-1 boyutunda) modeli eğitir. Mimari değişiklikleri test etmek için mükemmeldir.

İzlenecek Metrikler

Bunları Weights & Biases'ta takip edin:

  1. val_bpb: Doğrulama bayt başına bit (kelime dağarcığı boyutundan bağımsız kayıp)
  2. core_metric: DCLM CORE değerlendirme puanı
  3. train/mfu: Model FLOPS kullanımı (donanım verimliliği)
  4. train/tok_per_sec: Eğitim verimi

Test Gereksinimleri

Herhangi bir iyileştirme, tüm derinliklerde (d12'den d26'ya kadar) çalışmalıdır. Bu, tek bir model boyutuna aşırı uymayı önler ve ilkeli ilerlemeleri sağlar.

nanochat Neden Önemli?

Maliyet Erişilebilirliği

Yaklaşım Maliyet Süre Donanım
OpenAI GPT-2 (2019) $43,000 168 saat 32 TPU v3
nanochat (2026) $48 2 saat 8xH100
nanochat spot ~$15 2 saat 8xH100 spot

Bu, LLM eğitimini şunların erişimine sokar:

Eğitimsel Değer

Kod tabanı bir öğrenme kaynağı olarak hizmet verir:

Öğrenciler, eksiksiz bir LLM sürecini okuyabilir, değiştirebilir ve deneyebilir.

Araştırma Hızı

Eğitim süresini günlerden saatlere indirmek şunları sağlar:

Şeffaflık

Her tasarım seçimi belgelenmiştir:

Sınırlamalar ve Gerçeklik Kontrolü

nanochat etkileyici olsa da belirgin sınırları vardır.

Donanım Gereksinimleri

48 dolarlık rakam, bir 8xH100 düğümüne erişim olduğunu varsayar. Bulut kiralama maliyetleri değişir:

Sağlayıcıya bağlı olarak tam bir çalıştırma için ~50-100 dolara ihtiyacınız olacaktır.

Yetenek Tavanı

nanochat, GPT-2 seviyesinde performans (2019 teknolojisi) elde eder. Bu şu anlama gelir:

Yapabilecekleri:

Yapamayacakları:

Onu bir anaokulu öğrencisi gibi düşünün: temel sohbet yeteneğine sahip ama uzman seviyesinde iş yapamaz.

Veri Gereksinimleri

Tam hızlandırma şunları indirir:

Yeterli depolama ve bant genişliğine ihtiyacınız olacaktır.

Metrik Sınırlamaları

CORE puanı 22 görevi ölçer ancak şunları yakalamaz:

Farklı rastgele tohumlar ~0.016 CORE varyansı üretir. Sonuçlarınız farklılık gösterebilir.

Sıkça Sorulan Sorular

nanochat ile bir model eğitmek ne kadara mal olur?

Talep üzerine yaklaşık 48 dolar (saatte 24 dolar × 2 saat) veya spot örneklerde yaklaşık 15 dolar. Bu sadece ön eğitimi kapsar. SFT için ~30 dakika ekleyin.

Hangi GPU'ya ihtiyacım var?

Minimum: Tek GPU (herhangi modern bir veri merkezi GPU'su). Optimal: En hızlı eğitim için 8xH100 veya 8xA100. Kod, otomatik gradyan birikimi ile 1 GPU'dan 8 GPU'ya ölçeklenir.

Eğitim ne kadar sürer?

Yapılandırmaya ve donanıma bağlı olarak 1.65 ila 3 saat sürer. Mevcut lider tablosu rekoru, bir d24 modeli için 1.65 saattir.

CORE metriği nedir?

DCLM CORE puanı, ARC (bilim soruları), MMLU (çok görevli dil anlama) ve diğer kıyaslamalar dahil olmak üzere 22 görevde modelleri değerlendirir. GPT-2, 0.256525 puan aldı. nanochat düzenli olarak 0.26'yı aşar.

Tek bir GPU üzerinde eğitim yapabilir miyim?

Evet. torchrun komutunu atlayın ve kod otomatik olarak gradyan birikimi kullanır. Eğitim 8 kat daha uzun sürer ancak neredeyse aynı sonuçları üretir.

nanochat hangi veri kümesini kullanır?

Şu anki en iyi sürüm ClimbMix'i (NVIDIA'nın seçilmiş web veri kümesi) kullanır. Önceki sürümler FineWeb-EDU'yu kullanıyordu. Belirteçleyici, ilk ~8 bölümden ~2B karakter üzerinde eğitim yapar.

nanochat Apple Silicon üzerinde çalışır mı?

Evet. Kod, float32 hassasiyetle MPS (Metal Performans Gölgelendiricileri) üzerinde çalışır. Eğitim CUDA'dan daha yavaştır ancak deneyler için işlevseldir.

Eğitimi bir kontrol noktasından devam ettirebilir miyim?

Evet. Kaydedilmiş bir kontrol noktasından devam etmek için --resume-from-step=<step> kullanın. Veri yükleyici durumu da tam olarak devam ettirme için kaydedilir.

nanochat ile nanoGPT arasındaki fark nedir?

nanoGPT yalnızca ön eğitimi kapsıyordu. nanochat, tüm süreci kapsar: belirteçleme, ön eğitim, SFT, RLHF, değerlendirme, çıkarım ve web arayüzü.

Sonuç

nanochat, LLM eğitiminin artık büyük bütçeler veya özel altyapı gerektirmediğini kanıtlıyor. 2019'da 43.000 dolara mal olan şey, şimdi 50 doların altında.

Projenin etkisi, ham maliyet düşüşünün ötesine geçiyor. Karpathy, "tek kadranlı" bir arayüze sahip minimal, okunabilir bir kod tabanı sağlayarak hem bir araştırma aracı hem de bir eğitim kaynağı oluşturdu.

Temel Çıkarımlar

Sonraki Adımlar

Kendi modelinizi eğitmeye hazır mısınız? nanochat deposu ve runs/speedrun.sh betiği ile başlayın.

Yapay zeka destekli uygulamalar geliştiren API geliştiricileri için LLM eğitiminin iç işleyişini anlamak hiç bu kadar erişilebilir olmamıştı. Giriş engeli, "risk sermayesi destekli startup"tan "hafta sonu projesi" seviyesine düştü.

düğme

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin