Mobil ve yerleşik cihazların işlem kaynakları sınırlı olduğundan uygulama kaynaklarınızı verimli tutmanıza çok önemlidir. Sizin için bir liste derledik TensorFlow'unuzu geliştirmek için kullanabileceğiniz en iyi uygulamaları ve stratejileri Basit model performansı.
Görev için en iyi modeli seçin
Göreve bağlı olarak, modelin karmaşıklığı arasında denge kurmanız gerekir. seçin. Göreviniz yüksek doğruluk gerektiriyorsa, projeyle ilgili geniş kapsamlı karmaşık bir modeldir. Daha az kesinlik gerektiren görevlerde, sabit bir daha küçük bir modeldir çünkü daha az disk alanı ve bellek kullanmakla kalmaz, aynı zamanda ve enerji verimliliği daha yüksek. Örneğin, aşağıdaki grafiklerde kesinlik ve gecikme ödünçlerini verir.
Mobil cihazlar için optimize edilmiş modellere örnek olarak şunlar verilebilir: Mobil cihazlar için optimize edilmiş MobileNets müzakere tekniklerini konuşacağız. Kaggle Modeller, mobil cihazlar ve yerleşik cihazlar için özel olarak optimize edilmiş yeni modellerdir.
Aktarımı kullanarak listelenen modelleri kendi veri kümenizde yeniden eğitebilirsiniz ele alacağız.
Modelinizin profilini çıkarın
Göreviniz için doğru aday modeli seçtikten sonra ve karşılaştırma yapmak için iyi bir uygulamadır. LiteRT karşılaştırması Araç , operatör başına profil oluşturma istatistiklerini gösteren yerleşik bir profil düzenleyiciye sahiptir. Bu performans sorunlarını ve bu sorunu hangi operatörlerin daha fazla kontrol sahibi olduğunu anlamanıza daha yüksek olabilir.
İsterseniz LiteRT profili izleme modeliniz, standart Android sistem izlemeyi kullanarak ve GUI tabanlı profil oluşturma ile operatör çağrılarını zamana göre görselleştirmek için araçlar.
Grafikteki profil ve optimizasyon operatörleri
Belirli bir operatör modelde sıkça görünüyorsa ve operatörün en fazla zamanı tükettiğini ve aksi takdirde, operatörü optimize edebilirsiniz. Bu senaryo, TensorFlow kadar nadirdir Lite sürümleri çoğu operatör için optimize edilmiştir. Ancak şunları yapabilirsiniz: bir özel operasyon aracının işlecinin yürütülmesidir. Özel operatörler kılavuzuna göz atın.
Modelinizi optimize etme
Model optimizasyonu, genelde daha hızlı ve sorunsuz bir şekilde çalışabilen daha küçük Böylece mobil cihazlarda dağıtılabilir. LiteRT, niceleme gibi birden çok optimizasyon tekniğini destekler.
Ayrıntılar için model optimizasyon belgelerini inceleyin.
İleti dizisi sayısını ayarlama
LiteRT, birçok operatör için çok iş parçacıklı çekirdekleri destekler. Şunları yapabilirsiniz: iş parçacığı sayısını artırır ve operatörlerin yürütülmesini hızlandırır. Artma ancak iş parçacığı sayısı modelinizin daha fazla kaynak kullanmasını güç.
Bazı uygulamalarda gecikme, enerji verimliliğinden daha önemli olabilir. Siz çevirmen sayısını ayarlayarak iş parçacığı sayısını artırabilir threads. Bununla birlikte, çok iş parçacıklı yürütme, performans artışını beraberinde getirir eşzamanlı olarak yürütülen uygulamalara bağlı olarak değişkenlik gösterebilir. Bu özellikle de mobil uygulamalar için geçerli. Örneğin, izole testlerde 2 kat daha fazla tek iş parçacıklı ile tek iş parçacıklı karşılaştırıldığında hızlanır ancak başka bir uygulama aynı anda çalışıyorsa tek iş parçacıklı sisteme göre daha kötü performansa neden olabilir.
Gereksiz kopyaları kaldırın
Uygulamanız dikkatli bir şekilde tasarlanmadıysa fazladan kopyalar olabilir
ve çıktıyı modele besleme sırasında
bu işlemi düzgün şekilde gerçekleştirir. Şunları yaptığınızdan emin olun:
ve gereksiz kopyaları ortadan kaldırır. Java gibi daha üst düzey API'ler kullanıyorsanız
performans uyarıları için belgeleri dikkatlice kontrol edin. Örneğin,
ByteBuffers
olarak kullanılırsa Java API çok daha hızlıdır
girişler.
Platforma özel araçlarla uygulamanızın profilini oluşturun
Android gibi platforma özgü araçlar profiler ve Enstrümanlar zengindir bir dizi profil çıkarma bilgisine sahip olur. Bazen performans hatası modelde değil, ancak uygulama kodunun, modelle etkileşimde bulunur. Platform hakkında bilgi sahibi olduğunuzdan emin olun. platformunuza özel profil çıkarma araçları ve en iyi uygulamalar.
Modelinizin cihazda bulunan donanım hızlandırıcıları kullanmanın avantajı olup olmadığını değerlendirin
LiteRT, daha hızlı donanımla modelleri hızlandırmanın yeni yollarını ekledi Örneğin GPU'lar, DSP'ler ve nöral hızlandırıcılar. Genellikle bu hızlandırıcılar özelliklerini devralan delegate alt modülleri aracılığıyla belirli kısımlarına odaklanılabilir. LiteRT, yetki verilmiş kullanıcıları şu şekilde kullanabilir:
- GPU yetki verilmişse OpenGL/OpenCL ve Metal kullanılarak Android ve iOS'te tıklayın. Bunları denemek için GPU temsilcisine bakın.
- Aşağıdaki özelliklere erişiminiz varsa kendi temsilcinizi oluşturabilirsiniz donanım gibi değil. Bkz. LiteRT yetki veren kişiye bakın.
Bazı hızlandırıcıların farklı model türlerinde daha iyi çalıştığını unutmayın. Biraz yetki verilmiş kullanıcılar yalnızca kayan modelleri veya belirli bir şekilde optimize edilmiş modelleri destekler. Evet her bir yetkiyi karşılaştırmak önemlidir. tercih edebilirsiniz. Örneğin, çok küçük bir modeliniz varsa, için GPU'ya yetki vermeye değmez. Öte yandan hızlandırıcılar Yüksek aritmetik yoğunluğa sahip büyük modeller için mükemmel bir seçenektir.