Kazanimlar:
- Gizlilik, çevrimdışı ihtiyacı, model boyutu ve pil ölçütlerine göre cihaz üzeri mi bulut mu kararını verip doğru aracı (ML Kit, Core ML, TensorFlow Lite) seçebilme
- Model entegrasyonunda giriş ön işlemesini (boyut ve normalizasyon) modelin belgesinden doğrulayarak sessiz hataları önleyebilme
- Güven skorunu değerlendirip düşük güvenli tahminleri kesin gerçek gibi sunmadan, sonucu kullanıcı onayıyla ve gerçek cihazda ölçerek kullanabilme
Bugüne kadar YZ'yi geliştirme sürecini hızlandıran bir yardımcı olarak kullandık. Şimdi YZ'nin ikinci rolüne geçiyoruz: uygulamanın içine gömülen yetenek. Modern telefonlar, görüntü tanıma, metin çevirme, konuşma yazıya dökme gibi YZ modellerini doğrudan cihaz üzerinde (on-device — sunucuya gitmeden telefonun kendi işlemcisinde) çalıştıracak güce sahiptir. Cihaz üzerinde YZ; hız, gizlilik ve çevrimdışı çalışma açısından bulut çözümlerine göre büyük avantaj sunar. Bu ünitede iOS'un Core ML, platformlar arası TensorFlow Lite (yeni adıyla LiteRT) ve Google'ın hazır çözümü ML Kit ile YZ'yi uygulamaya gömmeyi, YZ'yi de bu entegrasyonda yardımcı olarak kullanmayı öğreneceğiz.
Cihaz üzeri mi, bulut mu?
İlk ve en önemli mimari karar budur. Cihaz üzerinde YZ, veriyi telefondan çıkarmaz — bu, gizlilik için muazzam bir kazançtır. Ayrıca ağ gecikmesi olmadığı için anlıktır ve çevrimdışı çalışır. Buna karşılık cihazın işlem gücü ve bellek sınırına takılır; çok büyük modeller (örneğin devasa dil modelleri) telefona sığmaz veya pili tüketir. Bulut YZ ise sınırsız güç sunar ama veriyi sunucuya gönderir, ağ ister ve gecikme yaratır.
Ölçüt
Cihaz üzeri (on-device)
Bulut (cloud API)
Gizlilik
Veri cihazda kalır, güçlü
Veri sunucuya gider, dikkat gerek
Hız
Anlık, ağ yok
Ağ gecikmesine bağlı
Çevrimdışı
Çalışır
Çalışmaz
Model boyutu
Sınırlı (telefon kaynağı)
Sınırsız
Pil/ısı
Yoğun kullanımda etkiler
Sunucu yükte, cihaz rahat
Maliyet
Ücretsiz (cihaz kaynağı)
Kullanım başı ücret
Karar kuralı: Kişisel/hassas veri işleniyorsa, çevrimdışı çalışması gerekiyorsa veya anlık yanıt şartsa cihaz üzeri tercih edin. Çok büyük model gerekiyorsa buluta yönelin. Bu ünite cihaz üzeri odaklıdır; bulut YZ'yi bir sonraki ünitede işleyeceğiz.
İpucu: Hassas veri (sağlık, biyometrik, konum) işleyen bir özellik için varsayılan tercihiniz her zaman cihaz üzeri olsun. "Veri cihazdan çıkmıyor" cümlesi, hem gizlilik uyumu hem de kullanıcı güveni açısından paha biçilmezdir ve mağaza gizlilik etiketinde büyük fark yaratır.
Üç yol: ML Kit, Core ML, TensorFlow Lite
ML Kit (Google) en kolay başlangıçtır: metin tanıma (OCR — görüntüdeki yazıyı okuma), yüz algılama, barkod okuma, çeviri gibi hazır yetenekleri birkaç satırla verir. Kendi modelinizi eğitmeniz gerekmez. Core ML (Apple), iOS'ta kendi modelinizi veya hazır bir modeli en verimli biçimde çalıştırmanın yoludur; Apple'ın Neural Engine (yapay sinir ağı işlemcisi) donanımını kullanır. TensorFlow Lite/LiteRT, hem Android hem iOS'ta kendi eğitilmiş modelinizi çalıştırmanızı sağlayan platformlar arası çözümdür.
Genel entegrasyon akışı YZ ile şöyle ilerler:
- Yetenek tanımı. "Fotoğraftaki metni okumak istiyorum" gibi net bir hedef.
- Yol seçimi. Hazır yetenek varsa ML Kit; özel model varsa Core ML / TF Lite.
- Model formatı. .mlmodel (Core ML), .tflite (TF Lite). YZ dönüştürme adımlarını anlatır.
- Entegrasyon kodu. Modeli yükleme, girişi hazırlama (preprocessing), çıktıyı yorumlama.
- Performans testi. Gerçek cihazda hız, bellek, pil ölçümü.
Dikkat: YZ'nin cihaz üzeri model entegrasyonunda en sık hatası, giriş ön işlemesidir (preprocessing — görüntüyü modelin beklediği boyut ve renk formatına çevirme). Model 224x224 piksel beklerken 300x300 verirseniz sonuç anlamsız çıkar ama hata mesajı almazsınız. Ön işleme değerlerini modelin belgesinden doğrulayın.
Modelin sınırlarını bilmek
Cihaz üzeri bir model, eğitildiği veriye göre karar verir. Yalnızca gündüz çekilmiş fotoğraflarla eğitilmiş bir nesne tanıma modeli, gece görüntülerinde yanılır. Modelin bir güven skoru (confidence — modelin cevabından ne kadar emin olduğu, genelde 0-1 arası) vardır; düşük güvenli sonuçları kullanıcıya kesin doğru gibi sunmak tehlikelidir. Örneğin bir cilt lekesi tarama uygulaması "kesin iyi huylu" dememeli, "modelin tahmini şu, lütfen hekime danışın" demelidir. Model sonucu bir öneridir, bir teşhis değildir.
Üç mini vaka
Vaka 1 — OCR ile hızlanma. Bir gider takip uygulaması, fişleri elle girme yükünü ML Kit metin tanımayla kaldırdı. Kullanıcı fişi fotoğraflıyor, tutar ve tarih otomatik dolduruluyordu. Elle giriş süresi fiş başına 40 saniyeden 8 saniyeye düştü. Ekip, YZ'nin okuduğu tutarı her zaman kullanıcıya onaylattı; çünkü kırışık fişlerde %6 hata payı vardı. Otomasyon + insan onayı doğru dengeydi.
Vaka 2 — Ön işleme hatası. Bir ekip TensorFlow Lite ile bitki tanıma modeli entegre etti; test cihazında sonuçlar rastgeleydi. Sorun, YZ'nin ürettiği kodun görüntüyü modelin beklediği [0,1] aralığına normalize etmemesiydi (piksel değerleri 0-255 kalmıştı). Normalizasyon eklenince doğruluk %30'dan %89'a çıktı. Ders: ön işleme sessiz ama ölümcül.
Vaka 3 — Gizlilik kazancı. Bir sağlık uygulaması, nabız verisinden anomali tespitini cihaz üzeri Core ML modeliyle yaptı. Veri hiç sunucuya gitmedi. Bu tercih, uygulamanın App Store gizlilik etiketinde "veri toplamıyor" ibaresini almasını sağladı ve indirme oranını rakiplere göre yükseltti. Cihaz üzeri seçim, hem etik hem ticari kazançtı.
Zayıf prompt / Güçlü prompt
Zayıf prompt:"Uygulamama görüntü tanıma ekle."
Güçlü prompt:"Android/Kotlin uygulamama fişten tutar ve tarih okuma özelliği ekle.- Google ML Kit Text Recognition kullan (cihaz üzeri, çevrimdışı)- Kamera veya galeriden görüntü al- Tanınan metinden tutar ve tarihi regex ile ayıkla- Sonucu kullanıcıya DÜZENLENEBİLİR alanda onaya sun, otomatik kaydetme- Kamera izni akışını ve reddi ele alÖn işleme ve hata durumlarını da yaz, adımları açıkla."
Kopyalanabilir şablonlar
Yol seçimi şablonu:"Şu özelliği yapmak istiyorum: [özellik].Cihaz üzeri mi bulut mu olmalı? Şu ölçütlere göre karşılaştır:gizlilik, çevrimdışı ihtiyacı, model boyutu, pil, maliyet.Uygun aracı öner (ML Kit / Core ML / TF Lite) ve gerekçelendir."
Entegrasyon şablonu:"[Platform] için [model/yetenek] entegrasyonunu yaz:1) Model yükleme2) Giriş ön işleme (beklenen boyut ve normalizasyon)3) Çıkarım (inference) çağrısı4) Çıktı yorumlama ve güven skoru kontrolü5) Düşük güvenli sonuçta kullanıcıya uyarıÖn işleme değerlerini modelin belgesinden doğrulamamı hatırlat."
Güven skoru şablonu:"Bu çıkarım kodunda güven skorunu ele al:- Eşik altında (örn. 0.6) sonucu 'kesin' sunma- Kullanıcıya 'bu bir tahmindir' notu göster- Kritik alansa (sağlık, güvenlik) uzmana yönlendir[kod]"
Performans doğrulama şablonu:"Bu cihaz üzeri model entegrasyonu için gerçek cihazda ölçmemgereken metrikleri listele: çıkarım süresi, bellek artışı,pil etkisi, ısınma. Her biri için ölçüm yöntemini söyle."
Sık yapılan hatalar
- Ön işlemeyi atlamak veya yanlış yapmak. Yanlış boyut/normalizasyon sessizce yanlış sonuç üretir.
- Güven skorunu yok saymak. Düşük güvenli tahmini kesin doğru gibi sunmak kullanıcıyı yanıltır.
- Modeli emülatörde test etmek. Gerçek cihaz hızı ve pili çok farklıdır; her zaman gerçek donanımda ölçün.
- Hassas veriyi gereksiz yere buluta göndermek. Cihaz üzeri mümkünken bulut seçmek gizlilik riskidir.
- Model boyutunu göz ardı etmek. Büyük model uygulama indirme boyutunu şişirir ve düşük donanımda çöker.
- Modelin eğitim sınırını unutmak. Model görmediği koşulda (gece, farklı dil) yanılır; bunu kullanıcıya belli edin.
Özetle
Cihaz üzeri YZ, veriyi telefonda tutarak gizlilik, hız ve çevrimdışı çalışma sağlar; sınırı cihazın gücü ve model boyutudur. Hazır yetenekler için ML Kit, özel modeller için Core ML (iOS) ve TensorFlow Lite (platformlar arası) kullanılır. Entegrasyonun sessiz katili yanlış ön işlemedir; giriş boyutu ve normalizasyonu modelin belgesinden doğrulanır. Her sonuç bir güven skoruyla gelir ve düşük güvenli tahminler kesin gerçek gibi sunulmaz. Kararlar gerçek cihazda ölçülür, emülatörde değil.
Uygulama görevi
Bir "fotoğraftan metin okuma" veya "barkod okuma" özelliği için "Yol seçimi şablonu" ile YZ'ye cihaz üzeri mi bulut mu olması gerektiğini sorun, sonra "Entegrasyon şablonu" ile ML Kit tabanlı bir taslak isteyin. Kodda ön işleme adımının ve kullanıcı onay/düzenleme akışının bulunduğunu doğrulayın. Güven skoru eşiği koyup düşük güvenli sonuçta ne yapacağınızı yazın.
Kontrol listesi
- [ ] Cihaz üzeri/bulut kararını ölçütlere göre verdim
- [ ] Doğru aracı (ML Kit / Core ML / TF Lite) seçtim
- [ ] Ön işleme boyut ve normalizasyonunu modelin belgesinden doğruladım
- [ ] Güven skorunu kontrol edip düşük güvenli sonuçları uyardım
- [ ] Sonucu kullanıcıya onay/düzenleme ile sundum, körü körüne kaydetmedim
- [ ] Performansı gerçek cihazda ölçtüm, emülatörde değil