8 dakika. 43 saniye. Samsung Galaxy S24 Ultra’nın bir zindan dolusu JSON üretmesi için gereken süre bu — katlar, canavarlar, HP, saldırılar — hepsi cihaz üstü bir LLM’den.
Cebindeki o roketi hayal et, Snapdragon silikonunun parlak levhasını, 150 token roguelike deliliğini bulutlara haber vermeden işlerken. Gecikme yok. Veri şirketlere akmıyor. Saf, yerel AI sihriyle çalışan Unity tabanlı RPG. Konuşulan Phi-4-mini, Microsoft’un 3.8B canavarı, Android oyun döngüsüne sıkıştırılmış.
Ve en bomba kısım — gerçekten çalıştı. Geçerli JSON. Korece canavar isimleri dahil (prompt hatası, kime ne?).
Neden Bir Roguelike’e Dil Modeli Sıkıştırıyoruz?
Bakın, roguelike’lar prosedürel kaosla beslenir — sonsuz tekrarlar, acımasız rastlantılar. Ama ya o kaos akıllanırsa? LLM fısıldasa düşman yerleşimlerini, boss istatistiklerini, hatta lezzetli metinleri, hepsini senin koşuna özel. Cihaz üstü olunca anında, gizli, senin. API anahtarları yalvarmıyor.
Bu geliştirici laf salatası yapmadı. Phi-4-mini’yi seçti çünkü Microsoft’un ONNX paketi tak-çalıştır — 4.9GB kuantize edilmiş, 12GB RAM’e cuk oturuyor. Küçük modeller? JSON formatında çöküyor, dizi yerine çöp kusuyor.
“[LLM] 181.4s’de üretildi (150 token max) JSON şöyle: [ {“floor”:1,”mob”:”게으른 빵집 아들”,”hp”:50,”atk”:10}, {“floor”:4,”mob”:”elite”,”hp”:100,”atk”:20}, {“floor”:5,”mob”:”boss”,”hp”:200,”atk”:40} ]”
Pat. Yapılandırılmış çıktı. Canavar isimleri oyuncuyu yankılasa da (sonra düzeltirsin, kanka).
ONNX Runtime? Platformlar arası nimet. Unity C# bağları asus4’ün paketiyle. Hızlandırıcıları değiştir — Snapdragon NPU için QNN, NNAPI, CoreML — tek satır kod. Unity mi? 2D roguelike cenneti, Android/iOS derlemeleri, her yerde C#. Python utancı yok.
Min SDK 31 kilidi vuruyor — Android 12 satıcı kütüphanelerini açıyor, QNN’nin libcdsprpc.so’su için. Daha aşağı in? NPU’ya elveda.
Amiral Gemisi Telefonun 3.8B Modeli Oyun İçinde Çalıştırabilir mi?
Kısa cevap: Zor bela. S24 Ultra’nın Snapdragon 8 Gen 3’ü Hexagon NPU’su ve 12GB RAM’i övünüyor. Geliştirici 4.9GB modeli adb ile itti (94 saniye, tatlı). APK ince kalıyor.
Ama rakamlar? Mac Editor (CPU): 246s, 0.45 tok/s. S24 CPU-only: 523s, 0.21 tok/s. QNN HTP? 490s, 0.31 tok/s. Telefon Mac’ten 2.1x yavaş. NPU? Eh, pek fark yok.
Loglar fasulyeyi döktü: “Failed in loading stub: dlopen failed: library ‘libcdsprpc.so’ not found.” QNN kaydediliyor ama arka uç hayalet. NPU vaadi, CPU teslimatı.
Benim sıcak yorumum — doğaçlama, orijinal: Bu 2007 iPhone’u andırıyor. O zaman GPU’lar oyuncaktı; Jobs’un metal API’si mobil oyun patlamasını tetikledi (Angry Birds, Infinity Blade). NPUs şimdi orada. Hantal, yarım pişmiş ama geliştiricilere altı ay ver? Cihaz üstü AI oyunları numareden türe dönüşür. No Man’s Sky prosedürel galaksilerini hayal et, ama cihaz başına, koşu başına, LLM yakıtlı. Bulut? Bağımsızlar için tarih olur.
Kanlı Derleme Kırılmaları — Ve Kurtaran Düzeltmeler
Geliştirici hayatı: %90 daemonlarla güreş.
Tokenizer? Phi için C# tiktoken yok. tokenizer.json’dan yazdı — 200k kelime dağarcığı, birleşimler dizi (string değil, hata), GPT-2 byte numaraları, BPE önbelleği.
KV cache çözümü: 32 katman, 8 kafa, 128 kafa boyutu. Prompt ön doldur, token çöz. Tensor’lar isyan etti — DenseTensor ctor argümanları ters.
model.onnx yolu? ../../.. iken ../..’e döndü.
CompressReleaseAssets? 5GB StreamingAssets Java’nın 2.1GB dizisini ezdi. Gradle cache’i sildi (15GB!), modeli Assets dışına sürdü. adb push app dosyalarına.
Fontlar? TMP’nin LiberationSans Korece atlıyor. AppleSDGothicNeo.ttc’yi çevirdi — Özel Aralık: 32-126,44032-55203,12593-12686 (ondalık Hangul cehennemi).
Newtonsoft.Json cast? JValue’dan JArray’ye çakıldı — birleşimler dizi, string değil.
Hepsi oturdu. Zindan JSON’u akıyor.
Cihaz Üstü AI Neden Oyun Geliştiriciler İçin Önemli?
Burada enerji patlaması. Platform değişimindeyiz — AI yeni OS katmanı. Bugün Unity eklentileri, yarın her motor NPU kancalarıyla gelecek. Telefonlar 40+ TOPS NPU taşıyor; masaüstleri geride.
Şirket la