Perangkat seluler dan perangkat sematan memiliki resource komputasi yang terbatas, jadi penting untuk menjaga efisiensi resource aplikasi Anda. Kami telah menyusun daftar praktik terbaik dan strategi yang dapat Anda gunakan untuk meningkatkan performa model TensorFlow Lite.
Pilih model terbaik untuk tugas tersebut
Bergantung pada tugasnya, Anda harus membuat kompromi antara kompleksitas dan ukuran model. Jika tugas Anda memerlukan akurasi tinggi, Anda mungkin memerlukan model yang besar dan kompleks. Untuk tugas yang tidak memerlukan presisi tinggi, sebaiknya gunakan model yang lebih kecil karena model tersebut tidak hanya menggunakan lebih sedikit ruang disk dan memori, tetapi juga umumnya lebih cepat dan hemat energi. Misalnya, grafik di bawah menunjukkan trade-off akurasi dan latensi untuk beberapa model klasifikasi gambar umum.


Salah satu contoh model yang dioptimalkan untuk perangkat seluler adalah MobileNets, yang dioptimalkan untuk aplikasi visi seluler. Kaggle Models mencantumkan beberapa model lain yang telah dioptimalkan secara khusus untuk perangkat seluler dan perangkat sematan.
Anda dapat melatih ulang model yang tercantum pada set data Anda sendiri dengan menggunakan transfer learning.
Membuat profil model
Setelah Anda memilih model kandidat yang tepat untuk tugas Anda, sebaiknya Anda membuat profil dan mengukur performa model Anda. Alat benchmark LiteRT memiliki profiler bawaan yang menampilkan statistik pembuatan profil per operator. Hal ini dapat membantu memahami bottleneck performa dan operator mana yang mendominasi waktu komputasi.
Anda juga dapat menggunakan pelacakan LiteRT untuk memprofilkan model di aplikasi Android Anda, menggunakan pelacakan sistem Android standar, dan untuk memvisualisasikan pemanggilan operator berdasarkan waktu dengan alat pembuatan profil berbasis GUI.
Membuat profil dan mengoptimalkan operator dalam grafik
Jika operator tertentu sering muncul dalam model dan, berdasarkan pemrofilan, Anda menemukan bahwa operator tersebut menghabiskan waktu paling banyak, Anda dapat mempelajari cara mengoptimalkan operator tersebut. Skenario ini jarang terjadi karena TensorFlow Lite memiliki versi yang dioptimalkan untuk sebagian besar operator. Namun, Anda mungkin dapat menulis versi operasi kustom yang lebih cepat jika Anda mengetahui batasan saat operator dijalankan. Lihat panduan operator kustom.
Optimalkan model Anda
Pengoptimalan model bertujuan untuk membuat model yang lebih kecil, yang umumnya lebih cepat dan hemat energi, sehingga dapat di-deploy di perangkat seluler. LiteRT mendukung beberapa teknik pengoptimalan, seperti kuantisasi.
Lihat dokumen pengoptimalan model untuk mengetahui detailnya.
Menyesuaikan jumlah thread
LiteRT mendukung kernel multi-thread untuk banyak operator. Anda dapat meningkatkan jumlah thread dan mempercepat eksekusi operator. Namun, peningkatan jumlah thread akan membuat model Anda menggunakan lebih banyak resource dan daya.
Untuk beberapa aplikasi, latensi mungkin lebih penting daripada efisiensi energi. Anda dapat meningkatkan jumlah thread dengan menyetel jumlah thread interpreter. Namun, eksekusi multi-thread menimbulkan peningkatan variabilitas performa, bergantung pada apa lagi yang dieksekusi secara bersamaan. Hal ini terutama berlaku untuk aplikasi seluler. Misalnya, pengujian terisolasi dapat menunjukkan peningkatan kecepatan 2x dibandingkan dengan thread tunggal, tetapi, jika aplikasi lain dieksekusi pada saat yang sama, hal ini dapat menghasilkan performa yang lebih buruk daripada thread tunggal.
Menghapus salinan yang tidak perlu
Jika aplikasi Anda tidak dirancang dengan cermat, salinan yang berlebihan dapat terjadi saat memasukkan input ke dan membaca output dari model. Pastikan untuk
menghapus salinan yang tidak diperlukan. Jika Anda menggunakan API tingkat yang lebih tinggi, seperti Java, pastikan untuk memeriksa dokumentasi dengan cermat terkait peringatan performa. Misalnya, Java API jauh lebih cepat jika ByteBuffers digunakan sebagai input.
Membuat profil aplikasi dengan alat khusus platform
Alat khusus platform seperti Android Profiler dan Instruments memberikan banyak informasi pembuatan profil yang dapat digunakan untuk men-debug aplikasi Anda. Terkadang, bug performa mungkin tidak ada dalam model, tetapi ada di bagian kode aplikasi yang berinteraksi dengan model. Pastikan Anda memahami alat pembuatan profil khusus platform dan praktik terbaik untuk platform Anda.
Mengevaluasi apakah model Anda mendapatkan manfaat dari penggunaan akselerator hardware yang tersedia di perangkat
LiteRT telah menambahkan cara baru untuk mempercepat model dengan hardware yang lebih cepat seperti GPU, DSP, dan akselerator neural. Biasanya, akselerator ini diekspos melalui submodul delegate yang mengambil alih bagian eksekusi interpreter. LiteRT dapat menggunakan delegasi dengan:
- Delegasi GPU tersedia di Android dan iOS, menggunakan OpenGL/OpenCL dan Metal. Untuk mencobanya, lihat delegasi GPU.
- Anda dapat membuat delegasi Anda sendiri jika memiliki akses ke hardware non-standar. Lihat Delegasi LiteRT untuk mengetahui informasi selengkapnya.
Perlu diketahui 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 mengukur performa setiap delegasi untuk melihat apakah delegasi tersebut merupakan pilihan yang baik untuk aplikasi Anda. Misalnya, jika Anda memiliki model yang sangat kecil, mungkin tidak ada gunanya mendelegasikan model ke GPU. Sebaliknya, akselerator adalah pilihan yang tepat untuk model besar yang memiliki intensitas aritmatika tinggi.