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.
Riduci i tempi di avvio
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. Fai attenzione alla sincronizzazione dei thread dispendiosa.
Utilizzare il gruppo NN HAL SchedTune
A partire da Android 11 o versioni successive, AOSP include un gruppo dedicato
SchedTune
HAL NN
che consente ai processi HAL NN interprocess di utilizzare i core
grandi, in modo simile all'implementazione nello stesso processo all'interno del predefinito
top-app
cgroup. L'utilizzo di questo gruppo SchedTune riduce l'overhead del driver, in particolare per i modelli di piccole dimensioni.
Per utilizzare il gruppo SchedTune, aggiungi la seguente riga al file init.rc
di
il processo NN HAL:
writepid /dev/stune/nnapi-hal/tasks