In questa pagina vengono descritte le best practice per l'implementazione dell'API Neural Networks (NNAPI) per consentire un'ampia adozione di NNAPI da parte degli sviluppatori di app.
Fai in modo che i tempi di avvio siano brevi
Se il driver trasforma i pesi di un modello al primo utilizzo, assicurati che supporta la memorizzazione nella cache delle compilazioni, che riduce il tempo impiegato per la compilazione all'avvio di un'app. È importante perché le app potrebbero evitare di usare hardware se i tempi di avvio sono troppo lunghi. Ad esempio, alcune app hanno dimensioni superiori a 100 MB di pesi, che verranno poi trasformati ogni volta che l'app lancia uno spreco di risorse.
Riduci la latenza minima
Per garantire che i modelli utilizzino l'accelerazione hardware, è importante ridurre con una latenza minima nei driver. Molte app usano modelli di piccole dimensioni che vengono eseguiti più volte e se la latenza minima per l'esecuzione di un carico di lavoro è troppo elevata, alcuni millisecondi, i modelli potrebbero eseguire il carico di lavoro sulla CPU, richiede uno o due millisecondi, invece di usando accelerazioni hardware. Presta attenzione alla costosa sincronizzazione dei thread.
Usare il gruppo SchedTune dell'NN HAL
A partire da Android 11 o versioni successive, AOSP include una
HAL NN
SchedTune
che consente ai processi HAL NN di utilizzare grandi
come l'implementazione nello stesso processo all'interno
top-app
cgroup. Utilizzo di questo
SchedTune Group riduce l'overhead del conducente, soprattutto per i modelli piccoli.
Per utilizzare il gruppo SchedTune, aggiungi la seguente riga al file init.rc
di
il processo NN HAL:
writepid /dev/stune/nnapi-hal/tasks