Perangkat seluler dan tersemat memiliki sumber daya komputasi yang terbatas, sehingga penting untuk menjaga agar sumber daya aplikasi Anda tetap efisien. Kita telah menyusun daftar praktik terbaik dan strategi yang dapat Anda gunakan untuk meningkatkan kualitas TensorFlow Performa model ringan.
Pilih model terbaik untuk tugas tersebut
Bergantung pada tugasnya, Anda harus membuat kompromi antara kompleksitas model dan ukuran. Jika tugas Anda membutuhkan akurasi tinggi, maka Anda mungkin memerlukan model yang kompleks. Untuk tugas yang membutuhkan lebih sedikit presisi, lebih baik menggunakan model yang lebih kecil karena mereka tidak hanya menggunakan lebih sedikit ruang {i>disk<i} dan memori, tetapi juga umumnya lebih cepat dan lebih hemat energi. Misalnya, grafik di bawah ini menunjukkan akurasi dan latensi untuk beberapa model klasifikasi gambar umum.
Salah satu contoh model yang dioptimalkan untuk perangkat seluler adalah MobileNets, yang dioptimalkan untuk perangkat seluler aplikasi visual. Kaggle Model mencantumkan beberapa yang telah dioptimalkan secara khusus untuk perangkat seluler dan tersemat.
Anda dapat melatih ulang model yang tercantum di set data Anda sendiri menggunakan transfer pembelajaran.
Membuat profil model
Setelah Anda memilih model kandidat yang tepat untuk tugas Anda, model adalah praktik yang baik untuk membuat profil dan mengukur model Anda. Pembandingan LiteRT alat memiliki profiler bawaan yang menunjukkan statistik pembuatan profil per operator. Hal ini dapat membantu memahami bottleneck performa dan operator mana yang mendominasi waktu komputasi.
Anda juga dapat menggunakan LiteRT pelacakan untuk membuat profil model di aplikasi Android, menggunakan pelacakan sistem Android standar, dan untuk memvisualisasikan pemanggilan operator menurut waktu dengan pembuatan profil berbasis GUI alat.
Membuat profil dan mengoptimalkan operator dalam grafik
Jika operator tertentu sering muncul dalam model dan, berdasarkan {i>profiling<i}, Anda akan menemukan bahwa operator menghabiskan paling banyak waktu, Anda bisa mengoptimalkan operator tersebut. Skenario ini jarang terjadi seperti TensorFlow Lite telah mengoptimalkan versi untuk sebagian besar operator. Namun, Anda mungkin dapat dan Anda dapat menulis versi operasi khusus yang lebih cepat jika Anda mengetahui batasan yang operator dieksekusi. 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 digunakan di perangkat seluler. LiteRT mendukung beberapa teknik pengoptimalan, seperti kuantisasi.
Lihat dokumen pengoptimalan model untuk mengetahui detailnya.
Menyesuaikan jumlah rangkaian pesan
LiteRT mendukung kernel multi-thread untuk banyak operator. Anda dapat meningkatkan jumlah thread dan mempercepat eksekusi operator. Meningkat 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 meningkatkan jumlah thread dengan mengatur jumlah penafsir thread. Namun, eksekusi multi-threading menyebabkan peningkatan performa variabilitas tergantung pada apa lagi yang dieksekusi secara serentak. Ini adalah terutama untuk aplikasi seluler. Misalnya, pengujian terpisah dapat menunjukkan 2x percepatan vs thread tunggal, tetapi, jika aplikasi lain berjalan pada saat yang sama, hal ini dapat mengakibatkan performa yang lebih buruk dibandingkan thread tunggal.
Menghilangkan salinan duplikat
Jika aplikasi Anda tidak dirancang dengan cermat, mungkin terdapat salinan yang redundan
saat memasukkan input ke dan membaca output dari model. Pastikan untuk
menghilangkan salinan yang berlebihan. Jika Anda menggunakan API dengan level yang lebih tinggi, seperti Java, pastikan
pastikan untuk memeriksa dokumentasi dengan cermat
untuk peringatan performa. Misalnya,
Java API jauh lebih cepat jika ByteBuffers
digunakan sebagai
input.
Membuat profil aplikasi Anda dengan alat khusus platform
Alat khusus platform seperti Android profiler dan Instrumen memberikan kekayaan informasi pembuatan profil yang bisa digunakan untuk men-debug aplikasi Anda. Kadang-kadang {i>bug<i} kinerja mungkin tidak ada pada model, tetapi di bagian kode aplikasi yang berinteraksi dengan model. Pastikan Anda memahami platform praktik terbaik dan alat pembuatan profil spesifik untuk platform Anda.
Evaluasi 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 adalah diekspos melalui submodul delegasi yang mengambil alih dari proses eksekusi penafsiran. LiteRT dapat menggunakan delegasi dengan:
- Delegasi GPU tersedia di Android dan iOS, menggunakan OpenGL/OpenCL dan Metal, secara berurutan. Untuk mencobanya, lihat delegasi GPU.
- Anda dapat membuat delegasi Anda sendiri jika memiliki akses ke perangkat keras non-standar. Lihat LiteRT delegasi untuk informasi selengkapnya.
Perlu diketahui bahwa beberapa akselerator berfungsi lebih baik untuk jenis model yang berbeda. Agak besar delegasi hanya mendukung model {i>float<i} atau model yang dioptimalkan dengan cara tertentu. Penting penting untuk menjalankan tolok ukur pada setiap delegasi untuk melihat apakah hasilnya bagus pilihan untuk aplikasi Anda. Misalnya, jika Anda memiliki model yang sangat kecil, mungkin model tidak layak didelegasikan ke GPU. Sebaliknya, akselerator adalah pilihan tepat untuk model besar yang memiliki intensitas aritmetika tinggi.