Cette page décrit les bonnes pratiques à suivre pour implémenter l'API Neural Networks (NNAPI). pour permettre aux développeurs d'applications d'adopter largement la NNAPI.
Réduire les temps de démarrage
Si votre pilote transforme les poids d'un modèle lors de la première utilisation, assurez-vous qu'il est compatible avec le cache de compilation, ce qui réduit le temps de compilation au démarrage d'une application. Cela est important, car les applications peuvent éviter d'utiliser l'accélération matérielle si les temps de démarrage sont trop longs. Par exemple, certaines applications ont plus de 100 Mo de pondérations et en les transformant chaque fois que l'application de lancements est du gaspillage.
Réduire la latence minimale
Pour s'assurer que les modèles utilisent l'accélération matérielle, il est important de réduire une latence minimale dans les pilotes. De nombreuses applications utilisent de petits modèles qui sont exécutés plusieurs fois. Si la latence minimale pour exécuter une charge de travail est trop élevée (par exemple, quelques millisecondes), les modèles peuvent exécuter la charge de travail sur le processeur, ce qui ne prend qu'un ou deux millisecondes, au lieu d'utiliser des accélérations matérielles. Faites attention à la synchronisation des threads coûteuse.
Utiliser le groupe SchedTune HAL du réseau de neurones
À partir d'Android 11 ou version ultérieure, AOSP inclut un groupe SchedTune HAL NN dédié qui permet aux processus HAL NN inter-processus d'utiliser de gros cœurs, semblable à l'implémentation du même processus dans le cgroup top-app
prédéfini. Utilisation
Le groupe SchedTune réduit la surcharge de travail du conducteur, en particulier pour les petits modèles.
Pour utiliser le groupe SchedTune, ajoutez la ligne suivante au fichier init.rc
de
le processus NN HAL:
writepid /dev/stune/nnapi-hal/tasks