RealDex: Dağıtık Vibe-Coding ile 344MB'lık Mobil ML Modellerini Cihaz İçi Çalışmaya Sıkıştırmak
Derleme hatalarını, paket çakışmalarını ve kedimi böcek olarak sınıflandıran bir vektör uyumsuzluğunu aşarak; hibrit bir Colab/Pi 5 veri hattıyla sıfır gecikmeli mobil yaban hayatı günlüğü geliştirme hikâyem.
1. Vibe-Coder'ın Misyonu
Çoğu yaban hayatı uygulaması, fotoğrafları buluttaki bilgisayarlı görü API'larıyla işlemek için aktif bir 4G bağlantısı gerektirir. Ancak yaban hayatı gözlemleri genellikle internetin çekmediği derin milli parklarda ve dağlarda gerçekleşir. Kodlama geçmişi olmayan bir geliştirici ('vibe-coder') olarak, tamamen çevrim dışı çalışan, premium orman temalı dijital bir doğa günlüğü olan RealDex'i inşa etmek istedim. Hedefim basitti ama devasaydı: Bilimsel düzeydeki 344MB'lık BioCLIP yapay zeka transformatör modelini doğrudan mobil donanımda çalıştırmak.
Bunu başarmak; karmaşık makine öğrenimi kütüphanelerini, düşük seviyeli ikili dizi kod çözücülerini (C++ JSI) ve yerel SQLite veri tabanını bir araya getirmeyi gerektiriyordu. Bu yolculuk; Google Colab'de yüksek seviyeli prototipler hazırlamaktan, Raspberry Pi 5'e SSH ile bağlanıp günlerce veri kazımaya ve paketlerin sürekli çakıştığı sancılı bir React Native CLI 'eject' sürecine kadar uzanan bir sabır sınavıydı. Proje nihayet hatasız derlenip ilk türü tanımladığında hissettiğim şey sadece bir başarı değil, çok derin bir rahatlamaydı.
RealDex, Pokémon tarzı koleksiyon döngülerini gerçek bilimsel saha günlüğüyle harmanlama arzusundan doğdu. Kullanıcıların dünya genelindeki 2.16 milyon tür arasında kaybolup hedefsiz hissetmelerini önlemek amacıyla, biyolojik sınıflandırma ağacını 1.000'den fazla belirgin hayvan ailesine (family_index.json aracılığıyla) indirgedim. Arayüzü, yüksek kaliteli orman yeşili bir defter estetiğiyle tasarladım. En büyük mühendislik başarısı ise, 344MB'lık devasa BioCLIP modelini donanım hızlandırmalı bir mobil çalışma zamanına sıkıştırmak ve bunu, koordinatları yerel SQLite tablolarına kaydeden 0.05 derecelik (5.5km) özel bir coğrafi grid (bölge keşif) sistemiyle birleştirmekti.
2. Yapay Zeka Mühendisliği Engelleri
Derin yazılım deneyimi olmadan karmaşık bir mobil yapay zeka uygulaması geliştirmek, yaratıcı sistem mimarileri tasarlamayı gerektiren üç büyük teknik darboğazı beraberinde getirdi:
GPU ve JSI Hızlandırmaları
Sınıflandırma sırasında arayüzün donmasını engellemek için standart JavaScript köprüsünü devre dışı bıraktım. 10MB'lık ikili tür embedding dosyasını mobil RAM'de doğrudan bir Float32Array dizisine dönüştürmek için quick-base64 kullanan JSI tabanlı bir C++ dizi kod çözücü entegre ettim. Ayrıca yerel MMKV deposunu kullanarak bir çökme koruması geliştirdik; eğer 344MB'lık TFLite modelinin yüklenmesi bir bellek aşımı (OOM) çökmesine sebep olursa, uygulama yeniden başladığında bunu algılıyor ve sonsuz yükleme döngülerini engelliyor.
Coğrafi Grid Bölge Haritalama
Kullanıcılara gerçek bir keşif hissi vermek için 0.05 derecelik (~5.5km) karelerden oluşan yerel bir grid sistemi kurduk. Bir kaşif yeni bir kareye girdiğinde, SQLite'taki territory_visits tablosuna yeni bir kayıt yazılıyor. Uygulama, yerel bir coğrafi veri katmanını (territory_snapshots) sorgulayarak o koordinata özgü kuş, memeli ve böceklerin listesini çıkarıyor; böylece her yürüyüş gerçek bir harita açma oyununa dönüşüyor.
Hibrit Veri Modeli
Çevrim dışı doğruluğun korunması, güçlü referans vektörlerine bağlıdır. Mobil cihazda %100 çevrim dışı ve ücretsiz çalışan 10.000 türlük bir yerel vektör kütüphanesi hazırladık. Bu 10.000 türün dışındaki daha nadir hayvanlar için ise, yerel uygulama boyutunu şişirmeden uzun kuyruklu türleri tanımlayabilen ücretli bir bulut AI (Gemini 2.0 Flash) yedek katmanı inşa ettik.
3. Derinlemesine Bakış: Prototipleme, Pi 5 ve Maskot Hataları
Çevrim dışı sınıflandırıcıyı çalışır hale getirmek, bazı komik başarısızlıkları da içeren son derece yaratıcı bir hibrit altyapı gerektirdi:
3. Uygulama ve Mimari Süreçleri
Sistem uygulamamı üç farklı optimizasyon aşamasında kurguladım:
344MB'lık BioCLIP modelini CoreML ve TFLite dönüştürücülerle FP16 formatlarına derleyerek bellek kullanımını mobil nöral işlemciler için %50 azalttık ve çıkarım süresini 120ms'nin altına indirdik.
Fiziksel dünyayı yerel SQLite veri tabanı içinde 0.05 derecelik (~5.5km) karelere bölerek bölgeye özel hedefler ve harita doldurma ilerlemesi sağladık.
Embedding oluşturucuları Google Colab GPU'larında prototipleyip 250.000 resmi 3 gün boyunca SSH üzerinden bir Raspberry Pi 5 üzerinde kazıdık.
4. Vibe-Coding'in Gerçek Yüzü
Teknik Başarılar
Cihaz İçi Çıkarım Süresi: ~120ms. Depolama Azalması: 344MB ham modelden optimize edilmiş yerel paket boyutlarına. Erişim: Yalın React Native CLI derleme. Sıfır gecikmeli deneyim sayesinde kullanıcı memnuniyeti son derece yüksektir.
Geliştiricinin Samimi Hissiyatı
"İnsanlar genellikle büyük bir aydınlanma anı bekler. Ancak dürüst olmak gerekirse, JSI yükleyicileri, SQLite şeması ve Pi 5 embedding'leri nihayet sorunsuz bir şekilde birleşip Mavi'yi doğru şekilde 'Felis catus' olarak tanımladığında hissettiğim tek şey rahatlamaydı. Sürekli hata ayıklamak son derece yorucu; istikrarlı ve çalışan bir uygulamayı elinizde tutmak ise en büyük ödül."
Temel Çıkarımlar
Sistem Mimarisi, Kod Yazımından Daha Önemlidir
Gelişmiş ML uygulamaları inşa etmek için bilgisayar mühendisliği diplomasına ihtiyacınız yok. Yapay zeka asistanlarından (Claude Code) yararlanarak ve bir Ürün Mimarı gibi davranarak (Colab GPU'ları, SSH sunucuları ve mobil altyapıyı koordine ederek) birçok kıdemli mühendisin bile çekindiği yüksek performanslı bir sistemi ayağa kaldırdım. Mantık, mimari ve sabır asıl yazılımcı süper güçleridir.
Derleme Yorgunluğu Gerçektir
Donanım ivmeli TFLite kütüphanesini çalıştırabilmek için Expo'dan yalın React Native CLI'a geçiş yapmak; bağımlılık cehennemi ve paket çakışmalarıyla dolu vahşi bir süreçti. Yapay zeka kod yazmayı hızlandırır, ancak build hatalarını çözmek yüksek bir kondisyon ve sabır gerektirir. Bitirmenin sırrı, bu yorgunluğu yönetebilmekten geçer.
Başarıların Özeti
RealDex, yüksek performanslı ve çevrim dışı öncelikli Makine Öğrenimi uygulamalarının, kaynaklarını akıllıca kullanan 'vibe-coder'lar tarafından doğrudan mobil donanımlara taşınabileceğinin canlı bir kanıtıdır. Güçlü bir yerel SQLite mimarisini, 344MB'lık cihaz içi sınıflandırıcıları, düşük güç tüketen bir Pi 5 veri sunucusunu ve coğrafi keşif sistemini birleştirerek dünyanın her yerinde internet olmadan çalışan premium bir dijital doğa arkadaşı inşa ettik.