Questa pagina descrive le best practice per l'implementazione dei driver dell'API Neural Networks (NNAPI) per consentire un'ampia adozione dell'API 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 il driver supporti la memorizzazione nella cache di compilazione, che riduce il tempo utilizzato per la compilazione all'avvio di un'app. È importante perché le app potrebbero evitare di usare l'accelerazione hardware se i tempi di avvio sono troppo lunghi. Ad esempio, alcune app hanno più di 100 MB di pesi e la loro trasformazione ogni volta che viene avviata è uno spreco di peso.
Riduci la latenza minima
Per garantire che i modelli utilizzino l'accelerazione hardware, è importante ridurre la latenza minima nei driver. Molte app utilizzano modelli di piccole dimensioni che vengono eseguiti più volte e se la latenza minima per l'esecuzione di un carico di lavoro è troppo elevata, ad esempio pochi millisecondi, i modelli potrebbero eseguire il carico di lavoro sulla CPU, che richiede solo uno o due millisecondi, invece di utilizzare accelerazioni hardware. Presta attenzione alla costosa sincronizzazione dei thread.
Utilizzare il gruppo NN HAL SchedTune
A partire da Android 11 o versioni successive, AOSP include un gruppo
SchedTune
NN HAL dedicato che consente ai processi NN HAL di inter-elaborazione di utilizzare big
core, in modo simile all'implementazione sullo stesso processo all'interno del
top-app
cgroup predefinito. L'utilizzo di questo gruppo SchedTune riduce il carico di lavoro del conducente, soprattutto per i modelli di piccole dimensioni.
Per utilizzare il gruppo SchedTune, aggiungi la seguente riga al file init.rc
del processo NN HAL:
writepid /dev/stune/nnapi-hal/tasks