Praktik terbaik penerapan driver NNAPI

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

Persingkat waktu startup

Jika driver Anda mengubah bobot model pada penggunaan pertama, pastikan driver mendukung cache kompilasi, yang mengurangi waktu yang digunakan untuk kompilasi saat aplikasi dimulai. Hal ini penting karena aplikasi mungkin menghindari penggunaan akselerasi perangkat keras jika waktu pengaktifan terlalu lama. Misalnya, beberapa aplikasi memiliki bobot lebih dari 100 MB dan mengubahnya setiap kali aplikasi diluncurkan adalah hal yang sia-sia.

Kurangi latensi minimal

Untuk memastikan model menggunakan akselerasi perangkat keras, penting untuk mengurangi latensi minimal pada driver. Banyak aplikasi menggunakan model kecil yang dijalankan beberapa kali dan jika latensi minimal untuk menjalankan beban kerja terlalu tinggi, misalnya beberapa milidetik, model mungkin menjalankan beban kerja di CPU, yang hanya memerlukan waktu satu atau dua milidetik, dibandingkan menggunakan perangkat keras akselerasi. Hati-hati dengan sinkronisasi thread yang mahal.

Gunakan grup NN HAL SchedTune

Mulai Android 11 atau lebih tinggi, AOSP menyertakan grup NN HAL SchedTune khusus yang memungkinkan proses antarproses NN HAL menggunakan inti besar, serupa dengan implementasi proses yang sama dalam cgroup top-app yang telah ditentukan sebelumnya. Menggunakan grup SchedTune ini mengurangi overhead pengemudi, 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