3 puan yazan GN⁺ 2026-03-02 | 1 yorum | WhatsApp'ta paylaş
  • GPT modelinin eğitim ve çıkarım sürecinin tamamını saf Python tek dosyada 200 satırla gerçekleştiren minimal bir dil modeli yapısı
  • Veri kümesi, tokenizer, otomatik türev motoru, GPT-2 benzeri sinir ağı, Adam optimizatörü, eğitim ve çıkarım döngüsü dahil her şeyi içerir
  • İsim veri kümesini eğiterek yeni isimler üretir; kendi yazılmış autograd ve Transformer yapısı üzerinden GPT’nin temel ilkelerini görünür kılar
  • Büyük ölçekli LLM’lerin aksine bağımlılık olmadan saf Python ile çalışır; yalnızca algoritmik özü bırakılmış bir yapıdır
  • microgpt’yi anlamak, ChatGPT gibi büyük modellerin temel algoritmik yapısını anlamayı sağlar

microgpt genel bakış

  • microgpt, 200 satırlık Python koduyla yazılmış minimal bir GPT uygulamasıdır ve harici kütüphane bağımlılığı yoktur
    • Veri kümesi, tokenizer, otomatik türev, GPT-2 benzeri yapı, Adam optimizatörü, eğitim ve çıkarım döngüsünün tamamını içerir
  • Karpathy’nin LLM’leri öz seviyesine kadar basitleştirmek için yaptığı sanatsal bir projedir; micrograd, makemore, nanogpt gibi çalışmaların devamı niteliğindedir
  • Tüm kod GitHub Gist, web sayfası ve Google Colab üzerinde sunulmaktadır

Veri kümesi

  • Her satırda bir isim bulunan yaklaşık 32.000 isimlik bir metin dosyası kullanılır
  • Her isim bir belge olarak kabul edilir ve model bu örüntüyü öğrenerek yeni isimler üretir
  • Eğitim sonrası üretim örnekleri: kamon, ann, karai, jaire, vialan vb.

Tokenizer

  • Her benzersiz karaktere bir tam sayı kimliği atayan basit, karakter tabanlı bir tokenizer
  • a–z alfabesi ile BOS(beginning of sequence) token’ı dahil toplam 27 token
  • Her belge eğitimde [BOS, e, m, m, a, BOS] biçiminde sarılır

Otomatik türev (Autograd)

  • Value sınıfı skaler değerleri ve gradyanları izler ve işlem grafiğini oluşturur
  • Toplama, çarpma, üs alma, log, üstel, ReLU gibi temel işlemlerin yerel türevlerini (local gradient) saklar
  • backward() metodu zincir kuralını uygulayarak geri yayılım yapar
  • PyTorch’taki .backward() ile aynı algoritma skaler düzeyde doğrudan uygulanır

Parametre başlatma

  • Model yaklaşık 4.192 parametreye sahiptir
  • Embedding tablosu, attention ağırlıkları, MLP ağırlıkları, çıktı projeksiyonu gibi bileşenlerden oluşur
  • Her parametre Gaussian dağılımından rastgele değerlerle başlatılır

Model mimarisi

  • GPT-2 yapısının sadeleştirilmiş bir biçimidir; RMSNorm, ReLU, residual connection kullanır
  • Temel bileşenler:
    • Embedding aşaması: token ve konum embedding’leri toplanır
    • Multi-head attention: Q, K, V vektörleri hesaplanır ve geçmiş token bilgisinden yararlanmak için KV cache kullanılır
    • MLP bloğu: iki katmanlı feedforward ağ ile yerel hesaplama yapılır
    • Çıktı aşaması: sözlük boyutu (27) için logit üretir
  • KV cache eğitim sırasında da aktiftir; geri yayılım cache üzerinden akar

Eğitim döngüsü

  • Her adımda bir belge seçilir ve [BOS, ... , BOS] olarak tokenize edilir
  • Model sonraki token olasılığını tahmin eder ve çapraz entropi kaybı hesaplanır
  • loss.backward() ile gradyanlar hesaplandıktan sonra parametreler Adam optimizatörü ile güncellenir
  • Öğrenme oranı lineer azalma (linear decay) ile uygulanır
  • 1.000 adım boyunca kayıp yaklaşık 3.3 → 2.37 seviyesine düşer

Çıkarım (Inference)

  • Eğitim tamamlandıktan sonra BOS token’ı ile başlayarak yeni isimler üretilir
  • Her adımda softmax olasılıklarına göre bir sonraki token örneklenir
  • temperature değeri yaratıcılığı ayarlar (düşükse daha tutucu, yüksekse daha çeşitli)
  • Örnek çıktı: kamon, ann, karai, jaire, vialan, karia, yeran, anna vb.

Çalıştırma yöntemi

  • Yalnızca Python varsa çalıştırılabilir (python train.py)
  • Eğitim yaklaşık 1 dakika içinde tamamlanır ve kayıp değerleri adım adım yazdırılır
  • Colab not defterinde de aynı şekilde çalıştırılabilir

Kodun gelişim aşamaları

  • train0.py ile train5.py arasında adım adım genişler
    • Bigram → MLP → Autograd → Attention → Multi-head → Adam
  • Her aşama Gist içindeki build_microgpt.py revizyonlarında görülebilir

Gerçek LLM’lerle farkı

  • Veri: microgpt 32K isim kullanır, gerçek LLM’ler trilyonlarca token kullanır
  • Tokenizer: karakter düzeyi vs. BPE tabanlı subword
  • Autograd: skaler tabanlı Python vs. GPU tensor işlemleri
  • Mimari: 4K parametre vs. yüz milyarlarca parametre
  • Eğitim: tek belgeyi yineleme vs. büyük ölçekli batch ve mixed-precision eğitim
  • Optimizasyon: basit Adam vs. ince ayarlanmış hiperparametreler ve scheduling
  • Sonraki işlemler: SFT ve RL aşamalarından geçerek ChatGPT benzeri biçime evrilir
  • Çıkarım altyapısı: GPU dağıtımı, KV cache yönetimi, quantization, speculative decoding vb.

SSS özeti

  • Model, giriş token’larını sonraki token olasılığına dönüştüren matematiksel bir fonksiyondur
  • “Anlama” yoktur; tahmin istatistiksel kuralların öğrenilmesiyle yapılır
  • ChatGPT ile aynı token tahmin döngüsünü küçültülmüş biçimde uygular
  • “Halüsinasyon (hallucination)” olasılıksal örneklemenin doğal sonucudur
  • Yavaş olsa da LLM’lerin temel algoritmasını eksiksiz biçimde yeniden üretir
  • Daha iyi sonuçlar için eğitim adımı, model boyutu ve veri kümesi ayarlanabilir
  • Veri kümesi değiştirilirse şehir adları, Pokémon isimleri, şiirler vb. farklı örüntüler öğrenilebilir

microgpt, LLM’lerin tüm temel algoritmalarını en küçük ölçekte uygulayan eğitsel ve deneysel bir modeldir; büyük dil modellerinin çalışma prensibini tamamen görünür kılan bir örnektir.

1 yorum

 
GN⁺ 2026-03-02
Hacker News görüşleri
  • Birisi microgpt’yi değiştirerek Korece isim üreten küçük bir GPT yapmış
    Tüm süreci görselleştiren bir web sayfası da var — tokenization’dan inference’a kadar tüm pipeline’ı keşfedebiliyorsunuz
    English GPT lab üzerinden doğrudan deneyebilirsiniz

    • Böyle bir şey çok daha hafif bir modelle de kolayca uygulanabilir
      PyTorch char_rnn eğitimi buna referans olabilir
    • Siteyi yapan kişiyle alakam yok ama LLM iç yapısını öğrenmek için çok faydalı bir site
      Tokenization, embedding, attention, loss·gradient, eğitim, inference, gerçek GPT ile karşılaştırma gibi konuları iyi açıklıyor
    • “Değiştirdi” denmesi aslında İngilizce isim listesini Korece isimlerle değiştirmekten ibaret
      Sitenin kendisi, orijinal blog yazısını temel alan bir yapay zeka üretimi görselleştirmeye daha yakın
  • Ben de microgpt’yi C++’a port ettim
    Kod bağlantısı
    Kod satırı sayısı 2 kat ama hız 10 kat daha yüksek
    En zor kısım Value sınıfını C++ içinde ifade etmekti ve sonunda shared_ptr kullandım

    • Ben autodiff olmadan açık geri yayılım uyguladım ve Python’a göre 8 kat daha hızlıydı
  • Halüsinasyon (hallucination)” denen şeyin ne olduğunu merak etmiştim
    Model sadece olasılık dağılımından token örnekliyor; bir hakikat kavramı yok
    Bu yüzden LLM’nin kendi cevabına dair bir güven skoru taşıyıp taşıyamayacağını düşündüm

    • Model çıktı dağılımının confidence değerini raporlayabilir ama bunun gerçekten doğru şekilde kalibre edildiği anlamına gelmez
      Ön eğitimli modeller kalibreli olsa da instruction following (post-training) sonrasında bu bozuluyor
      İlgili araştırmalar: makale1, makale2
    • Güven skoru, eğitim verisinin nasıl örneklendiğini bilmeden anlam taşımaz
      İstatistikte anakütlesi bilinmeyen güven aralıkları gibi, LLM olasılıklarının da gerçek dünyayla doğrudan bir bağlantısı yok
      Sonuçta LLM, dünyayı hiç deneyimlememiş ama sadece kitap okumuş birine benziyor
    • Gerçekte LLM bir olasılık dağılımı döndürür ve token’ları bundan örnekleyerek üretir
      Ama bu olasılık “doğru olma olasılığı” değil, “bu durumda bu token’ı üretme olasılığı”dır
    • Üretim mümkün ama ‘gerçek dağılım’ bilinmediği için bu güvenin anlamı yok
    • “Tam bilmiyorum ama galiba böyledir” gibi ifadeler çıktıda görünmese de içsel akıl yürütme sürecinde vardır
  • Öğrenmek için microgpt’yi Rust’a çevirdim
    microgpt-rs
    Autograd grafik yapısını Rust tipleriyle ifade etmek en zor kısımdı
    Şu anda WebAssembly ile tarayıcıda çalışacak şekilde düzenliyorum ve bloga koymayı planlıyorum
    Karpathy’nin kodu gerçekten şiirsel ve özlü bir tasarım

    • Ağırlık yapısında türev değerlerini saklamak epey hacky ama çoğu kişi böyle yapıyor
    • Ben de bunu başka bir dilde bir kez uygulamak istiyorum
  • Kod güzel ve okunması kolay ama backbone.js gibi satır satır açıklamalı yorumlar olsaydı iyi olurdu
    Backbone dokümantasyonu örnek alınabilir

    • Backbone’un açıklamalı kaynak kodu Docco ile üretilmiş
      Docco projesi da aynı geliştiricinin yaptığı harika bir araç
    • Gerçekten güzel bir literate programming örneği
      HTML sürümü kodu da var
    • Karpathy’nin bir walkthrough blog yazısı da var
      microgpt blogu
    • Bir öneri de bunu yüksek performanslı bir LLM’ye anlattırmak
  • Karpathy’nin videoları ve kodu sayesinde gradient descent, backpropagation, chain rule kavramlarını ilk kez gerçekten anladığımı hissediyorum
    Sadece matematiğe bakınca kafam karışıyordu ama kodla birlikte görünce netleşti
    Kişisel olarak adeta hayatta başarı hissi gibi bir deneyimdi

    • Ben de bunu sezgisel biçimde açıklamayı deneyeceğim
      Karpathy’nin dediği gibi, gerçekten anlamak istiyorsan başkasına öğretmeyi denemek önemli
  • Bu projenin HN’e ancak şimdi düşmesine şaşırdım
    Ben PicoGPT adlı 35 satırlık bir JS sürümü ve bir Python sürümü yaptım,
    web üzerinde doğrudan çalıştırılabiliyor
    Hatta QR kodla bile çalıştırılabilen ultra küçük bir LLM

    • Ben de şaşkınım. Böyle harika bir projenin ancak 2 hafta sonra HN ana sayfasına çıkması beklenmedik
      İlgili başlıklar: bağlantı1, bağlantı2
    • Aslında daha önce paylaşılmıştı — önceki gönderi
  • Ben de microgpt kodunu görselleştirmeli bir blog yazısına dönüştürdüm
    Blog bağlantısı
    Kod akışını takip ederek etkileşimli biçimde gösteriyor

    • Eğitim bittikten sonra “kamon”, “karai”, “anna”, “anton” gibi isimler ürettiği söylenmiş ama,
      aslında bu dördünün hepsi de veri setinde zaten var
    • Bu yazı ayrıca HN’de ayrı bir gönderi olarak paylaşılmayı hak ediyor
    • Genelde LLM yardımıyla yazılmış bloglara eleştirel yaklaşırım ama bu gerçekten mükemmel bir örnek
    • ML’ye yeni başlayan biri olarak bana da Karpathy’nin orijinali kadar yardımcı olan bir kaynak
    • Gerçekten harika bir iş
  • Son zamanlarda yapay zekada ‘micro’ trendi ilginç geliyor
    Sadece modeli büyütmektense, küçük ve odaklı modellerde verimlilik daha fazla artıyor
    Gerçekte Gemini Flash’i alan analizi için kullanıyorum ve hız/maliyet oranı çok daha iyi
    Sadece latency farkı bile yapılabilecek ürünlerin türünü değiştiriyor

    • Ama bu, gerçek uygulamadan çok eğitsel amaçlı bir micro model
  • Buna microgpt demek yerine, nanogpt’den de küçük olduğu için picogpt daha uygun olurdu diye düşünüyorum
    Yine de harika bir proje