- MicroGPT, saf Python ile yazılmış 200 satırlık bir GPT modelinin minimal uygulaması; büyük dil modellerinin temel yapısını görsel olarak anlamayı sağlayacak şekilde tasarlanmış
- 32.000 adet insan adı veri kümesi üzerinde eğitilerek yeni isimler üretir ve tokenizasyon, tahmin, kayıp hesaplama ve geri yayılım süreçlerini adım adım görselleştirir
- Softmax, Cross-Entropy Loss, Backpropagation, Embedding, Attention gibi GPT’nin başlıca bileşenlerini kodla birlikte açıklar
- Eğitim sürecinde Adam optimizer kullanarak kaybı kademeli olarak azaltır; ardından sıcaklık ayarı (Temperature Sampling) ile çeşitli isimler üretir
- ChatGPT gibi büyük modellerin temel algoritmasını basitleştirilmiş bir biçimde sunan, LLM’lerin iç çalışma mantığını anlamaya yönelik eğitsel bir kaynak
MicroGPT’ye genel bakış
- Andrej Karpathy tarafından yazılan 200 satırlık Python betiğini temel alarak, GPT modelinin eğitim ve çıkarım sürecini görsel biçimde açıklar
- Harici kütüphane olmadan yalnızca saf Python ile uygulanmıştır
- ChatGPT gibi büyük dil modellerinin temel algoritmasını aynen içerir
- Yazı, yeni başlayanlara uygun görsel bir yaklaşımla modelin her adımını aşama aşama gösterir
Veri kümesi ve eğitim hedefi
- 32.000 adet insan adı (ör. emma, olivia, ava vb.) eğitim verisi olarak kullanılır
- Her isim tek bir belge olarak kabul edilir ve model isimlerin karakter örüntülerini öğrenir
- Eğitim sonrasında “kamon”, “karai”, “anna”, “anton” gibi yeni isimler üretir
- Model; karakterler arasındaki istatistiksel ilişkileri, isim uzunluğunu ve başlangıç-bitiş ses örüntülerini öğrenir
Metni sayılara dönüştürme süreci
- Sinir ağları yalnızca sayılarla çalıştığı için her karakter bir tam sayı ID’sine dönüştürülür
- a–z için 0–25, BOS (Beginning of Sequence) için 26 atanır
- BOS token’ı ismin başlangıcını ve sonunu işaretler
- Gerçek GPT-4’ün tiktoken sistemi karakterler yerine karakter parçaları düzeyinde tokenization yapar, ancak ilke aynıdır
Sonraki token tahmini
- Model, verilen bağlama göre bir sonraki karakteri tahmin eder
- Örnek: [BOS] → “e”, [BOS, e] → “m”, [BOS, e, m] → “m”, [BOS, e, m, m] → “a”
- Her adım giriş (bağlam) ve hedef (sonraki karakter) çifti üretir; bu yöntem ChatGPT ile aynıdır
Softmax ve olasılık hesabı
- Model çıktısı 27 adet logit’ten oluşur ve Softmax ile olasılığa dönüştürülür
- Her logit üstel alınır, ardından toplamına bölünerek bir olasılık dağılımı oluşturulur
- En büyük değeri çıkarma işlemi, overflow’u önlemek için yapılan bir kararlılık tekniğidir
- Softmax sonucu, her token’ın sıradaki öğe olarak gelme olasılığını gösterir
Kayıp hesabı: Cross-Entropy
- Tahmin doğruluğu −log(p) ile hesaplanır
- Doğru cevabın olasılığı ne kadar yüksekse kayıp o kadar düşüktür; 0’a yaklaştıkça kayıp büyür
- p=1 olduğunda kayıp 0, p→0 olduğunda kayıp sonsuzdur
- Eğitim, bu kaybı en aza indirecek yönde ilerler
Geri yayılım (Backpropagation)
- Kayıp temel alınarak her parametrenin kayıp üzerindeki etkisi hesaplanır
- Tüm işlemler (add, multiply, exp, log vb.) düğümlerden oluşan bir hesaplama grafiği üzerinden türevlenir
- Her düğüm girişleri ve yerel türev değerini saklar, ardından gradient’i geriye doğru yayar
- Örnek: L = a⋅b + a (a=2, b=3) → a’nın gradient’i 4.0’dır (iki yolun toplamı)
- Bu, PyTorch’taki
loss.backward() ile aynı ilkedir
Gömme (Embedding)
- Her token ID, anlam öğrenebilmek için 16 boyutlu bir vektöre dönüştürülür
- Token embedding ile position embedding toplanarak giriş olarak kullanılır
- Aynı karakterin rolü bulunduğu konuma göre değişebilir
- Eğitimden sonra benzer karakterler (ör. sesli harfler) benzer vektörlere sahip olur
Attention
- Her token, Query, Key, Value vektörleri üretir
- Query ile Key arasındaki iç çarpım üzerinden ilişki hesaplanır, Softmax ile ağırlıklar elde edilir
- Ağırlıklı toplamdan çıkan Value, çıktı olarak kullanılır
- Causal Mask uygulanarak gelecekteki token’lara bakılması engellenir
- 4 adet attention head paralel çalışır ve farklı örüntüler öğrenir
Genel GPT yapısı
- Girdi token’ları şu adımlardan geçer
- Embedding + position embedding
- RMSNorm normalizasyonu
- Multi-head attention
- Residual bağlantı
- MLP (64 boyuta genişleme → ReLU → 16 boyuta daralma)
- Yeniden residual bağlantı ve ardından çıktı logit’lerinin hesaplanması
- Residual bağlantılar, gradient kaybolmasını önler
- RMSNorm, aktivasyonların büyüklüğünü dengede tutarak eğitimi daha kararlı hale getirir
Eğitim döngüsü
- 1.000 iterasyon boyunca eğitim yapılır
- İsim seçimi → tokenization → forward pass → kayıp hesabı → geri yayılım → parametre güncelleme
- Adam optimizer kullanılır
- Momentum ve uyarlanabilir öğrenme oranı sayesinde kararlı yakınsama sağlar
- Başlangıç kaybı yaklaşık 3.3’ten 2.37’ye düşer
- Üretilen isimler rastgele yapıdan giderek daha doğal bir forma evrilir
Çıkarım (Inference) ve örnekleme
- Eğitimden sonra BOS ile başlanır ve sıradaki token tekrar tekrar tahmin edilir
- BOS yeniden görünene kadar üretim sürer
- Temperature, örnekleme çeşitliliğini kontrol eder
- Değer düştükçe daha deterministik (ortalama), yükseldikçe daha yaratıcı ama daha dengesiz olur
- İsim üretimi için uygun sıcaklık yaklaşık 0.5’tir
- Örnek çıktı: “karai”
Verimlilik ve ölçeklenebilirlik
- MicroGPT, GPT’nin temel algoritmasının sadeleştirilmiş ama eksiksiz bir uygulamasıdır
- ChatGPT ile farkı yalnızca ölçektir
- 32.000 isim yerine trilyonlarca token, 4.192 parametre yerine yüz milyarlarca parametre kullanılır
- CPU tabanlı skaler işlemler yerine GPU tensor işlemleri kullanılır
- Temel döngü aynıdır: tokenization → embedding → attention → tahmin → kayıp → geri yayılım → güncelleme
Sonuç
- MicroGPT, GPT’nin iç çalışma mantığını sezgisel biçimde öğrenmeyi sağlayan eğitsel bir modeldir
- Büyük ölçekli LLM’lerin karmaşık yapısını sadeleştirerek, dil modellerinin temel mekanizmasını doğrudan deneyimleme imkânı sunar
1 yorum
Hacker News görüşleri
Eğitimin sonunda modelin "kamon", "karai", "anna", "anton" gibi isimler ürettiği söylenmiş, ama aslında bu isimler veri kümesinde zaten var
Başka isimler kullanmak daha iyi olabilir — veri kümesi bağlantısı
Yeni başlayanlara yönelik deniyor ama bu tür matematiksel açıklamaları anlayabilecek kaç acemi vardır emin değilim
Örneğin cross-entropy loss formülünün açıklandığı bölüm fazla karmaşık geldi
Bunu yeniden düşüneceğim
Benim anlamadığım kısım, böyle basit bir modelin nasıl olup da rastgele kod problemlerini debug edebilir hale geldiği
İstatistiksel çıkarımın nasıl “akıl yürütme yeteneği”ne dönüştüğünü merak ediyorum
Claude code'u her gün kullandıkça artık bunun gerçekten böyle olduğuna inanmaya başladım
Özünde mesele şu: “Eğer her zaman doğru bir sonraki kelimeyi tahmin edebiliyorsan, sonuçta her soruya da doğru cevap verebilirsin”
Bu yüzden son dönemde RLHF ya da RLVR gibi pekiştirmeli öğrenme tabanlı yaklaşımlarla ‘doğru cevabı’ bulma yönünde ilerleniyor
Matematiksel olarak kalkülüs tabanlı bir optimizasyon problemine daha yakındır
Sadece metin istatistiklerini öğrenmek değil, bir sonraki token'ı tahmin etmek için karmaşık bir çözüm bulmaktır
Sinir ağlarında istatistiksel unsurlar var ama insan beyni gibi bunun ötesinde bir tarafı da var
Yazının tamamını okudum; faydalı kısımları vardı ama 'gerisini de baykuşu çiz' türü bir his verdi
Kavramlar arasındaki bağlantı noktaları eksik gibiydi ama interaktif kurgu güzeldi
Biraz daha derinlemesine ele alınsa iyi olurdu
Acaba bu aralar kasıtlı olarak imla ya da dilbilgisi hataları ekleyip yazının LLM tarafından yazılmadığını gösterme modası mı var
Karpathy'nin blogunda ve bu yazıda da böyle epey yazım hatası gördüm
Sadece Elon'un Full Self Driving projesini uzun süre ayakta tuttu ve OpenAI'de de çok uzun kalmadı
Son zamanlarda neredeyse tamamen code golf ya da yeni terimler uydurmaya odaklanmış gibi görünüyor
Orijinal metin Karpathy'nin blogunda — microGPT yazı bağlantısı
Bazıları fazla temel, bazıları da fazla derin olduğunu söyledi ama
benim gibi modellerin nasıl çalıştığını çok iyi bilmeyen biri için iyi bir genel bakış oldu
Tam olarak anlamadım ama öğrenmeye başlamak için iyi bir başlangıç noktası gibi görünüyor
Şimdiye kadar gördüğüm en faydalı öğreticilerden biriydi
Kod yazmayan biri olmama rağmen AI sayesinde kod yazmaya başladım
Açıklama basit ve netti; bu da AI'ya ne girmem gerektiğini düşünürken bana çok yardımcı oluyor
Görünüşe göre T-Mobile bu blog sayfasını engelliyor
engelleme uyarısı sayfası bağlantısı
Yazıyı okuyup isimlerin çıktılanmasını anladım ama neden özellikle isim üretimi örneğinin seçildiğini merak ettim
Başka herhangi bir veriyle de yapılabilirdi