Best practice per l'implementazione del driver NNAPI

Questa pagina descrive le procedure consigliate per l'implementazione dei driver Neural Networks API (NNAPI) per consentire un'ampia adozione di NNAPI da parte degli sviluppatori di app.

Tempi di avvio brevi

Se il tuo driver trasforma i pesi di un modello al primo utilizzo, assicurati che il driver supporti la memorizzazione nella cache della compilazione, che riduce il tempo utilizzato per la compilazione all'avvio di un'app. Questo è importante in quanto le app potrebbero evitare di utilizzare l'accelerazione hardware se i tempi di avvio sono troppo lunghi. Ad esempio, alcune app hanno più di 100 MB di peso e trasformarli ogni volta che l'app viene avviata è uno spreco.

Ridurre la latenza minima

Per garantire che i modelli utilizzino l'accelerazione hardware, è importante ridurre la latenza minima nei driver. Molte app utilizzano modelli piccoli che vengono eseguiti più volte e se la latenza minima per eseguire un carico di lavoro è troppo alta, ad esempio pochi millisecondi, i modelli potrebbero eseguire il carico di lavoro sulla CPU, che richiede solo uno o due millisecondi, invece di utilizzare l'hardware accelerazioni. Fare attenzione alla costosa sincronizzazione dei thread.

Utilizzo del gruppo NN HAL SchedTune

Da Android 11 o superiore, AOSP include un NN HAL dedicato SchedTune gruppo che permette interprocesso processi NN HAL da utilizzare grandi nuclei, simile alla realizzazione dello stesso processo nel predefinito top-app cgroup . L'utilizzo di questo gruppo SchedTune riduce il sovraccarico del driver, soprattutto per i modelli piccoli.

Per utilizzare il gruppo SchedTune, aggiungere la seguente riga alla init.rc file del processo NN HAL:

writepid /dev/stune/nnapi-hal/tasks