Praktik terbaik implementasi driver NNAPI

Halaman ini menjelaskan praktik terbaik untuk mengimplementasikan driver Neural Networks API (NNAPI) untuk memungkinkan penggunaan NNAPI secara luas oleh developer aplikasi.

Buat waktu startup tetap singkat

Jika driver Anda mengubah bobot model pada penggunaan pertama, pastikan driver mendukung cache kompilasi, sehingga 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 akan mengubahnya setiap kali aplikasi diluncurkan sia-sia.

Mengurangi latensi minimal

Untuk memastikan bahwa model menggunakan akselerasi hardware, penting untuk mengurangi latensi minimal dalam driver. Banyak aplikasi menggunakan model kecil yang dijalankan beberapa kali dan jika latensi minimal untuk mengeksekusi beban kerja terlalu tinggi, misalnya beberapa milidetik, model mungkin menjalankan beban kerja pada CPU, yang hanya memerlukan waktu satu atau dua milidetik, bukan menggunakan akselerasi hardware. Berhati-hatilah dengan sinkronisasi thread yang mahal.

Menggunakan grup SchedTune NN HAL

Dari Android 11 atau yang lebih tinggi, AOSP menyertakan grup NN HAL SchedTune khusus yang memungkinkan proses NN HAL antar-proses untuk menggunakan inti besar, mirip dengan implementasi proses yang sama dalam cgroup top-app yang telah ditetapkan. Penggunaan grup SchedTune ini 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