22 puan yazan GN⁺ 2025-12-30 | 2 yorum | WhatsApp'ta paylaş
  • Z80-μLM, 1976 çıkışlı Z80 işlemci (4MHz, 64KB RAM) üzerinde çalışan son derece küçük bir konuşmalı yapay zeka modeli
  • Kuantizasyon farkındalıklı eğitim (QAT) uygulanarak yalnızca 2 bit ağırlıklar ve 16 bit tamsayı işlemleriyle karakter düzeyinde metin üretimi gerçekleştiriyor
  • Yaklaşık 40KB boyutundaki .COM çalıştırılabilir dosya içinde çıkarım motoru, ağırlıklar ve sohbet arayüzü birlikte yer alıyor
  • Trigram hash kodlama ile girdi 128 kovaya dönüştürülüyor; böylece yazım hatalarına ve kelime sırasına dayanıklı yanıtlar üretiliyor
  • Karmaşık bağlam anlayışı mümkün olmasa da, kısıtlı 8 bit ortamda çalışabilen deneysel bir yapay zeka modeli olarak dikkat çekiyor

Projeye genel bakış

  • Z80-μLM, retro bilgi işlem ortamlarında çalışabilen son derece küçük bir dil modeli
    • 64KB RAM'e sahip bir Z80 CPU üzerinde çalışıyor ve karakter düzeyinde etkileşimli yanıtlar üretiyor
    • Model, çıkarım kodu ve UI dahil toplam boyutu yaklaşık 40KB
  • Projenin temel sorusu, “Ne kadar küçültülürse küçültülsün karakterini koruyabilir mi?” oldu; ayrıca self-hosted dağıtım da mümkün
  • Turing testi seviyesine ulaşmasa da, basit diyaloglarla kullanıcıya keyif veren bir yapı sunuyor

İki örnek dahil

  • tinychat

    • Gündelik Soru-Cevap verileri ile eğitilmiş basit bir chatbot
      • Selamlaşma, kendini tanıtma ve genel sohbet için kısa, karakterli yanıtlar veriyor
      • Örnek: “hello” → “HI”, “are you a robot” → “YES”, “do you dream” → “MAYBE”
  • guess

    • 20 Questions oyunu biçimindeki model
      • Gizli konuyu biliyor ve YES/NO/MAYBE ile yanıt veriyor
      • Kullanıcı doğru cevabı bulursa “WIN” çıktısı veriyor
  • Eğitim verileri Ollama veya Claude API kullanılarak üretilebiliyor; ayrıca sınıf dağılımı dengeleme aracı da bulunuyor

Başlıca özellikler

  • Trigram hash kodlama: Girdi metnini 128 kovaya hash'leyerek yazım hatalarına tolerans ve kelime sırasından bağımsızlık sağlıyor
  • 2 bit ağırlık kuantizasyonu: Her ağırlık {-2, -1, 0, +1} değerlerinden birini alıyor, 1 bayta 4 adet sığıyor
  • 16 bit tamsayı çıkarımı: Z80'in 16 bit aritmetik işlemlerini kullanıyor
  • ~40KB .COM dosyası: CP/M'in Transient Program Area (TPA) yapısına uygun
  • Otoregresif üretim: Çıktıyı karakter karakter oluşturuyor
  • Kayan nokta işlemi yok, sabit nokta ölçekleme kullanılıyor
  • Etkileşimli mod desteği: CHAT komutuyla çalıştırılıyor

Etkileşim biçimi

  • Model girdiyi gerçekten ‘anlamıyor’, ama girdinin biçimine (shape) göre tepki veriyor
    • Girdi cümlesi 128 trigram kovasına dönüştürülerek anlamsal benzerlik korunuyor
    • Örnek: “hello there” ve “there hello” aynı kova yapısıyla işleniyor
  • Uzun cümleleri veya sıra bağımlı cümleleri ayırt etmekte zorlanıyor
  • Kısa yanıtların anlamı

    • 1-2 kelimelik yanıtlarla bile beklenmedik nüanslar ifade edilebiliyor
      • OK: nötr kabul
      • WHY?: soruyu geri sorgulama
      • R U?: varlığa dair şüphe
      • MAYBE: belirsizlik
      • AM I?: yansıtıcı soru
    • Bu tür kısa yanıtlar, kullanıcının bağlamı kendisinin çıkarsamasını teşvik ediyor

Güçlü yanlar ve sınırlamalar

  • Güçlü yanlar
    • Kısa girdilere karşı tutarlı, sınıflandırma benzeri yanıtlar
    • Yazım hatası·yeniden düzenleme·kelime sırası değişimine dayanıklı
    • Kelime seçimiyle karakter yansıtabilme
    • Kısıtlı 8 bit donanımda da çalışabilme
  • Sınırlamalar
    • Yeni cümleler üretemiyor
    • Çok turlu bağlam takibi yapamıyor
    • Dilbilgisini anlayamıyor
    • Genel zeka seviyesine ulaşmıyor

Mimari

  • Girdi katmanı: 128 sorgu kovası + 128 bağlam kovası
  • Gizli katman: Örnek yapılandırma 256 → 192 → 128
  • Çıktı katmanı: Karakter kümesindeki her karakter için 1 nöron
  • Aktivasyon fonksiyonu: ReLU
  • Kuantizasyon kısıtları

    • Z80, 8 bit bir CPU olsa da 16 bit register çiftleri (HL, DE, BC) kullanarak biriktirme ve aktivasyon yapıyor
    • Ağırlıklar bir baytta 4 adet olacak şekilde saklanıyor (2 bit birimlerle)
    • 256 girdiyi toplarken taşmayı önlemek için 16 bit biriktirici kullanılıyor
    • 2 bit ağırlıklar nedeniyle ifade gücü sınırlı; QAT olmadan eğitim sonuçları kararsız olabiliyor
  • Z80 iç döngüsü

    • Çıkarımın kalbi, çarp-topla döngüsü (MAC)
      • Ağırlıkları açıyor, ardından -2~-1~0~+1 değerlerine göre biriktiriciye (ACC) ekleme veya çıkarma yapıyor
      • Her katman hesabından sonra taşmayı önlemek için 2 bit sağa kaydırma uygulanıyor
    • Tüm çıkarım sürecinde her karakter için yaklaşık 100 bin işlem tekrarlanıyor

Lisans

  • MIT veya Apache-2.0 seçeneklerinden biri tercih edilebiliyor

2 yorum

 
GN⁺ 2025-12-30
Hacker News yorumları
  • Zamanlaması kusursuz. Unreal Engine oyununun içine bir VT100 terminali (kodlama ajanını çalıştırmak için), bir Z80 emülatörü ve CP/M makinesini programlayabilen bir seri köprü eklemiştim
    ekran görüntüsü
    Birinin tam da buna uyan bir şey paylaşacağını hiç düşünmemiştim. Gerçekten tuhaf ama harika bir rastlantı
    • Sanırım ikimiz de telepati kurmuşuz
      Ben de tarayıcı tabanlı bir CP/M emülatörü ve IDE yaptım: lockboot.github.io/desktop
      Aslında onu paylaşacaktım ama “harika demo” ararken tavşan deliğine düştüm
    • James Burke'ün Connections: Alternative History of Technology kitabı bu tür tesadüfi bağlantıları çok iyi ele alıyor
    • İlginç, ama imgur'u göremediğim için üzücü
  • Buna bayıldım. Hemen GitHub yıldızı verdim
    Ben de 60'lardaki delikli kart makineleri için Fortran IV ile bir MLP yazmıştım (Xortran projesi)
    Dikkat mekanizması yoktu ve bağlam son cümlenin trigram'larıyla sınırlıydı ama etkileşim yine de oldukça iyiydi
    Eğer bu tür bir şey 60'ların donanımında mümkün olsaydı, o dönemin bilim kurgu ve bilimi tamamen farklı olurdu
    • Bu tür projeler gerçekten çok ilginç. Sanki kaçırılmış bir yolu görüyormuş gibi hissettiriyor
      Komplo teorisyeni gibi konuşacağım ama, AI şirketlerinin RAM'i topluca satın almasının nedenlerinden biri insanların şu anın ev bilgisayarı devrimi dönemine benzediğini fark etmesini engellemek olabilir
      Ben 1TB RAM'li bir makine kullanıyorum ve özel ajanlarla ticari modellerden daha iyi performans alıyorum. Kişisel, güvenli ve paraya çevrilmemiş
  • Ben de bunu sık sık düşünüyorum. “Minimum işlevli LLM” nedir acaba? Basit bir sohbet kurabilecek seviyede bir model yani
    Sonraki soru da şu: Dış verileri sorgularken öğrenebilen küçük bir model yapılabilir mi?
    Eğer gerçek zamanlı öğrenen ultra küçük bir model yapılabilirse, tamamen yerel çalışan kişisel bir asistan sahibi oluruz
    • Bu, Karpathy'nin bahsettiği “cognitive core” kavramıyla neredeyse aynı
      Ansiklopedik bilgisi neredeyse olmayan ama temel akıl yürütme ve araç kullanma becerilerine sahip çok küçük bir model
      ilgili tweet
    • Eğer 90'larda böyle bir teknoloji olsaydı, temel bir LLM zaten var olmuş olabilirdi
      O zaman bugün dünya tamamen farklı olurdu gibi geliyor
    • RWKV'ye bakmak ilginç: rwkv.com
      “RNN, LLM için uygun olsaydı nasıl olurdu?” sorusuna yönelik deneysel bir vaka çalışması
      CPU üzerinde inanılmaz hızlı
    • Minecraft içinde birinin yaptığı bir LLM var; 5 milyon 8 bit ağırlıkla basit sohbetleri yürütebiliyor
      Ama büyük bir bağlam penceresini iyi kullanmak zor olabilir gibi duruyor
  • AI şirketlerinin bütün Z80 çiplerini alıp fiyatları yükselteceğiyle ilgili bir şaka
    • Artık çok geç. Geçen yıl stoklar tükendi
  • Eğer bir modele bir gizli ifade (passphrase) öğretilse ve kullanıcının sorular sorarak bunu tahmin etmesi gerekse
    Modelin ağırlıklarına erişildiğinde bu sır geri çıkarılabilir mi, yoksa sadece sorular üzerinden mi erişilebilir olur diye merak ediyorum
    • Bu soruyu görünce şu makale aklıma geldi: Planting Undetectable Backdoors in Machine Learning Models
      Dışarıdan normal çalışırken içine tespit edilemeyen arka kapılar yerleştirme yöntemlerini ele alıyor
    • Model ne kadar küçükse, böyle sırlar ağırlık analiziyle o kadar kolay çıkarılabilir
      Genel olarak bu, yorumlanabilirlik (interpretability) meselesine giriyor
  • Uygun kod ve eğitim altyapısı olsaydı, ELIZA da çok daha güçlü olabilirdi
    • ELIZA aslında 1960'lardaki IBM 7094 ana bilgisayarında çalışıyordu
      32K×36 bit kelime yapısına sahipti ve bayt işlemlerini desteklemiyordu
      40KB'lik Z80 çalıştırılabilir dosyasını doğrudan taşımak oldukça sıkışık olurdu
      Ama çoğu 2 bit ağırlıktan oluşuyorsa mümkün olabilirdi
      Daha sonraki donanımlarda, özellikle 1976'daki Z80 üzerinde çok daha rahat olurdu
  • Ben de kendi Z80 bilgisayarımı tasarlayıp ürettim. Şu anda 32KB ROM ve 32KB RAM var
    Bir sonraki sürümde genişleteceğim, o yüzden bunu kesinlikle denemeyi düşünüyorum
    • Bugünlerde RAM fiyatları çok pahalı
  • Tüm girdiyi tek seferde embedding olarak işliyorsa, bu Transformer ya da RNN değil, daha çok MLP mimarisi gibi görünüyor
  • Eski serbest girişli RPG'lerde böyle bir fuzzy matcher olsaydı keşke
    O zamanlar sadece tam anahtar kelime eşleşmesi vardı, bu da yapay hissettiriyordu
    Muhtemelen bu tür yaklaşımı kullanan son oyun 2001 tarihli Wizardry 8 idi
  • Harika iş. Peki AGI için tahmini takvim nedir?
    • Muhtemelen Nisan başı gibi
    • Sanırım hemen şu köşenin arkasında
 
crawler 2025-12-30

En yeni teknolojiyi geçmişin donanımında çalıştırabilmek gerçekten çok etkileyici görünüyor.

Gelecekte AGI ortaya çıktığında, şu anda Dünya’daki tüm hesaplama gücünü bir araya getirsek onu çalıştırabilir miyiz?