Best practice per l'implementazione del driver NNAPI

In questa pagina vengono descritte le best practice per l'implementazione dei driver 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 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.

Usare il gruppo SchedTune dell'NN HAL

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 nello stesso processo all'interno del cgroup predefinito.top-app 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