Terima kasih telah mendengarkan Google I/O. Lihat semua sesi sesuai permintaan Tonton sesuai permintaan

Praktik terbaik kinerja, Praktik terbaik kinerja

Perangkat seluler dan tertanam memiliki sumber daya komputasi yang terbatas, jadi 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 itu

Bergantung pada tugasnya, Anda perlu membuat tradeoff antara kompleksitas dan ukuran model. Jika tugas Anda membutuhkan akurasi tinggi, maka Anda mungkin memerlukan model yang besar dan kompleks. Untuk tugas-tugas yang membutuhkan ketelitian 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 keseimbangan 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 tersemat.

Anda dapat melatih kembali model yang terdaftar 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, adalah praktik yang baik untuk membuat profil dan membandingkan model Anda. Alat benchmark TensorFlow Lite memiliki profiler bawaan yang menunjukkan statistik profil per operator. Ini dapat membantu dalam memahami kemacetan kinerja dan operator mana yang mendominasi waktu komputasi.

Anda juga dapat menggunakan pelacakan TensorFlow Lite untuk membuat profil model di aplikasi Android Anda, menggunakan pelacakan sistem Android standar, dan untuk memvisualisasikan permintaan 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 menghabiskan waktu paling banyak, Anda dapat mempertimbangkan untuk mengoptimalkan operator tersebut. Skenario ini seharusnya 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 kustom .

Optimalkan model Anda

Optimalisasi 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 untuk detailnya.

Tweak 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 mengatur jumlah utas juru bahasa. Eksekusi multi-utas, bagaimanapun, datang dengan biaya peningkatan variabilitas kinerja tergantung pada apa lagi yang dieksekusi secara bersamaan. Ini terutama berlaku untuk aplikasi seluler. Misalnya, pengujian terisolasi mungkin menunjukkan 2x percepatan vs single-threaded, tetapi, jika aplikasi lain dijalankan pada saat yang sama, itu dapat menghasilkan kinerja yang lebih buruk daripada single-threaded.

Hilangkan 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 Instrumen menyediakan banyak informasi profil yang dapat digunakan untuk men-debug aplikasi Anda. Terkadang bug kinerja mungkin tidak ada di model tetapi di bagian kode aplikasi yang berinteraksi dengan model. Pastikan untuk membiasakan diri Anda dengan 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 saraf. Biasanya, akselerator ini diekspos melalui submodul delegasi yang mengambil alih bagian dari eksekusi juru bahasa. TensorFlow Lite dapat menggunakan delegasi dengan:

  • Menggunakan API Jaringan Saraf 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 bekerja lebih baik untuk berbagai jenis model. Beberapa delegasi hanya mendukung model float atau model yang dioptimalkan dengan cara tertentu. Penting untuk membandingkan 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 kinerja tertentu yang mungkin Anda hadapi. Silakan ajukan masalah di GitHub dengan detail masalahnya.