İçeriğe geç
Vaka Çalışması
Cihaz İçi Yapay Zeka
Çevrim Dışı Öncelikli
Vibe-Coding

RealDex: Dağıtık Vibe-Coding ile 344MB'lık Mobil ML Modellerini Cihaz İçi Çalışmaya Sıkıştırmak

Mart 2026
15 dk
Alp Yalay
XLinkedIn
Rol
Yaratıcı & Ürün Mimarı
Kullanılan Teknolojiler
React Native CLI, C++ JSI, TFLite, SQLite, Python, Raspberry Pi 5
Platform
iOS & Android (%100 Çevrim Dışı Öncelikli)
AI Model Ölçeği
344MB BioCLIP + YOLO + Özel JSI Vektör Yükleyiciler

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:

Prototipleme
Colab'den Raspberry Pi 5'e
Embedding hesaplamaları ana bilgisayarım için çok ağırdı. Görsel vektör betiklerini Google Colab'de prototipledim; ardından veri toplama sürecini evimde 7/24 çalışan bir Raspberry Pi 5'e devredip SSH üzerinden uzaktan yönettim.
Hata
Kedimin Böcek Olarak Sınıflandırılması
Resmi maskotumuz olan kedim Mavi ile yaptığım ilk canlı testte uygulama onu kendinden emin bir şekilde bir böcek olarak tanımladı. Yanlışlıkla metin embedding'lerini görsel embedding'lerin üzerine eşleştirip vektör motorunu karıştırmışım.
Sabır
72 Saatlik Vektör Yenilemesi
Vektör karışıklığını düzeltmek için referans kütüphanesini yeniden oluşturmak zorunda kaldım. Betik, iNaturalist API'ından 10.000 popüler tür için tür başına 25 görsel çekti. Hız sınırlarına takılmamak için Pi 5 üzerinde 3 gün boyunca aralıksız çalıştı.

3. Uygulama ve Mimari Süreçleri

Sistem uygulamamı üç farklı optimizasyon aşamasında kurguladım:

01. Model Optimizasyonu ve Kuantizasyon

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.

02. Coğrafi Keşif Grid Sistemi

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.

03. Dağıtık Veri Kazıma Hattı

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.

344MB
Model Ölçeği
10.000
Yerel Türler

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.