Praktik terbaik performa

Perangkat seluler dan perangkat tertanam memiliki sumber daya komputasi yang terbatas, sehingga penting untuk menjaga sumber daya aplikasi Anda tetap efisien. Kami telah menyusun daftar praktik dan strategi terbaik yang dapat Anda gunakan untuk meningkatkan performa model TensorFlow Lite Anda.

Pilih model terbaik untuk tugas tersebut

Bergantung pada tugasnya, Anda perlu membuat trade-off antara kompleksitas dan ukuran model. Jika tugas Anda memerlukan akurasi tinggi, Anda mungkin memerlukan model yang besar dan kompleks. Untuk tugas-tugas yang memerlukan ketelitian lebih rendah, lebih baik menggunakan model yang lebih kecil karena tidak hanya menggunakan lebih sedikit ruang disk dan memori, tetapi juga secara umum lebih cepat dan hemat energi. Misalnya, grafik di bawah menunjukkan trade-off akurasi dan latensi untuk beberapa model klasifikasi gambar umum.

Graph of model size vs accuracy

Graph of accuracy vs latency

Salah satu contoh model yang dioptimalkan untuk perangkat seluler adalah MobileNets , yang dioptimalkan untuk aplikasi visi seluler. TensorFlow Hub mencantumkan beberapa model lain yang telah dioptimalkan secara khusus untuk perangkat seluler dan perangkat tersemat.

Anda dapat melatih ulang model yang tercantum pada kumpulan data Anda sendiri dengan menggunakan pembelajaran transfer. Lihat tutorial pembelajaran transfer menggunakan TensorFlow Lite Model Maker .

Profil model Anda

Setelah Anda memilih model kandidat yang tepat untuk tugas Anda, praktik yang baik adalah membuat profil dan membuat tolok ukur model Anda. Alat benchmarking TensorFlow Lite memiliki profiler bawaan yang menampilkan statistik profil per operator. Hal ini dapat membantu memahami hambatan kinerja dan operator mana yang mendominasi waktu komputasi.

Anda juga dapat menggunakan penelusuran TensorFlow Lite untuk membuat profil model di aplikasi Android Anda, menggunakan penelusuran sistem Android standar, dan untuk memvisualisasikan pemanggilan operator berdasarkan waktu dengan alat pembuatan profil berbasis GUI.

Profil dan optimalkan operator dalam grafik

Jika operator tertentu sering muncul dalam model dan, berdasarkan pembuatan profil, Anda menemukan bahwa operator tersebut menghabiskan waktu paling banyak, Anda dapat mempertimbangkan untuk mengoptimalkan operator tersebut. Skenario ini jarang terjadi karena TensorFlow Lite telah mengoptimalkan versi untuk sebagian besar operator. Namun, Anda mungkin dapat menulis versi operasi kustom yang lebih cepat jika Anda mengetahui batasan di mana operator dijalankan. Lihat panduan operator khusus .

Optimalkan model Anda

Pengoptimalan model bertujuan untuk menciptakan model yang lebih kecil yang umumnya lebih cepat dan hemat energi, sehingga dapat diterapkan pada perangkat seluler. TensorFlow Lite mendukung beberapa teknik pengoptimalan, seperti kuantisasi.

Lihat dokumen pengoptimalan model untuk mengetahui detailnya.

Sesuaikan jumlah utas

TensorFlow Lite mendukung kernel multi-thread untuk banyak operator. Anda dapat menambah jumlah thread dan mempercepat eksekusi operator. Namun, menambah jumlah thread akan membuat model Anda menggunakan lebih banyak sumber daya dan daya.

Untuk beberapa aplikasi, latensi mungkin lebih penting daripada efisiensi energi. Anda dapat menambah jumlah thread dengan mengatur jumlah interpreter thread . Namun, eksekusi multi-thread memerlukan peningkatan variabilitas kinerja tergantung pada apa lagi yang dieksekusi secara bersamaan. Hal ini khususnya berlaku untuk aplikasi seluler. Misalnya, pengujian terisolasi mungkin menunjukkan peningkatan kecepatan 2x dibandingkan pengujian single-thread, namun jika aplikasi lain dijalankan pada waktu yang sama, hal ini dapat menghasilkan performa yang lebih buruk dibandingkan pengujian single-thread.

Hilangkan salinan yang berlebihan

Jika aplikasi Anda tidak dirancang dengan hati-hati, mungkin ada salinan yang berlebihan saat memasukkan masukan dan membaca keluaran dari model. Pastikan untuk menghilangkan salinan yang berlebihan. Jika Anda menggunakan API tingkat yang lebih tinggi, seperti Java, pastikan untuk memeriksa dokumentasi dengan cermat untuk mengetahui peringatan kinerja. Misalnya, Java API jauh lebih cepat jika ByteBuffers digunakan sebagai input .

Profil aplikasi Anda dengan alat khusus platform

Alat khusus platform seperti profiler dan Instrumen Android menyediakan banyak informasi pembuatan profil yang dapat digunakan untuk men-debug aplikasi Anda. Terkadang bug performa mungkin bukan terletak pada model, namun pada bagian kode aplikasi yang berinteraksi dengan model. Pastikan Anda memahami alat pembuatan profil khusus platform dan praktik terbaik untuk platform Anda.

Evaluasi apakah model Anda mendapat manfaat dari penggunaan akselerator perangkat keras yang tersedia di perangkat

TensorFlow Lite telah menambahkan cara baru untuk mempercepat model dengan perangkat keras yang lebih cepat seperti GPU, DSP, dan akselerator neural. Biasanya, akselerator ini diekspos melalui submodul delegasi yang mengambil alih sebagian eksekusi juru bahasa. TensorFlow Lite dapat menggunakan delegasi dengan:

  • Menggunakan API Jaringan Neural Android. Anda dapat memanfaatkan backend akselerator perangkat keras ini untuk meningkatkan kecepatan dan efisiensi model Anda. Untuk mengaktifkan Neural Networks API, lihat panduan delegasi NNAPI .
  • Delegasi GPU tersedia di Android dan iOS, masing-masing menggunakan OpenGL/OpenCL dan Metal. Untuk mencobanya, lihat tutorial dan dokumentasi delegasi GPU .
  • Delegasi segi enam tersedia di Android. Ini memanfaatkan Qualcomm Hexagon DSP jika tersedia di perangkat. Lihat tutorial delegasi Hexagon untuk informasi lebih lanjut.
  • Dimungkinkan untuk membuat delegasi Anda sendiri jika Anda memiliki akses ke perangkat keras non-standar. Lihat delegasi TensorFlow Lite untuk informasi selengkapnya.

Ketahuilah bahwa beberapa akselerator berfungsi lebih baik untuk berbagai jenis model. Beberapa delegasi hanya mendukung model float atau model yang dioptimalkan dengan cara tertentu. Penting untuk melakukan tolok ukur pada setiap delegasi untuk melihat apakah itu pilihan yang tepat untuk lamaran Anda. Misalnya, jika Anda memiliki model yang sangat kecil, mungkin tidak ada gunanya mendelegasikan model tersebut ke NN API atau GPU. Sebaliknya, akselerator adalah pilihan tepat untuk model besar yang memiliki intensitas aritmatika tinggi.

Butuh lebih banyak bantuan

Tim TensorFlow dengan senang hati membantu mendiagnosis dan mengatasi masalah performa spesifik yang mungkin Anda hadapi. Silakan ajukan masalah di GitHub dengan detail masalahnya.