Bonnes pratiques d'implémentation du pilote NNAPI

Cette page décrit les bonnes pratiques à suivre pour implémenter l'API Neural Networks (NNAPI). pilotes pour permettre une adoption large de NNAPI par les développeurs d'applications.

Réduire les temps de démarrage

Si votre pilote transforme les pondérations d'un modèle lors de sa première utilisation, assurez-vous que Le pilote prend en charge la mise en cache de la compilation, ce qui réduit le temps consacré à la compilation au démarrage d'une application. C'est important, car les applis peuvent éviter d'utiliser du matériel d'accélération 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 exécutés et si la latence minimale d'exécution d'une charge de travail est trop élevée, en quelques millisecondes, les modèles peuvent exécuter la charge de travail sur le processeur, prend une ou deux millisecondes, au lieu à l'aide de l'accélération matérielle. 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 une NN HAL SchedTune qui permet aux processus NN HAL inter-processus d'utiliser de grandes comme l'implémentation sur le même processus dans les top-app cgroup. 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