Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Mejores prácticas de implementación de controladores NNAPI

Esta página describe las mejores prácticas para implementar controladores de API de redes neuronales (NNAPI) para permitir una amplia adopción de la NNAPI por parte de los desarrolladores de aplicaciones.

Mantener los tiempos de inicio cortos

Si su controlador transforma los pesos de un modelo en el primer uso, asegúrese de que el controlador admita el almacenamiento en caché de compilación, lo que reduce el tiempo utilizado para la compilación cuando se inicia una aplicación. Esto es importante ya que las aplicaciones pueden evitar el uso de la aceleración de hardware si los tiempos de inicio son demasiado largos. Por ejemplo, algunas aplicaciones tienen más de 100 MB de peso y transformarlos cada vez que se inicia es un desperdicio.

Reducir la latencia mínima

Para garantizar que los modelos utilicen la aceleración de hardware, es importante reducir la latencia mínima en los controladores. Muchas aplicaciones 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 pocos milisegundos, los modelos pueden ejecutar la carga de trabajo en la CPU, que solo toma uno o dos milisegundos, en lugar de usar hardware. aceleraciones. Tenga cuidado con la costosa sincronización de subprocesos.

Uso del grupo NN HAL SchedTune

De androide 11 o superior, AOSP incluye un NN HAL dedicada SchedTune grupo que permite entre procesos procesos NN HAL a utilizar grandes núcleos, de forma similar a la aplicación del mismo proceso dentro de la predefinido top-app cgroup . El uso de este grupo SchedTune reduce la sobrecarga del controlador, especialmente para modelos pequeños.

Para utilizar el grupo SchedTune, agregue la línea siguiente a la init.rc archivo del proceso NN HAL:

writepid /dev/stune/nnapi-hal/tasks