En iyi performans uygulamaları

Mobil ve gömülü aygıtlar sınırlı hesaplama kaynaklarına sahiptir, bu nedenle uygulama kaynağınızı verimli tutmanız önemlidir. TensorFlow Lite model performansınızı iyileştirmek için kullanabileceğiniz en iyi uygulamaların ve stratejilerin bir listesini derledik.

Görev için en iyi modeli seçin

Göreve bağlı olarak, model karmaşıklığı ve boyutu arasında bir değiş tokuş yapmanız gerekecektir. Göreviniz yüksek doğruluk gerektiriyorsa, büyük ve karmaşık bir modele ihtiyacınız olabilir. Daha az hassasiyet gerektiren görevler için, daha küçük bir model kullanmak daha iyidir çünkü bunlar yalnızca daha az disk alanı ve bellek kullanmakla kalmaz, aynı zamanda genellikle daha hızlıdır ve enerji açısından daha verimlidir. Örneğin, aşağıdaki grafikler bazı yaygın görüntü sınıflandırma modelleri için doğruluk ve gecikme değişimlerini göstermektedir.

Graph of model size vs accuracy

Graph of accuracy vs latency

Mobil cihazlar için optimize edilmiş modellere bir örnek, mobil görsel denetim uygulamaları için optimize edilmiş MobileNet'lerdir . Barındırılan modeller , özellikle mobil ve gömülü cihazlar için optimize edilmiş diğer birkaç modeli listeler.

Transfer öğrenmeyi kullanarak listelenen modelleri kendi veri kümenizde yeniden eğitebilirsiniz. Görüntü sınıflandırması ve nesne algılama için aktarım öğrenimi eğitimimize göz atın.

Modelinizin profilini çıkarın

Göreviniz için doğru olan bir aday modeli seçtikten sonra, modelinizin profilini çıkarmak ve karşılaştırmak iyi bir uygulamadır. TensorFlow Lite kıyaslama aracı , operatör başına profil oluşturma istatistiklerini gösteren yerleşik bir profil oluşturucuya sahiptir. Bu, performans darboğazlarını ve hesaplama süresine hangi operatörlerin hakim olduğunu anlamaya yardımcı olabilir.

Standart Android sistem izlemeyi kullanarak Android uygulamanızda modelin profilini çıkarmak ve GUI tabanlı profil oluşturma araçlarıyla zamana göre operatör çağrılarını görselleştirmek için TensorFlow Lite izlemeyi de kullanabilirsiniz.

Grafikteki operatörleri profilleyin ve optimize edin

Modelde belirli bir operatör sık ​​sık görünüyorsa ve profil oluşturmaya bağlı olarak, operatörün en fazla zamanı harcadığını görürseniz, bu operatörü optimize etmeye bakabilirsiniz. TensorFlow Lite çoğu operatör için optimize edilmiş sürümlere sahip olduğundan bu senaryo nadirdir. Bununla birlikte, operatörün çalıştırıldığı kısıtlamaları biliyorsanız, özel bir işlemin daha hızlı bir sürümünü yazabilirsiniz. Özel operatör belgelerimize bakın .

Modelinizi optimize edin

Model optimizasyonu, genellikle daha hızlı ve enerji açısından daha verimli olan daha küçük modeller oluşturmayı hedefler, böylece mobil cihazlara yerleştirilebilirler. TensorFlow Lite, niceleme gibi birden çok optimizasyon tekniğini destekler.

Ayrıntılar için model optimizasyon belgelerimize bakın.

Konu sayısını değiştirin

TensorFlow Lite, birçok operatör için çok iş parçacıklı çekirdekleri destekler. İş parçacığı sayısını artırabilir ve operatörlerin yürütülmesini hızlandırabilirsiniz. Ancak iş parçacığı sayısını artırmak, modelinizin daha fazla kaynak ve güç kullanmasına neden olacaktır.

Bazı uygulamalar için gecikme, enerji verimliliğinden daha önemli olabilir. Yorumlayıcı iş parçacığı sayısını ayarlayarak iş parçacığı sayısını artırabilirsiniz. Bununla birlikte, çok iş parçacıklı yürütme, eşzamanlı olarak başka neyin yürütüldüğüne bağlı olarak artan performans değişkenliği pahasına gelir. Bu özellikle mobil uygulamalar için geçerlidir. Örneğin, izole edilmiş testler, tek iş parçacıklıya karşı 2 kat hızlanma gösterebilir, ancak aynı anda başka bir uygulama yürütülüyorsa, tek iş parçacıklı olandan daha kötü performansla sonuçlanabilir.

Gereksiz kopyaları ortadan kaldırın

Uygulamanız dikkatlice tasarlanmamışsa, girişi beslerken ve modelden çıktıyı okurken fazladan kopyalar olabilir. Gereksiz kopyaları ortadan kaldırdığınızdan emin olun. Java gibi daha yüksek seviyeli API'ler kullanıyorsanız, performans uyarıları için belgeleri dikkatlice kontrol ettiğinizden emin olun. Örneğin, Java API çok daha hızlı olduğu ByteBuffers olarak kullanılan girdilerin .

Platforma özel araçlarla uygulamanızı profilleyin

Android profil oluşturucu ve Araçlar gibi platforma özel araçlar, uygulamanızda hata ayıklamak için kullanılabilecek çok sayıda profil bilgisi sağlar. Bazen performans hatası modelde değil, uygulama kodunun modelle etkileşime giren bölümlerinde olabilir. Kendinizi platforma özgü profil oluşturma araçlarına ve platformunuz için en iyi uygulamalara aşina olduğunuzdan emin olun.

Modelinizin cihazda bulunan donanım hızlandırıcılardan yararlanıp yararlanmadığını değerlendirin

TensorFlow Lite; GPU'lar, DSP'ler ve sinir hızlandırıcıları gibi daha hızlı donanımlarla modelleri hızlandırmanın yeni yollarını ekledi. Tipik olarak, bu hızlandırıcılar, yorumlayıcı yürütmesinin bölümlerini devralan temsilci alt modülleri aracılığıyla açığa çıkar. TensorFlow Lite, delegeleri şu şekilde kullanabilir:

  • Android'in Sinir Ağları API'sini kullanma . Modelinizin hızını ve verimliliğini artırmak için bu donanım hızlandırıcı arka uçlarından yararlanabilirsiniz. Neural Networks API'yi etkinleştirmek için NNAPI delege kılavuzuna bakın.
  • GPU temsilcisi, sırasıyla OpenGL / OpenCL ve Metal kullanılarak Android ve iOS'ta kullanılabilir. Bunları denemek için GPU temsilcisi eğitimine ve belgelerine bakın .
  • Hexagon delegate Android'de mevcuttur. Cihazda mevcutsa Qualcomm Hexagon DSP'den yararlanır. Daha fazla bilgi için Hexagon delege eğitimine bakın.
  • Standart olmayan donanıma erişiminiz varsa kendi temsilcinizi oluşturmanız mümkündür. Daha fazla bilgi için TensorFlow Lite temsilcilerine bakın.

Bazı hızlandırıcıların farklı model türleri için daha iyi çalıştığını unutmayın. Bazı temsilciler yalnızca kayan modelleri veya belirli bir şekilde optimize edilmiş modelleri destekler. Uygulamanız için iyi bir seçim olup olmadığını görmek için her delegeyi kıyaslamak önemlidir. Örneğin, çok küçük bir modeliniz varsa, modeli NN API'ye veya GPU'ya devretmeye değmeyebilir. Aksine, hızlandırıcılar, yüksek aritmetik yoğunluğa sahip büyük modeller için mükemmel bir seçimdir.

Daha fazla yardıma ihtiyacım var

TensorFlow ekibi, karşılaşabileceğiniz belirli performans sorunlarını teşhis etmenize ve ele almanıza yardımcı olmaktan mutluluk duyar. Lütfen sorunun ayrıntılarıyla birlikte GitHub'da bir sorun bildirin .