İçeriğe geç
edumintsBlog
Yazılım3 dk okuma

Show HN: ~1 GB Qwen Ağırlığı İçinde Çalışan Bir Nintendo (nesformer)

Kaynak: Hacker News

Paylaş
YazılımEdumints Blog
İç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.zip ve nesformer-weights.zip dosyalarını aynı klasöre çıkartın. Ağırlıklar (weights/), nesformer/ Python paketinin içine değil, hemen yanına yerleştirilmelidir. Proje dizininde nesformer/ (Python paketi), chipformer/ (Qwenputer derleyicisi), roms/ (test ROM'ları), examples/, tests/ ve weights/ (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çin run, check veya trace komutlarına --weights /yol/weights parametresini geçebilirsiniz. Dosya bütünlüğünü doğrulamak adına ana dizinde shasum -a 256 -c weights/SHA256SUMS komutunu çalıştırmanız önerilir (SHA256SUMS kontrolü, 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 .venv ve source .venv/bin/activate (Windows için: .venv\Scripts\activate) komutlarının ardından pip install numpy scipy numba pillow ile 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 --show bayrağı, 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