Praktik terbaik penerapan driver NNAPI

Halaman ini menjelaskan praktik terbaik untuk menerapkan driver Neural Networks API (NNAPI) agar NNAPI dapat diadopsi secara luas oleh developer aplikasi.

Memastikan waktu mulai tetap singkat

Jika driver Anda mengubah bobot model saat pertama kali digunakan, pastikan driver mendukung caching kompilasi, yang mengurangi waktu yang digunakan untuk kompilasi saat aplikasi dimulai. Hal ini penting karena aplikasi mungkin menghindari penggunaan akselerasi hardware jika waktu mulai terlalu lama. Misalnya, beberapa aplikasi memiliki bobot lebih dari 100 MB dan mentransformasikannya setiap kali aplikasi diluncurkan akan sia-sia.

Mengurangi latensi minimal

Untuk memastikan bahwa model menggunakan akselerasi hardware, penting untuk mengurangi latensi minimum dalam driver. Banyak aplikasi menggunakan model kecil yang dieksekusi beberapa kali dan jika latensi minimal untuk mengeksekusi workload terlalu tinggi, seperti beberapa milidetik, model dapat menjalankan workload di CPU, yang hanya memerlukan waktu satu atau dua milidetik, bukan menggunakan akselerasi hardware. Berhati-hatilah terhadap sinkronisasi thread yang mahal.

Menggunakan grup NN HAL SchedTune

Mulai Android 11 atau yang lebih tinggi, AOSP menyertakan grup NN HAL SchedTune khusus yang memungkinkan proses NN HAL antar-proses menggunakan core besar, mirip dengan implementasi dalam proses yang sama dalam cgroup top-appyang telah ditentukan sebelumnya. Menggunakan grup SchedTune ini akan mengurangi overhead driver, terutama untuk model kecil.

Untuk menggunakan grup SchedTune, tambahkan baris berikut ke file init.rc dari proses NN HAL:

writepid /dev/stune/nnapi-hal/tasks