Düşünce Liderleri

Gizli Tehlikelerden Kaçınmak: iOS’te ML’de Görünmeyen Pusuları Navigasyon

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin

ML’ye ihtiyacınız var mı?

Makine öğrenimi, desenleri tespit etmekte mükemmeldir. Temel görevler gibi sınıflandırma, regresyon ve anormallik tespiti gibi klasik görevlerde, genellikle süperinsan performansıyla bir ML modeli oluşturmak için temiz bir veri seti toplamak yeterli olacaktır.

İşinizle ilgili bazı sorunları ML ile çözmeye hazır olduğunuzda, ML modellerinizin nerede çalışacağını düşünmelisiniz. Bazı durumlarda, sunucu altyapısı çalıştırmak mantıklı olabilir. Bu, ML modellerinizi özel tutmanın avantajını sağlar, böylece rakiplerinizin takip etmesi daha zor olur. Ayrıca, sunucular daha çeşitli modelleri çalıştırabilir. Örneğin, GPT modelleri (ChatGPT ile ünlü), modern GPU’lere ihtiyaç duyar, bu nedenle tüketici cihazları soru dışında bırakır. Diğer taraftan, altyapınızı bakımını yapmak oldukça maliyetlidir ve bir tüketici cihazı modelinizi çalıştırabilirse, neden daha fazla ödeme yapasınız? Ayrıca, kullanıcı verilerini uzaktan sunucuya gönderme konusunda bazı gizlilik endişeleri olabilir.

Ancak, müşterilerinizin iOS cihazlarını kullanarak bir ML modeli çalıştırmak mantıklı olduğunu varsayalım. Ne olabilir?

Platform sınırlamaları

Bellek sınırları

iOS cihazları, masaüstü karşıtılarına göre çok daha az kullanılabilir video belleğine sahiptir. Örneğin, recent Nvidia RTX 4080 Ti, 20 GB kullanılabilir belleğe sahiptir. iPhone’lar ise, “birleşik bellek” olarak adlandırdıkları RAM ile paylaşılan video belleğine sahiptir. Referans olarak, iPhone 14 Pro, 6 GB RAM’e sahiptir. Ayrıca, eğer daha fazla bellek tahsis ederseniz, iOS uygulamasını öldürme olasılığı daha yüksektir, böylece işletim sistemi tepkisel kalır. Bu, yaklaşık 2-3 GB kullanılabilir belleğe sahip olabileceğiniz anlamına gelir.

Araştırmacılar genellikle modellerini bellek kullanımı üzerinde optimize eder. Ancak, hızı ve bellek izini optimize etmek için de araştırmalar mevcuttur, bu nedenle daha az talepkar modelleri arayabilir veya kendiniz bir model eğitebilirsiniz.

Ağ katmanları (işlemler) desteği

Çoğu ML ve sinir ağı, ünlü derin öğrenme çerçevelerinden gelir ve daha sonra CoreML modellerine Core ML Tools ile dönüştürülür. CoreML, Apple (AAPL ) tarafından yazılmış bir çıkarım motorudur ve çeşitli modelleri Apple cihazlarında çalıştırabilir. Katmanlar donanım için iyi optimize edilmiştir ve desteklenen katmanların listesi oldukça uzundur, bu nedenle bu mükemmel bir başlangıç noktasıdır. Ancak, Tensorflow Lite gibi diğer seçenekler de mevcuttur.

CoreML ile mümkün olanın en iyi şekilde görülmesi, zaten dönüştürülmüş modelleri Netron gibi görüntüleyiciler ile incelemektir. Apple, bazı resmi olarak desteklenen modelleri listeler, ancak topluluk tarafından yönetilen model zoosu da mevcuttur. Desteklenen işlemlerin tam listesi不断 değişmektedir, bu nedenle Core ML Tools kaynak kodunu incelemek faydalı olabilir. Örneğin, bir PyTorch modelini dönüştürmek istiyorsanız, gerekli katmanı burada bulabilirsiniz.

Ayrıca, belirli yeni mimariler, bazı katmanlar için el ile yazılmış CUDA kodu içerebilir. Bu durumlarda, CoreML’nin önceden tanımlanmış bir katman sağlaması beklenmemelidir. Bununla birlikte, kendi uygulamanızı sağlayabilirsiniz, eğer GPU kodu yazma konusunda uzman bir mühendisiniz varsa.

Genel olarak, buradaki en iyi tavsiye, modelinizi CoreML’ye dönüştürmeyi erken denemektir, hatta eğitimden önce. Eğer modeliniz doğru şekilde dönüştürülmediyse, DL çerçevesindeki veya Core ML Tools dönüştürücü kaynak kodundaki sinir ağı tanımını değiştirmek mümkündür, böylece CoreML çıkarım motoru için geçerli bir model oluşturabilirsiniz.

Doğrulama

Çıkarım motoru hataları

Her katman kombinasyonunu test etmek mümkün değildir, bu nedenle çıkarım motoru her zaman bazı hatalara sahip olacaktır. Örneğin, CoreML’de genişletilmiş konvolüsyonların çok fazla bellek kullanması olasıdır, muhtemelen büyük bir çekirdek ile yazılmış bir uygulamayı gösterir. Başka bir ortak hata, bazı model mimarileri için yanlış model çıkışıdır.

Bu durumda, işlemlerin sırası önemlidir. Aktivasyonun konvolüsyonla veya artıkların ilk gelmesi arasındaki sırayla ilgili yanlış sonuçlar alınabilir. Her şeyin doğru çalıştığından emin olmak için tek gerçek yol, modelinizi çalıştırmak istediğiniz cihazda çalıştırmak ve sonucu masaüstü sürümüyle karşılaştırmaktır. Bu test için, en az yarı eğitilmiş bir modelinizin olması faydalı olacaktır, aksi takdirde numeric hata, kötü rastgele başlatılmış modeller için birikebilir. Son eğitimli model çalışacak olsa da, cihaz ve masaüstü arasındaki sonuçlar önemli ölçüde farklı olabilir.

Hassasiyet kaybı

iPhone, çıkarım için yaygın olarak yarı hassasiyetli doğruluğu kullanır. Bazı modeller, daha az bitin floating point temsilinde hiçbir önemli doğruluk azalması yaşamazken, diğerleri bundan etkilenebilir. Modelinizi masaüstünde yarı hassasiyetle değerlendirerek ve bir test ölçütü hesaplayarak yaklaşık hassasiyet kaybını tahmin edebilirsiniz. Daha iyi bir yöntem, modelin amaçlandığı kadar doğru olup olmadığını öğrenmek için onu gerçek bir cihazda çalıştırmaktır.

Profilleme

Farklı iPhone modelleri çeşitli donanım yeteneklerine sahiptir. Sonuncular, genel performansı önemli ölçüde artıran geliştirilmiş Nöral Motor işleme birimlerine sahiptir. Bunlar, belirli işlemler için optimize edilmiştir ve CoreML, CPU, GPU ve Nöral Motor arasında işleri akıllıca dağıtabilir. Apple GPU’ları da zamanla gelişmiştir, bu nedenle farklı iPhone modelleri arasında performans dalgalanmaları görmek normaldir. Modelinizi en az desteklenen cihazlarda test etmek, maksimum uyumluluk ve eski cihazlar için kabul edilebilir performans sağlamak için iyi bir fikirdir.

Ayrıca, CoreML’nin bazı ara katmanları ve hesaplamaları ortadan kaldırarak performansı önemli ölçüde artırabileceğini belirtmek önemlidir. Bir diğer faktör, bazen masaüstünde daha kötü performans gösteren bir modelin, aslında iOS’te daha hızlı çıkarım yapabileceğidir. Bu, farklı mimarilerle deney yapmanın değerli olabileceği anlamına gelir.

Daha fazla optimizasyon için, Xcode’un CoreML modelleri için özel bir şablonu olan güzel bir Instruments aracı vardır ve model çıkarımının neyin yavaşlattığını daha kapsamlı bir şekilde gösterebilir.

SONUÇ

Hiç kimse, iOS için ML modelleri geliştirirken ortaya çıkabilecek tüm olası tuzakları önceden göremez. Ancak, bazı hataları önlemek mümkündür, eğer neye dikkat etmeniz gerektiğini bilirseniz. ML modellerinizi erken dönüştürmeye, doğrulamaya ve profillemeğe başlamak, modelinizin doğru çalışacağından ve iş gereksinimlerinizi karşılayacağından emin olmak için önemlidir ve yukarıda belirtilen ipuçlarını takip etmek, başarıyı mümkün olan en kısa sürede garantilemek için önemlidir.

Konstantin Semianov, Neatsy.AI'nin CTO'sudur, dünyanın ilk ortopedik ve podiyatriden kaynaklanan sağlık sorunlarını yalnızca bir iPhone kamerası kullanarak AI ve AR'ı kullanarak tespit eden uygulamasıdır. Neatsy.AI'den önce, Lensa uygulamasının yaratıcıları olan Prisma Labs'de Ar-Ge mühendisi olarak çalıştı.