Raspberry Pi Pico 2 W Üzerinde Oyun Çalıştıran Küçük Bir Dünya Modeli (Tiny World Model)
Kaynak: Hacker News
İçindekiler 4 başlık
tinyworldformer projesi, bir Raspberry Pi Pico 2 W mikrodenetleyicisi üzerinde aynı anda hem oyun üreten hem de bu oyunu oynayan iki küçük yapay sinir ağının nasıl çalıştırılabileceğini gösteriyor. Birinci ağ oyunu oluşturur: mevcut kareyi (frame) ve eylemi (action) alarak bir sonraki kareyi ve ödülü tahmin eder. İkinci ağ ise oyunu oynar: üretilen kareyi kullanarak bir sonraki eylemi seçer. Üretilen her kare dünya modeli (world model) ağı tarafından örneklenir ve eylemler aktör (actor) ağı tarafından gerçekleştirilir.
Neden (Why)#
Projenin çıkış noktası, farklı katmanları üst üste yığmak yerine tek bir transformer bloğunun aynı ağırlıklarla (weights) birkaç kez uygulandığı döngüsel transformer (looped transformer) mimarisidir. Ağırlıkları yeniden kullanmak bellek açısından oldukça ekonomiktir; bu da döngüsel bir dünya modelinin bir mikrodenetleyici üzerinde çalışacak kadar küçük olup olamayacağı sorusunu doğurmuştur.
Donanım olarak ucuz olması ve kayan nokta birimine (FPU) sahip olması nedeniyle Pico 2 W tercih edilmiştir. Küçük oyunların seçilme nedeni ise gerçek oyun versiyonlarının doğrudan numpy ile yazılıp üretilen her karenin gerçekleriyle karşılaştırılabilmesidir. Sonrasında eklenen akış tabanlı pekiştirmeli öğrenme (streaming RL) ajanı sayesinde kart, kendi üretimi olan "rüya" (dream) ortamının içinde oyun oynamayı sıfırdan öğrenebilmektedir.
Dünya Modeli ve Aktör (The World Model and the Actor)#
Sistemde görev yapan iki temel ağın teknik özellikleri ve yazılım mimarisi açısından karşılaştırması şöyledir:
- Görev (Job): Ağ 1 (Dünya Modeli)
kare + eylem → sonraki kare + ödültahmini yapar. Ağ 2 (Aktör) isekare → eylemdönüşümünü gerçekleştirir. - Mimari (Architecture): Dünya modeli
q int8nicemlenmiş (quantized) döngüsel transformer kullanırken; aktör ağıfloat32formatında iki gizli katmanlı bir MLP (Çok Katmanlı Algılayıcı) yapısındadır. - Boyut (Size): Dünya modeli oyunun karmaşıklığına göre 26k–131k parametre arasında değişirken, aktör ağı 9k–16k parametre boyutundadır.
- Kare Başına Maliyet (Cost per frame): Dünya modeli 2–8M çarpma-toplama (MACs) işlemi gerektirirken, aktör ağı 9k–16k MACs ile çalışır.
- Eğitim (Trained): Dünya modeli kaydedilmiş gerçek oyunlar üzerinde eğitilir; aktör ise
stream-xalgoritmasıyla gerçek oyunda veya doğrudan modelin rüyası içinde eğitilir.
Çip üzerinde (RP2350) hiçbir ağ gerçek oyun motorunu kullanmaz: aktör yalnızca dünya modelinin ürettiği kareleri görür, dünya modeli ise yalnızca aktörden gelen eylemleri alır. Her iki ağ da RP2350 işlemcisinin Core 1 çekirdeğinde çalışırken, Core 0 USB iletişimini ve ekranı yönetir. Önceden eğitilmiş aktör, kart üzerinde sıfırdan öğrenen yeni bir stream-x ajanıyla değiştirilebilir veya herhangi bir tuşa basılarak kontrol doğrudan kullanıcıya devredilebilir.
Oyunlar (The Games)#
Her oyun, src/tinyworldformer/games/ dizininde birkaç yüz satırlık numpy kodu olarak yer alır. Küçük bir token ID ızgarasına (grid) dönüştürülür ve tek bir kare tüm oyun durumunu (state) barındırır. Bu nedenle gizli durumların (hidden state) doğrudan kare içine çizilmesi gerekir: örneğin topun yönü kendi token bilgisinin bir parçasıdır ve Doom-lite oyununda bir mini harita (minimap) bulunur.
- Breakout:
20×16kare boyutundadır. Raket, top, 56 tuğla ve 5 candan oluşur; rastgele olay kaçırılan top sonrası yapılan servistir. 26k parametre ve 4.3M MACs ile 2 döngüde %99.99 tam kare doğruluğuna ulaşır. - Doom-lite:
32×32kare boyutundadır.8×8boyutundaki bir labirentin ışın izleme (raycast) ile oluşturulmuş birinci şahıs görünümüdür; düşman size en kısa yoldan yürür ve siz düşmana ateş edersiniz.
Geliştiriciler İçin Pratik Çıkarımlar#
- Ağırlık Paylaşımı ve Niceleme: Bellek kısıtlı gömülü sistemlerde (
Edge Runtime)int8niceleme ve döngüsel katman mimarisi, model boyutunu kilobayt seviyesine indirerek uç cihazlarda üretken modellerin çalışmasını sağlar. - Durum Temsili (State Representation): Markov özelliğini korumak adına hız, yön veya harita gibi gizli durum verilerini doğrudan gözlem karesinin (token grid) içine kodlamak, modelin geçmiş bağlama olan bağımlılığını azaltı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/SheepSeb/tinyworldformer