Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini menjelaskan praktik terbaik untuk menerapkan driver Neural Networks API (NNAPI)
agar NNAPI dapat diadopsi secara luas oleh developer aplikasi.
Mempertahankan waktu startup yang 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 startup terlalu lama. Misalnya, beberapa aplikasi memiliki
bobot lebih dari 100 MB dan mengubahnya setiap kali aplikasi
diluncurkan akan membuang-buang waktu.
Mengurangi latensi minimal
Untuk memastikan 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 menjalankan beban kerja terlalu tinggi,
seperti beberapa milidetik, model mungkin menjalankan beban kerja di CPU, yang hanya
memerlukan satu atau dua milidetik, bukan
menggunakan akselerasi hardware. Berhati-hatilah dengan sinkronisasi thread yang mahal.
Menggunakan grup NN HAL SchedTune
Mulai Android 11 atau yang lebih tinggi, AOSP menyertakan grup
SchedTune
HAL NN
khusus yang memungkinkan proses HAL NN antarproses menggunakan core
besar, mirip dengan implementasi proses yang sama dalam
cgrouptop-app yang 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
proses NN HAL:
writepid /dev/stune/nnapi-hal/tasks
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# NNAPI driver implementation best practices\n\n| **Deprecated:** Starting in Android 15, the\n| [NNAPI (NDK API)](https://developer.android.com/ndk/guides/neuralnetworks) is deprecated. The Neural Networks HAL interface\n| continues to be supported.\n|\n| For more information, see the\n| [NNAPI Migration Guide](https://developer.android.com/ndk/guides/neuralnetworks/migration-guide).\n\nThis page describes best practices for implementing Neural Networks API (NNAPI)\ndrivers to allow for broad adoption of the NNAPI by app developers.\n\nKeep startup times short\n------------------------\n\nIf your driver transforms the weights of a model on first use, make sure the\ndriver supports compilation caching, which reduces the time used for compilation\nwhen an app starts. This is important as apps might avoid using hardware\nacceleration if start-up times are too long. For example, some apps have\nmore than 100 MB of weights and transforming these each time the app\nlaunches is wasteful.\n\nReduce minimal latency\n----------------------\n\nTo ensure that models use hardware acceleration, it's important to reduce the\nminimal latency in drivers. Many apps use small models that are executed\nmultiple times and if the minimal latency to execute a workload is too high,\nsuch as a few milliseconds, models might run the workload on the CPU, which only\ntakes one or two milliseconds, instead of\nusing hardware accelerations. Be careful of costly thread synchronization.\n\nUse the NN HAL SchedTune group\n------------------------------\n\nFrom Android 11 or higher, AOSP includes a dedicated\nNN HAL\n[SchedTune](https://android.googlesource.com/kernel/msm/+/android-msm-marlin-3.18-nougat-dr1/Documentation/scheduler/sched-tune.txt)\ngroup that allows interprocess NN HAL processes to use big\ncores, similar to same-process implementation within the predefined\n`top-app` [cgroup](/docs/core/perf/cgroups). Using this\nSchedTune group reduces driver overhead, especially for small models.\n\nTo use the SchedTune group, add the following line to the `init.rc` file of\nthe NN HAL process: \n\n writepid /dev/stune/nnapi-hal/tasks"]]