Prácticas recomendadas para la implementación del controlador de NNAPI

En esta página, se describen las prácticas recomendadas para implementar la API de Neural Networks (NNAPI) controladores para permitir que los desarrolladores de apps adopten ampliamente la NNAPI.

Haz que los tiempos de inicio sean cortos

Si el controlador transforma los pesos de un modelo en el primer uso, asegúrate de que El controlador admite el almacenamiento en caché de compilación, lo que reduce el tiempo que se usa para la compilación. cuando se inicia una app. Esto es importante, ya que las apps podrían evitar el uso de hardware la aceleración si los tiempos de inicio son demasiado largos. Por ejemplo, algunas apps tienen más de 100 MB de pesos y transformarlos cada vez que la app es un desperdicio.

Reduce la latencia mínima

Para garantizar que los modelos usen la aceleración de hardware, es importante reducir el y la latencia mínima en los controladores. Muchas apps usan modelos pequeños que se ejecutan varias veces y, si la latencia mínima para ejecutar una carga de trabajo es demasiado alta, como unos milisegundos, los modelos pueden ejecutar la carga de trabajo en la CPU, que solo tarda uno o dos milisegundos, en lugar de con aceleración de hardware. Ten cuidado con la costosa sincronización de subprocesos.

Cómo usar el grupo NN HAL SchedTune

A partir de Android 11 o versiones posteriores, el AOSP incluye HAL DE NN SchedTune que permite que los procesos de la NN HAL entre procesos usen de manera similar a la implementación en el mismo proceso top-app cgroup: Uso El grupo SchedTune reduce la sobrecarga del controlador, especialmente para modelos pequeños.

Para usar el grupo SchedTune, agrega la siguiente línea al archivo init.rc de el proceso NN HAL:

writepid /dev/stune/nnapi-hal/tasks