Bantuan melindungi Great Barrier Reef dengan TensorFlow pada Kaggle Bergabung Tantangan

Praktik terbaik kinerja

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

Pilih model terbaik untuk tugas tersebut

Bergantung pada tugasnya, Anda perlu membuat kompromi antara kompleksitas dan ukuran model. Jika tugas Anda membutuhkan akurasi tinggi, Anda mungkin membutuhkan model yang besar dan kompleks. Untuk tugas-tugas yang memerlukan presisi yang lebih rendah, lebih baik menggunakan 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 pengorbanan akurasi dan latensi untuk beberapa model klasifikasi gambar yang 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. Model yang dihosting mencantumkan beberapa model lain yang telah dioptimalkan secara khusus untuk perangkat seluler dan yang disematkan.

Anda dapat melatih ulang model yang terdaftar pada set data Anda sendiri dengan menggunakan pembelajaran transfer. Lihat tutorial pembelajaran transfer kami untuk klasifikasi gambar dan deteksi objek .

Buat profil model Anda

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

Anda juga dapat menggunakan pelacakan TensorFlow Lite untuk membuat profil model dalam aplikasi Android Anda, menggunakan pelacakan 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 mendapati bahwa operator tersebut menghabiskan paling banyak waktu, Anda dapat mengoptimalkan operator tersebut. Skenario ini jarang terjadi karena TensorFlow Lite memiliki versi yang dioptimalkan untuk sebagian besar operator. Namun, Anda mungkin dapat menulis versi yang lebih cepat dari sebuah operasi kustom jika Anda mengetahui batasan di mana operator tersebut dijalankan. Lihat dokumentasi operator khusus kami.

Optimalkan model Anda

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

Lihat dokumen pengoptimalan model kami untuk mengetahui detailnya.

Sesuaikan jumlah utas

TensorFlow Lite mendukung kernel multi-utas untuk banyak operator. Anda dapat menambah jumlah utas dan mempercepat eksekusi operator. Namun, meningkatkan jumlah utas 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 utas dengan menyetel jumlah utas penerjemah. Eksekusi multi-utas, bagaimanapun, datang dengan biaya variabilitas kinerja yang meningkat tergantung pada apa lagi yang dieksekusi secara bersamaan. Ini terutama berlaku untuk aplikasi seluler. Misalnya, pengujian terisolasi mungkin menampilkan 2x percepatan vs single-threaded, tetapi, jika aplikasi lain dijalankan pada saat yang sama, hal itu dapat menghasilkan performa yang lebih buruk daripada single-threaded.

Hapus salinan yang berlebihan

Jika aplikasi Anda tidak dirancang dengan hati-hati, mungkin ada salinan yang berlebihan saat memasukkan input ke dan membaca output 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 peringatan kinerja. Misalnya, Java API jauh lebih cepat jika ByteBuffers digunakan sebagai input .

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 kinerja mungkin tidak ada dalam model tetapi di bagian kode aplikasi yang berinteraksi dengan model. Pastikan Anda membiasakan diri dengan alat pembuatan profil khusus platform dan praktik terbaik untuk platform Anda.

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

TensorFlow Lite telah menambahkan cara baru untuk mengakselerasi model dengan hardware yang lebih cepat seperti GPU, DSP, dan akselerator neural. Biasanya, akselerator ini diekspos melalui submodul delegasi yang mengambil alih bagian dari eksekusi interpreter. TensorFlow Lite dapat menggunakan delegasi dengan:

  • Menggunakan API Jaringan Neural Android. Anda dapat menggunakan 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 menentukan tolok ukur setiap delegasi untuk melihat apakah itu pilihan yang baik untuk aplikasi Anda. Misalnya, jika Anda memiliki model yang sangat kecil, mungkin tidak ada gunanya mendelegasikan model 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 tertentu yang mungkin Anda hadapi. Ajukan masalah di GitHub dengan detail masalah tersebut.