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 più di 100 MB di pesi e trasformarli ogni volta che l'app viene lanciata è uno spreco.
Riduci la latenza minima
Per assicurarti che i modelli utilizzino l'accelerazione hardware, è importante ridurre la 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.
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 di NN di utilizzare grandi
come l'implementazione nello stesso processo all'interno
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
del processo HAL NN:
writepid /dev/stune/nnapi-hal/tasks