Esta página descreve as práticas recomendadas para implementar drivers da API Neural Networks (NNAPI) e permitir a ampla adoção da NNAPI por desenvolvedores de apps.
Mantenha os tempos de inicialização curtos
Se o driver transformar os pesos de um modelo no primeiro uso, verifique se ele oferece suporte ao cache de compilação, o que reduz o tempo usado para compilação quando um app é iniciado. Isso é importante porque os apps podem evitar o uso da aceleração de hardware se os tempos de inicialização forem muito longos. Por exemplo, alguns apps têm mais de 100 MB de pesos, e transformar esses valores toda vez que o app é iniciado é um desperdício.
Reduzir a latência mínima
Para garantir que os modelos usem aceleração de hardware, é importante reduzir a latência mínima nos drivers. Muitos apps usam modelos pequenos que são executados várias vezes. Se a latência mínima para executar uma carga de trabalho for muito alta, como alguns milissegundos, os modelos poderão executar a carga de trabalho na CPU, o que leva apenas um ou dois milissegundos, em vez de usar acelerações de hardware. Tenha cuidado com a sincronização de linhas de execução dispendiosa.
Usar o grupo NN HAL SchedTune
No Android 11 ou versões mais recentes, o AOSP inclui um grupo
NN HAL
SchedTune
dedicado que permite que processos NN HAL entre processos usem núcleos
grandes, semelhante à implementação no mesmo processo no
top-app
cgroup predefinido. Usar esse grupo do SchedTune reduz a sobrecarga do driver, principalmente para modelos pequenos.
Para usar o grupo SchedTune, adicione a seguinte linha ao arquivo init.rc
do
processo da HAL de rede neural:
writepid /dev/stune/nnapi-hal/tasks