Show HN: ~1 GB Qwen Ağırlığı İçinde Çalışan Bir Nintendo (nesformer)
Kaynak: Hacker News
İçindekiler 2 başlık
nesformer: Standart Bir Qwen3.5 Modelinde Derlenmiş NES İşlemcisi#
nesformer, klasik Nintendo Entertainment System (NES) konsolunun 6502 işlemcisini (2A03 çipinin çekirdeği), 2 KB çalışma belleğini (RAM) ve oyun kartuşunun program ROM'unu standart bir Qwen3_5ForCausalLM kontrol noktası (checkpoint) içinde çalıştıran sıra dışı bir mühendislik projesidir.
Bu projeyi yazılım geliştirme ve yapay zeka mimarisi açısından benzersiz kılan temel nokta şudur: Bu ağırlıkları kimse eğitmemiştir; her bir ağırlık bir derleyici tarafından matematiksel olarak hesaplanmıştır. Bir oyun oynadığınızda, model işlemcinin yürütme kaydını (execution log) her seferinde bir token olacak şekilde tahmin eder. Küçük bir ana bilgisayar (host) programı ise konsolun geri kalanını üstlenir: görüntüyü çizer, kontrolcüyü okur ve dikey karartma (vblank) kesmesini tetikler.
Proje, Divyansh Agrawal tarafından geliştirilen ve önce CHIP-8, ardından da RISC-V işlemcisini Qwen3.5-4B modeline derleyen Qwenputer çalışması üzerine inşa edilmiştir. Qwenputer'ın derleyicisini ve en önemli mimari hilesini yeniden kullanır: Modelin Gated DeltaNet durumu, makinenin belleği (RAM) olarak işlev görür.
Super Mario Bros. (World 1-1) ve Doug Fraker imzalı Full Game (başlık ekranı ve ilk seviye) demolarındaki her bir CPU token'ı doğrudan modelden üretilmiştir. Dahil edilen test oyunlarında üretilen her kare, geleneksel bir 6502 emülatörünün çıktısıyla birebir eşleşmektedir. Bu durum, sinir ağı mimarilerinin deterministik durum makineleri ve hesaplama grafikleri olarak nasıl programlanabileceğine dair geliştiricilere muazzam bir pratik perspektif sunar.
Hızlı Başlangıç (Quick Start)#
Projeyi kendi ortamınızda deneyimlemek ve ağırlık tabanlı derleme mantığını incelemek için aşağıdaki 3 adımı takip edebilirsiniz:
- 1. Klasör yapısı (Folder layout):
nesformer.zipvenesformer-weights.zipdosyalarını aynı klasöre çıkartın. Ağırlıklar (weights/),nesformer/Python paketinin içine değil, hemen yanına yerleştirilmelidir. Proje dizinindenesformer/(Python paketi),chipformer/(Qwenputer derleyicisi),roms/(test ROM'ları),examples/,tests/veweights/(config.json,generation_config.json,model.safetensors,nesformer.json,SHA256SUMS) yer alır. Komut satırı aracı (CLI), ağırlıkları paketin yanında arar; farklı bir konum içinrun,checkveyatracekomutlarına--weights /yol/weightsparametresini geçebilirsiniz. Dosya bütünlüğünü doğrulamak adına ana dizindeshasum -a 256 -c weights/SHA256SUMSkomutunu çalıştırmanız önerilir (SHA256SUMSkontrolü, büyük model ağırlıklarının dağıtımında kritik bir pratiktir). - 2. Kurulum (Install): Sisteminizde Python 3.11 veya daha yeni bir sürüm bulunmalıdır. Sanal ortam oluşturup bağımlılıkları yükleyin:
python3 -m venv .venvvesource .venv/bin/activate(Windows için:.venv\Scripts\activate) komutlarının ardındanpip install numpy scipy numba pillowile kurulumu tamamlayın. - 3. Oyun oynama (Play a game): Modeli çalıştırmak için örnek komut:
python -m nesformer run roms/thwaite.nes --frames 600 --show --buttons "start@90-95+200-205,a@230-233..."Buradaki--showbayrağı, model her kareyi ürettikçe bunu doğrudan terminalinize çizer. Çalışma bittiğinde CLI, mevcut klasöre ROM adıyla (thwaite.gif) hareketli bir GIF kaydeder. Performans açısından işlemin yavaş olmasını bekleyin: İlk çalıştırma, motoru numba ile derlemek için yaklaşık 20 saniye harcar. Sonrasında her bir kare 1–6 saniye sürer; yani 600 karelik (NES zamanıyla 10 saniyelik) bir yürütme yaklaşık 25 dakika alır.
Kaynak ve atıf
Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- github.com/dbreunig/nesformer