Best practice per l'implementazione del driver NNAPI

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