Performansla ilgili en iyi uygulamalar

Mobil ve yerleştirilmiş cihazların bilişim kaynakları sınırlı olduğundan uygulamanızın kaynak açısından verimli olması önemlidir. TensorFlow Lite model performansınızı artırmak için kullanabileceğiniz en iyi uygulamalar ve stratejiler listesi hazırladık.

Görev için en uygun modeli seçme

Görevinize bağlı olarak model karmaşıklığı ve boyutu arasında bir denge kurmanız gerekir. 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. Bu modeller yalnızca daha az disk alanı ve bellek kullanmakla kalmaz, aynı zamanda genellikle daha hızlı ve daha enerji verimlidir. Örneğin, aşağıdaki grafiklerde bazı yaygın görüntü sınıflandırma modelleri için doğruluk ve gecikme süresi arasındaki denge gösterilmektedir.

Model boyutu ile doğruluk arasındaki ilişkiyi gösteren grafik

Doğruluk ve gecikme grafiği

Mobil cihazlar için optimize edilmiş modellere örnek olarak, mobil bilgisayarla görme uygulamaları için optimize edilmiş MobileNets verilebilir. Kaggle Models, özellikle mobil ve yerleşik cihazlar için optimize edilmiş başka modelleri de listeler.

Transfer öğrenimini kullanarak listelenen modelleri kendi veri kümenizde yeniden eğitebilirsiniz.

Modeliniz için profil oluşturma

Görevinize uygun bir aday model seçtikten sonra modelinizi profillemek ve karşılaştırmak iyi bir uygulamadır. LiteRT karşılaştırma aracında operatör başına profil oluşturma istatistiklerini gösteren yerleşik bir profil oluşturucu bulunur. Bu, performans darboğazlarını ve hesaplama süresine hangi operatörlerin hakim olduğunu anlamaya yardımcı olabilir.

Ayrıca, standart Android sistem izlemeyi kullanarak Android uygulamanızdaki modeli profillemek ve operatör çağrılarını GUI tabanlı profilleme araçlarıyla zamana göre görselleştirmek için LiteRT izlemeyi de kullanabilirsiniz.

Grafikteki operatörleri profilleme ve optimize etme

Modelde belirli bir operatör sık sık görünüyorsa ve profillemeye göre bu operatörün en fazla zamanı kullandığını tespit ederseniz bu operatörü optimize etmeyi düşünebilirsiniz. TensorFlow Lite'ın çoğu operatör için optimize edilmiş sürümleri olduğundan bu senaryo nadir görülür. Ancak operatörün yürütüldüğü kısıtlamaları biliyorsanız özel bir işlemi daha hızlı yazabilirsiniz. Özel operatörler kılavuzuna göz atın.

Modelinizi optimize etme

Model optimizasyonu, mobil cihazlarda dağıtılabilmeleri için genellikle daha hızlı ve daha enerji verimli olan daha küçük modeller oluşturmayı amaçlar. LiteRT, nicemleme gibi birden fazla optimizasyon tekniğini destekler.

Ayrıntılar için model optimizasyonu belgelerine göz atın.

İş parçacığı sayısını ayarlama

LiteRT, 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 olur.

Bazı uygulamalarda gecikme, enerji verimliliğinden daha önemli olabilir. Yorumlayıcı iş parçacığı sayısını ayarlayarak iş parçacığı sayısını artırabilirsiniz. Ancak çok iş parçacıklı yürütme, eşzamanlı olarak yürütülen diğer işlemlere bağlı olarak performans değişkenliğinin artmasıyla sonuçlanır. Bu durum özellikle mobil uygulamalar için geçerlidir. Örneğin, yalıtılmış 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ıya kıyasla daha kötü performansla sonuçlanabilir.

Gereksiz kopyaları kaldırın

Uygulamanız dikkatli bir şekilde tasarlanmamışsa modele giriş beslenirken ve modelden çıkış okunurken gereksiz kopyalar olabilir. Gereksiz kopyaları kaldırdığınızdan emin olun. Java gibi daha üst düzey API'ler kullanıyorsanız performansla ilgili uyarılar için dokümanları dikkatlice inceleyin. Örneğin, ByteBuffers giriş olarak kullanılıyorsa Java API çok daha hızlıdır.

Uygulamanızın profilini platforma özel araçlarla oluşturma

Android profiler ve Instruments gibi platforma özel araçlar, uygulamanızda hata ayıklamak için kullanılabilecek çok sayıda profil oluşturma bilgisi sağlar. Bazen performans hatası modelde değil, uygulama kodunun modelle etkileşim kuran bölümlerinde olabilir. Platformunuza özel profilleme araçları ve platformunuzla ilgili en iyi uygulamalar hakkında bilgi edinin.

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

LiteRT, GPU'lar, DSP'ler ve sinirsel hızlandırıcılar gibi daha hızlı donanımlarla modelleri hızlandırmanın yeni yollarını ekledi. Genellikle bu hızlandırıcılar, yorumlayıcı yürütme işlemlerinin bir kısmını devralan delegate alt modülleri aracılığıyla kullanıma sunulur. LiteRT, yetki verilmiş kişileri şu şekilde kullanabilir:

  • GPU temsilcisi, sırasıyla OpenGL/OpenCL ve Metal kullanılarak Android ve iOS'te kullanılabilir. Bu özellikleri denemek için GPU temsilcisi bölümüne bakın.
  • Standart olmayan donanımlara erişiminiz varsa kendi temsilcinizi oluşturabilirsiniz. Daha fazla bilgi için LiteRT temsilcileri başlıklı makaleyi inceleyin.

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 nokta modellerini veya belirli bir şekilde optimize edilmiş modelleri destekler. Her bir temsilcinin uygulamanız için iyi bir seçim olup olmadığını görmek üzere karşılaştırmanız önemlidir. Örneğin, çok küçük bir modeliniz varsa modeli GPU'ya devretmek işe yaramayabilir. Bunun aksine, hızlandırıcılar yüksek aritmetik yoğunluğa sahip büyük modeller için mükemmel bir seçimdir.