Mobil ve yerleşik 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ı geliş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 ödünleşme 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ü yalnızca daha az disk alanı ve bellek kullanmakla kalmazlar, aynı zamanda genellikle daha hızlıdırlar ve enerji açısından daha verimlidirler. Örneğin, aşağıdaki grafikler, bazı yaygın görüntü sınıflandırma modelleri için doğruluk ve gecikme sürelerini göstermektedir.
Mobil cihazlar için optimize edilmiş modellere bir örnek, mobil görüş uygulamaları için optimize edilmiş MobileNets'tir . TensorFlow Hub , özellikle mobil ve gömülü cihazlar için optimize edilmiş birkaç başka modeli listeler.
Aktarma öğrenmeyi kullanarak listelenen modelleri kendi veri kümenizde yeniden eğitebilirsiniz. TensorFlow Lite Model Maker'ı kullanarak aktarım öğrenme eğitimlerine göz atın.
Modelinizin profilini çıkarın
Göreviniz için doğru aday modeli seçtikten sonra, modelinizin profilini çıkarmak ve kıyaslamak 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 anlamada yardımcı olabilir.
Standart Android sistem izlemeyi kullanarak Android uygulamanızdaki modelin profilini çıkarmak ve GUI tabanlı profil oluşturma araçlarıyla operatör çağrılarını zamana göre görselleştirmek için TensorFlow Lite izlemeyi de kullanabilirsiniz.
Operatörleri grafikte profilleyin ve optimize edin
Belirli bir operatör modelde sıklıkla görünüyorsa ve profil oluşturmaya dayalı olarak, operatörün en fazla zaman harcadığını tespit ederseniz, o operatörü optimize etmeye bakabilirsiniz. TensorFlow Lite, çoğu operatör için optimize edilmiş sürümlere sahip olduğundan, bu senaryo nadir olmalıdır. Ancak, operatörün yürütüldüğü kısıtlamaları biliyorsanız, özel bir operasyonun daha hızlı bir sürümünü yazabilirsiniz. Özel operatörler kılavuzuna göz atın.
Modelinizi optimize edin
Model optimizasyonu, genellikle daha hızlı ve enerji açısından daha verimli olan daha küçük modeller oluşturmayı amaçlar, böylece mobil cihazlarda dağıtılabilirler. TensorFlow Lite, niceleme gibi çoklu optimizasyon tekniklerini destekler.
Ayrıntılar için model optimizasyon belgelerine bakın.
İplik 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. Bununla birlikte, iş parçacığı sayısını artırmak, modelinizin daha fazla kaynak ve güç kullanmasını sağlayacaktı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, aynı anda başka nelerin 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 testler, tek iş parçacıklıya kıyasla 2 kat hızlanma gösterebilir, ancak aynı anda başka bir uygulama yürütülüyorsa, tek iş parçacıklıdan daha kötü performansa neden olabilir.
Gereksiz kopyaları ortadan kaldırın
Uygulamanız dikkatli bir şekilde tasarlanmadıysa, girdiyi modele beslerken ve çıktıyı modelden okurken gereksiz kopyalar olabilir. Fazla 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,
ByteBuffers girdi olarak kullanılırsa Java API çok daha hızlıdır.
Platforma özel araçlarla uygulamanızın profilini çıkarın
Android profil oluşturucu ve Enstrümanlar 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. Platforma özel 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ılarını kullanmanın fayda sağlayıp sağlamadığını değerlendirin
TensorFlow Lite, GPU'lar, DSP'ler ve nöral hızlandırıcılar gibi daha hızlı donanıma sahip 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ını kullanabilirsiniz. Neural Networks API'yi etkinleştirmek için NNAPI temsilci kılavuzuna bakın.
- GPU temsilcisi, sırasıyla OpenGL/OpenCL ve Metal kullanılarak Android ve iOS'ta mevcuttur. Bunları denemek için GPU temsilci öğreticisine ve belgelerine bakın.
- Altıgen delege Android'de kullanılabilir. Cihazda mevcutsa Qualcomm Hexagon DSP'den yararlanır. Daha fazla bilgi için Hexagon temsilci 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ı delegeler yalnızca yüzer 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 bir temsilciyi kıyaslamak önemlidir. Örneğin, çok küçük bir modeliniz varsa, modeli ne NN API'sine ne de GPU'ya devretmeye değmeyebilir. Tersine, 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ınız var
TensorFlow ekibi, karşılaşabileceğiniz belirli performans sorunlarını teşhis etmenize ve çözmenize yardımcı olmaktan mutluluk duyar. Lütfen sorunun ayrıntılarıyla birlikte GitHub'da bir sorun bildirin.