29 puan yazan GN⁺ 2025-10-14 | 1 yorum | WhatsApp'ta paylaş
  • Andrej karpathy'nin nanochat projesi, 100 dolarlık bütçeyle ChatGPT benzeri bir konuşma odaklı LLM'i doğrudan kurabilmenizi sağlayan açık kaynaklı bir proje
  • Tüm pipeline (tokenization, pretraining, midtraining, finetuning, evaluation, inference, web serving) sade ve hacklenebilir biçimde uygulanmış
  • Tek bir 8XH100 GPU düğümünde tek bir script ile 4 saat içinde eğitim tamamlanıyor; GPT-2 seviyesinde performansı hedefleyen d26 modeli yaklaşık 300 dolara 12 saat, 1000 dolarlık katman ise 41,6 saat sürüyor
  • 330KB boyutunda, 8.300 satır ve 44 dosyadan oluşan son derece sade bir kod tabanıyla, karmaşık config nesneleri veya model factory'leri olmadan okuması kolay ve fork etmesi kolay güçlü bir baseline sunuyor
  • Eureka Labs'in LLM101n kursunun capstone projesi olarak geliştiriliyor ve amaç, 1000 doların altındaki bütçelerle erişilebilen mikro modellerin en ileri düzeyini geliştirmek

nanochat proje genel bakışı

  • nanochat, ChatGPT benzeri bir konuşma odaklı LLM'i 100 dolar maliyetle hayata geçirmek isteyen geliştiriciler için hazırlanmış açık kaynaklı bir proje
  • Tüm kod tabanı tek parça, okunabilir, az bağımlılığa sahip ve sade yazıldığı için değiştirmek ve deney yapmak kolay
  • pretraining, finetuning, değerlendirme, inference ve web UI dahil tüm süreci tek seferde yönetebileceğiniz bir ortam sunuyor
  • speedrun.sh script'i ile tüm pipeline otomatik olarak çalıştırılabildiği için yeni başlayanlar da kolayca başlayabiliyor
  • Minimum bağımlılık ve hacklenebilir yapı anlayışıyla tasarlandığından, kolay anlaşılır ve değiştirilebilir olması gereken eğitim amaçlı kullanım için optimize edilmiş
  • Proje, Eureka Labs tarafından geliştirilen LLM101n dersinin capstone projesi olarak kullanılacak

Hızlı başlangıç (Quick Start)

  • GPU ortamında, özellikle 8XH100 düğümünde, speedrun.sh çalıştırıldığında eğitim ve inference süreci yaklaşık 4 saatte tamamlanıyor
    • 8XH100 düğüm için saatlik 24 dolar üzerinden toplam 4 saat sürüyor
  • Uzun süren eğitim sırasında kararlı izleme için screen oturumu içinde çalıştırmanız öneriliyor
    • screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh komutunu kullanın
    • Ctrl-a d ile ayırdıktan sonra tail speedrun.log ile ilerlemeyi takip edin
  • Eğitim bittiğinde basit bir web UI üzerinden LLM'e serbestçe soru sorabilir ve sonuçları sohbet penceresinde görebilirsiniz
    • python -m scripts.chat_web
  • 4e19 FLOPs seviyesindeki model, anaokulu öğrencisi düzeyinde bir konuşma yeteneği sunuyor
    • Hikâye/şiir yazması istenebilir
    • Halüsinasyon görüngüsü gözlemlenebilir
    • Gökyüzünün neden mavi olduğu gibi temel sorulara yanıt verebilir
  • Eğitim sonuçları ve çeşitli performans metrikleri report.md dosyasına kaydediliyor

Eğitim sonuç raporu

  • report.md dosyası, eğitim çalıştırmasının "karne"sini içeriyor
    • Çeşitli değerlendirme göstergeleri ve metrikler sunuluyor
    • Nihai özet tabloda BASE, MID, SFT ve RL aşamalarına göre performans gösteriliyor
  • Kod tabanı istatistikleri
    • Karakter sayısı: 333.989
    • Satır sayısı: 8.304
    • Dosya sayısı: 44
    • Token sayısı (yaklaşık): 83.497
    • Bağımlılıklar (uv.lock satır sayısı): 2.004
  • Benchmark performansı örnekleri
    • CORE: 0.2219 (BASE)
    • ARC-Challenge: 0.2875 (MID), 0.2807 (SFT)
    • GSM8K: 0.0250 (MID), 0.0455 (SFT), 0.0758 (RL)
    • HumanEval: 0.0671 (MID), 0.0854 (SFT)
    • Toplam süre: 3 saat 51 dakika
  • Modelin performansı ChatGPT'ye kıyasla daha düşük olsa da, düşük bütçeli LLM geliştirme deneyimi öne çıkarılıyor

Daha büyük modeller (Bigger Models)

  • 100 dolarla yüksek performanslı bir ChatGPT klonu eğitmek mümkün değil; gerçek LLM'ler milyonlarca dolarlık sermaye harcamalarıyla biliniyor
  • Dikkat çeken iki ek ölçek daha var
    • Yaklaşık 300 dolarlık d26 modeli (depth=26): yaklaşık 12 saat eğitim, GPT-2 CORE puanını az farkla aşıyor
    • 1000 dolarlık katman: yaklaşık 41,6 saat sürüyor, temiz bir yuvarlak sayı
  • d26 modelini eğitmek için speedrun.sh üzerinde yapılacak değişiklikler
    • Daha fazla veri shard'ı indirmek gerekiyor
      • Token sayısını, parametre sayısını 20 ile çarparak hesaplayın
      • Karakter sayısını 4.8 ile çarparak hesaplayın
      • Shard sayısını 250 milyonla bölerek hesaplayın (yaklaşık 450 adet gerekiyor)
    • OOM'u önlemek için --depth=26 seçeneğini kullanın ve device_batch_size değerini 32'den 16'ya yarıya indirin
    • Midtraining aşamasında da aynı device_batch_size değerini kullanmak gerekiyor

Hesaplama ortamı gereksinimleri

  • 8XA100 GPU düğümünde de çalışabiliyor ancak biraz daha yavaş
  • Tek GPU üzerinde de çalışabiliyor
    • torchrun kullanılmazsa neredeyse aynı sonuçlar üretiliyor
    • Otomatik olarak gradient accumulation moduna geçiyor
    • Süre yaklaşık 8 kat uzuyor
  • 80GB'tan az VRAM'e sahip GPU'larda hyperparameter ayarı gerekiyor
    • Bellek kazanmak için --device_batch_size değerini 32'den (varsayılan) 16, 8, 4, 2, 1 seviyelerine düşürün
    • 1'in altına inmek isterseniz daha yaratıcı bir yaklaşım gerekir
  • Vanilla PyTorch tabanlı olduğu için xpu, mps gibi çeşitli ortamları da destekleyebilir
    • Varsayılan olarak sunulmuyor, bu yüzden küçük değişiklikler gerekebilir

Kullanışlılık ve erişilebilirlik

  • nanochat'in en büyük avantajı, tüm dosyaları tek seferde paketleyip başka LLM'lere, belge arama servislerine vb. kolayca soru sorabilmeniz
  • files-to-prompt utility kullanım örneği
    • py, md, rs, html, toml, sh dosyaları dahil
    • rustbpe/target klasörü hariç
    • cxml çıktı biçimi seçili
    • Yaklaşık 330KB (yaklaşık 100 bin token'ın altında), 45 dosya ve 8 bin satırlık kod olarak paketlenebiliyor
  • DeepWiki kullanımı öneriliyor
    • Depoyla ilgili soru sormak için GitHub URL'sindeki github.com kısmını deepwiki.com ile değiştirin
    • Devin/Cognition tarafından sağlanıyor

Katkı ve projenin yönü

  • nanochat henüz tamamlanmış bir proje değil
  • Amaç, 1000 doların altındaki bütçelerle uçtan uca çalıştırılabilen mikro modellerin en ileri düzeyini geliştirmek
  • Erişilebilirlik yalnızca maliyet değil, bilişsel karmaşıklığı da kapsıyor
    • Devasa config nesneleri, model factory'leri veya if-then-else canavarı kodlar yok
    • Baştan sona yapılandırılabilir bir LLM "framework"ü olmayı hedeflemiyor
  • Tekil, tutarlı, minimal, okunabilir, hacklenebilir ve mümkün olduğunca kolay fork edilebilir bir "güçlü baseline" kod tabanı
    • Baştan sona çalışarak somut bir ChatGPT klonu ve bir karne üretmek üzere tasarlanmış

1 yorum

 
GN⁺ 2025-10-14
Hacker News görüşü
  • İlginç bir yapay zeka kodlama aracı kullanım deneyimi paylaşımı
    Kodun ne kadarını gerçekten kendisinin yazdığını merak edip Karpathy'ye sormuştum
    Karpathy: Soru için teşekkürler, aslında kodun büyük kısmını bizzat kendim yazdım (tab otomatik tamamlama kullandım)
    claude/codex ajanlarını birkaç kez denedim ama isabet oranları düşük olduğu için pek yardımcı olmadılar
    Muhtemelen bunun nedeni, yaptığım reposunun veri dağılımından fazla uzak olması olabilir
    Orijinal konuşma bağlantısı

    • "Repo veri dağılımından fazla uzak" sözü, yapay zeka modellerinin neden bana çoğu zaman yardımcı olmadığını açıklıyor
      Yaptığım her şey fazla kendine özgü olduğu için dağılımdan uzak kalıyor

    • Karpathy gibi güvenilir birinin bunu söylemesi sevindirici
      AGI'nin yakında geleceğini düşünenlerin beklentilerini biraz düşürmesi iyi olabilir
      Ben de Claude Code'u seviyorum
      Düzenli olarak web kodu yazmam gereken zamanlar oluyor ve web tarafında eğitim verisi kapsamı çok iyi olduğu için Claude benden çok daha iyi bir web geliştiricisi
      Ama otomasyon aracımın algoritmik çekirdeğine inmek istediğimde, Claude'un kullanabileceği şeyler azalıyor ve hata yapma oranı artıyor
      Yine de genel toplamda artı yönde olduğu için memnuniyetle para verip kullanıyorum
      Sadece bir web geliştirme yardımcısı olarak kalsa bile büyük fayda

    • Bunun aslında doğal bir durum olduğunu düşünüyorum
      Burada yeni ve özgün biçimde kod yazılan bir durum var
      Birçok kişi Karpathy'nin yanıtını eleştiriyor ama aslında onun claude/codex denemiş olması, geçmişte bu araçların gerçekten faydalı olduğuna da işaret ediyor

    • Karpathy tweet'inin başka bir mirror bağlantısı burada

  • nanochat'in modded-nanoGPT'den ilham almış olması etkileyici
    Soy ağacı Karpathy'nin nano-GPTsi → Keller Jordan'ın modded-nanoGPTsi (modeli hızlı eğiten sürüm) → NanoChat şeklinde
    modded-nanoGPT özellikle küçük GPT modellerini inanılmaz hızlı eğitmesiyle dikkat çekiyor
    Özellikle AdamW yerine lineer katmanlarda Muon optimizer'ı (yazarın kendi geliştirdiği) kullanıyor
    modded-nanoGPT, Muon optimizer tanıtımı

    • Muon, Keller Jordan'ın bu hızlı eğitim yarışması için yaptığı optimizer ve başkalarının iyileştirmeleri de eklenmiş
      Henüz bir yıl bile olmadan model eğitiminde yaygın biçimde kullanılan bir SOTA haline geldi

    • 8xH100 ile tek bir inference düğümü çalıştırmaları oldukça çarpıcı
      Gerçek üretim ortamındaki frontier LLM'ler de bu ölçekte mi çalışıyor, yoksa daha fazla VRAM / hesaplama gücü mü tüketiyor merak ediyorum
      Saatte yaklaşık $8 ve istek başına 5 saniye sürdüğünü varsayarsak kabaca 700 kadar isteği karşılayabilir
      Yani istek başına yaklaşık 1 sent ediyor
      Hesabımda bir hata olup olmadığını merak ediyorum

  • Eğitim şu anda da gerçekten devam ediyor (20 dakika önce başladı)
    Canlı loglar açık
    4 saat sonra model tamamlandığında herkesin inference testi yapabilmesi için paylaşılacak

    • Tamamlanan modeli Hugging Face'e yüklediler
      Karpathy kadar iyi sonuç alamadım (seed şanssızlığı mıydı acaba?)
      Yine de denemesi eğlenceli
      Örneğin "Bir köpeğin kaç bacağı vardır?" diye sordum
      Asistan: "Bu gerçekten ilginç bir soru ve yüzyıllardır köpek severler arasında tartışılan bir konu. Tek bir 'doğru cevap' yok (...)" diye yanıt verdi

    • İlk grafiğin yanındaki yorumda
      "İlerlemenin ana ölçütü. Bits per byte, Karpathy'nin dediği gibi 'normal cross-entropy loss'tan çok daha iyi bir metriktir. Loss'u her token için bayt sayısına göre normalize eder, böylece tokenizer'dan bağımsız karşılaştırma yapılabilir.'"
      Bu o kadar açık bir açıklama ki, tinystories üzerinde tokenizer denemelerimi yaparken bunu düşünmemiş olmam biraz utandırdı
      Tokenizer'ımın gerçekte ne kadar iyi olduğunu yeniden analiz etmek istiyorum

    • Bu repoyu W&B ile eğitirken nasıl çalıştırılacağına dair kısa bir howto olsa güzel olurdu
      Daha önce hiç model eğitimi akışı yaşamamış bir programcı için bunu adım adım paylaşabilir misiniz merak ediyorum

  • Eğlenceli!
    Karpathy'nin Shakespeare üreticisi, ollamadan sonra denediğim ilk proje olmuştu
    Amacım LLM'lerin nasıl çalıştığını anlamaktı
    Geçen haftadan beri LLM'lere gömülmüş durumdayım ve sıfırdan, iki backend'li bir eğitim/çıkarım sistemi yapıyorum

    • CPU (JAX tabanlı)
    • GPU (wgpu-py tabanlı)
      rocm/pytorch bana zahmetli geldiği için hiç sıcak bakmıyorum
      Vulkan güzel. llama-cpp'de de o şekilde kullanılıyor
      Geçen hafta hem CPU hem GPU backend'lerini çalışır hale getirdim ve GPU backend'inde bir bug olduğu için onu düzeltmeye odaklandım
      WGSL kodunu refactor ettim ve verimliliği artırdım
      Bu süreçte LLM'leri yoğun biçimde kullandım ve şaşırtıcı derecede büyük bir dönüm noktası oldu
      Refactor prompt'larıyla adım adım hataları giderip sonunda astral ty ile type check'ten geçen kod üretebildim
    • pytorch'a mı sıcak bakmıyorsun?
      Bundan daha verimsiz bir seçim zor bulunur gibi
  • Bu hafta sonu nanoGPT'yi (bağlantı) denedim
    Epey eski bir proje ama kendi küçük Shakespeare GPT'ni oluşturup eğitmek için harika bir uygulama
    Yaklaşık 0.8M parametreyle CPU'da çalıştırdım
    Çıktı aşağı yukarı beklendiği kadar "pek iyi değil"
    Yine de insana büyü hissi veriyor
    Derin öğrenme uzmanı olmayan, sadece kurcalamayı ve bir şeyler hack'lemeyi seven biri için mükemmel bir giriş noktası
    Hafta sonu nanoGPT deneyimimi hâlâ bloga dökebilmiş değilim... bitirebilseydim buraya bırakırdım

    • Küçük ölçekte iyi ML araştırmalarının doğrulanabildiğini göstermesi açısından faydalı bir alıştırma
      Bu yeni örnek daha gelişmiş; instruction following, tool use SFT ve RLVR'yi de kapsıyor
      Bu sayede daha kullanışlı bir baseline ortaya çıkıyor

    • Shakespeare kodunu biraz ayarlayıp farklı veriyle eğitirsen Magic The Gathering commander deste üretimi epey iyi çalışıyor

  • "chief LLM whisperer Alec Radford'dan tavsiye aldı"
    Eğer Alec ile Andrej'in bir podcast'i çıkarsa dünyayı sallayabilir
    GPT-1'in ihtişamlı günlerinden şimdi 4 saatte GPT-3 düzeyine gelmeye kadar

    • Ne olur bir podcast yapsınlar, mükemmel olur
  • Eureka Labs: Github bağlantısı
    Andrej gerçekten inanılmaz üretken ve hayranlık uyandıran biri
    Onun işlerini takip etmek başlı başına olağanüstü bir deneyim

  • İnsanlığa en büyük katkıyı yapmanın yolunun
    ne kadar çok insana ne kadar derin yardım ettiğinin çarpımı olduğunu hep düşünmüşümdür
    Karpathy'nin yaptığı open source işler bu anlamda en yüksek kaldıraçlı yaklaşımlardan biri
    Bugünün dünyası da open source projelerin üzerine kurulu
    Dünyanın her yerinden insanların ücretsiz kodlama öğrenip yazılım üretebilmesini sağlayan özgürlük sayesinde
    Umarım AI/LLM alanı da bu olumlu yönü izler

    • Yazılımdaki bu ücretsiz/paylaşıma dayalı geleneği gerçekten seviyorum
      Ama LLM'lerde aşırı yüksek eğitim maliyetleri ve güçlü donanım gereksinimi yüzünden bunu sürdürmek zor olabilir gibi geliyor
      İleride yazılım geliştirme de LLM barındırıcılarına "kira" ödenen bir yapıya dönebilir
      On-prem (yerel) inference ortamını yeniden herkes için erişilebilir kılacak bir yol bulunabilir
      Ama şimdilik yüksek eğitim maliyetleri yüzünden tablo belirsiz görünüyor
      Ayrıca LLM bağımlılığı arttıkça
      programlamaya yeni başlayanlar için hazırlanan öğretici gibi "elle üretilmiş" içeriklerin zamanla azalmasından endişe ediyorum

    • (Biraz uzun ama hepsi daha iyi bir dünya istemekten geliyor)
      Bu bakış açısı, baskın "AI karşıtı" duygudan biraz farklı
      Fikri mülkiyet denen kavram, insanlığa doğrudan katkıdan çok bilginin mülkiyetinin belirli kişilerde birikmesi ve sonra tüm insanlığa kiralanması yapısına benziyor
      Ama elbette tek tek üreticilerin geçimlerini sürdürebileceği bir ortam da mutlaka gerekli
      Sadece Karpathy'nin yaptığı işler değil, binlerce YouTube üreticisinin de kendi alanlarında topluma büyük katkı sunduğunu düşünüyorum
      Yine de birçok kişinin sponsorluğa dayanmak zorunda olması biraz buruk
      Patreon var ama o da ideal değil
      Tüm bu çabaların topluma büyük katkı sunma biçimleri olduğu konusunda hemfikirim
      Kısa süre önce Daily Show'da Jon Stewart, AI eğitimini insanlığın bilgisinin strip mining'i olarak tanımladı
      AI eğitimi bazen tek taraflı biçimde hırsızlık gibi gösteriliyor ama gerçekte çok çeşitli görüşler var
      Bu gidişat sonunda aşırı kapitalist bilgi sahipliği yapısını daha da pekiştirip
      fikirlerin mülkiyetini giderek daha az kişinin elinde toplayabilir
      Bu durum genel olarak dünyaya pek fayda sağlamaz, sadece bazı grupların işine yarar
      Fikri mülkiyet ticareti de zamanla daha az elde yoğunlaşma eğilimi gösteriyor
      Modern topluma uygun tartışmalara ve yeni yorumlara gerçekten ihtiyaç olduğunu düşünüyorum
      Sürekli "yukarıdakiler engeller, tartışmanın anlamı yok" şeklindeki yenilgici tavrın tartışmayı boğması üzücü
      Daha iyi çözümlerin nasıl ortaya çıkabileceğini özgürce tartışmak önemli

    • Onun ANN/LLM from scratch video serisini sık sık öneriyorum
      Dersler çok açık ve kodlama stili pythonic, özlü ama okunması kolay
      (pytorch vektörizasyon kısımları karmaşık ama o alan zaten zor)
      Videoları izlerken sadece içerik değil, stil de öğreniliyor; bu da herkes için büyük fayda

  • Sahip olduğum tüm psikoloji kitapları, materyaller, raporlar ve makalelerle bir modeli eğitip
    ihtiyaç duyduğumda özelleşmiş sorular için 1xH100 düğümünde (bağlantı) inference yaptırabilir miyim diye merak ediyorum

    • Teknik olarak yapılabilir ama performans son derece kötü olur
      Böyle bir durumda önceden eğitilmiş küçük bir modeli alıp kendi verinle fine-tune etmek
      ya da bir RAG iş akışı (Retrieval Augmented Generation), veya ikisinin birleşimi çok daha iyi olur

    • Yapabilirsin
      Ama genel amaçlı bir modeli kullanıp, belgelerini çalışma bağlamına eklemenin çeşitli yolları (ör. RAG, Apple'ın hierarchical memories yaklaşımı gibi, makale bağlantısı) daha iyi sonuç verebilir

    • Yapılabilir ama veri kümen zaten çok küçük olacağı için, önceden eğitilmiş model + fine-tuning ya da küçük model + RAG yaklaşımından çok daha kötü performans verir

    • Yapamazsın

  • Bu proje gerçekten ilham verici!
    Gerçek prompt performansı örneklerini veya test sonuçlarını görmek güzel olurdu

    • Simon.incutio.com üzerinde
      burada gerçek prompt ekran görüntülerinin olduğu belirtilmiş