Práticas recomendadas para a implementação do driver da NNAPI

Esta página descreve as práticas recomendadas para implementar a API Neural Networks (NNAPI). para permitir uma ampla adoção da NNAPI por desenvolvedores de apps.

Reduza os tempos de inicialização

Se o driver transformar os pesos de um modelo no primeiro uso, certifique-se de que o oferece suporte ao armazenamento em 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 de hardware aceleração se os tempos de inicialização forem muito longos. Por exemplo, alguns apps têm mais de 100 MB de pesos e transformá-los sempre que o app lançamentos é um desperdício.

Reduzir a latência mínima

Para garantir que os modelos usem aceleração de hardware, é importante reduzir o latência mínima nos drivers. Muitos apps usam pequenos modelos executados várias vezes e se a latência mínima para executar uma carga de trabalho for muito alta, como alguns milésimos de segundo, os modelos podem executar a carga de trabalho na CPU, leva um ou dois milissegundos, em vez de usando aceleração de hardware. Tenha cuidado com sincronizações de linhas de execução dispendiosas.

Usar o grupo NN HAL SchedTune

No Android 11 ou versões mais recentes, o AOSP inclui um NN HAL SchedTune (em inglês) que permite que processos NN HAL entre processos usem grandes núcleos, semelhante à implementação do mesmo processo dentro dos top-app cgroup. Usar este O grupo SchedTune reduz a sobrecarga do driver, especialmente para modelos pequenos.

Para usar o grupo SchedTune, adicione a linha a seguir ao arquivo init.rc de processo da NN HAL:

writepid /dev/stune/nnapi-hal/tasks