Praktik terbaik performa

Perangkat seluler dan tersemat memiliki resource komputasi yang terbatas sehingga penting untuk menjaga resource aplikasi Anda tetap efisien. 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 model dan ukuran. Jika tugas Anda memerlukan akurasi tinggi, Anda mungkin memerlukan model yang besar dan kompleks. Untuk tugas yang memerlukan lebih sedikit presisi, sebaiknya gunakan model yang lebih kecil karena tidak hanya menggunakan lebih sedikit ruang disk dan memori, tetapi juga umumnya lebih cepat dan lebih hemat energi. Misalnya, grafik di bawah ini menunjukkan kompromi akurasi dan latensi untuk beberapa model klasifikasi gambar umum.

Grafik ukuran model vs
akurasi

Grafik akurasi vs latensi

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

Anda dapat melatih ulang model yang tercantum di set data Anda sendiri menggunakan pemelajaran transfer.

Membuat profil model

Setelah memilih model kandidat yang tepat untuk tugas Anda, sebaiknya buat profil dan tolok ukur model Anda. Alat benchmark TensorFlow Lite 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 TensorFlow Lite untuk membuat profil model di aplikasi Android, menggunakan pelacakan sistem Android standar, dan untuk memvisualisasikan pemanggilan operator menurut waktu dengan alat pembuatan profil berbasis GUI.

Membuat profil dan mengoptimalkan operator dalam grafik

Jika operator tertentu sering muncul dalam model dan, berdasarkan pembuatan profil, Anda mendapati bahwa operator menghabiskan paling banyak waktu, Anda dapat 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 mengetahui batasan operator yang dijalankan. Lihat panduan operator kustom.

Optimalkan model Anda

Pengoptimalan model bertujuan untuk membuat model lebih kecil yang umumnya lebih cepat dan lebih hemat energi, sehingga dapat di-deploy di perangkat seluler. TensorFlow Lite mendukung beberapa teknik pengoptimalan, seperti kuantisasi.

Lihat dokumen pengoptimalan model untuk mengetahui detailnya.

Menyesuaikan jumlah rangkaian pesan

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

Untuk beberapa aplikasi, latensi mungkin lebih penting daripada efisiensi energi. Anda dapat meningkatkan jumlah thread dengan menetapkan jumlah thread penafsir. Namun, eksekusi multi-thread memiliki dampak berupa peningkatan variasi performa, bergantung pada hal lain yang dijalankan secara bersamaan. Hal ini terutama berlaku untuk aplikasi seluler. Misalnya, pengujian terisolasi mungkin menampilkan percepatan 2x vs thread tunggal, tetapi, jika aplikasi lain dijalankan secara bersamaan, hal ini dapat menghasilkan performa yang lebih buruk daripada thread tunggal.

Menghilangkan salinan duplikat

Jika aplikasi Anda tidak didesain dengan cermat, kemungkinan terdapat salinan yang redundan saat memasukkan input ke dan membaca output dari model. Pastikan untuk menghapus salinan yang berulang. Jika Anda menggunakan API dengan level yang lebih tinggi, seperti Java, pastikan Anda memeriksa dokumentasi dengan cermat untuk peringatan performa. Misalnya, Java API akan jauh lebih cepat jika ByteBuffers digunakan sebagai input.

Membuat profil aplikasi Anda dengan alat khusus platform

Alat khusus platform seperti Android profiler dan Instruments menyediakan banyak informasi pembuatan profil yang dapat digunakan untuk men-debug aplikasi Anda. Terkadang bug performa mungkin tidak ada dalam model, tetapi di 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 mendapatkan manfaat dari penggunaan akselerator hardware yang tersedia di perangkat

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

  • Delegasi GPU tersedia di Android dan iOS, masing-masing menggunakan OpenGL/OpenCL dan Metal. Untuk mencobanya, lihat delegasi GPU.
  • Anda dapat membuat delegasi sendiri jika memiliki akses ke hardware non-standar. Lihat delegasi TensorFlow Lite untuk mengetahui informasi selengkapnya.

Perlu diketahui bahwa beberapa akselerator berfungsi lebih baik untuk jenis model yang berbeda. Beberapa delegasi hanya mendukung model float atau model yang dioptimalkan dengan cara tertentu. Anda harus melakukan tolok ukur terhadap setiap delegasi guna mengetahui apakah delegasi tersebut cocok untuk aplikasi Anda. Misalnya, jika Anda memiliki model yang sangat kecil, mungkin tidak layak mendelegasikan model ke GPU. Sebaliknya, akselerator adalah pilihan yang bagus untuk model besar yang memiliki intensitas aritmetika tinggi.