¡Reserva! Google I / O regresa del 18 al 20 de mayo Regístrese ahora
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Mejores prácticas de desempeño

Los dispositivos móviles e integrados tienen recursos computacionales limitados, por lo que es importante mantener la eficiencia de los recursos de su aplicación. Hemos compilado una lista de mejores prácticas y estrategias que puede utilizar para mejorar el rendimiento de su modelo de TensorFlow Lite.

Elija el mejor modelo para la tarea

Dependiendo de la tarea, necesitará hacer una compensación entre la complejidad y el tamaño del modelo. Si su tarea requiere una alta precisión, es posible que necesite un modelo grande y complejo. Para tareas que requieren menos precisión, es mejor usar un modelo más pequeño porque no solo usan menos espacio en disco y memoria, sino que también son generalmente más rápidos y más eficientes energéticamente. Por ejemplo, los gráficos a continuación muestran las compensaciones de precisión y latencia para algunos modelos de clasificación de imágenes comunes.

Graph of model size vs accuracy

Graph of accuracy vs latency

Un ejemplo de modelos optimizados para dispositivos móviles son MobileNets , que están optimizados para aplicaciones de visión móvil. Los modelos alojados enumeran varios otros modelos que se han optimizado específicamente para dispositivos móviles e integrados.

Puede volver a capacitar los modelos enumerados en su propio conjunto de datos mediante el aprendizaje por transferencia. Consulte nuestro tutorial de aprendizaje por transferencia para la clasificación de imágenes y la detección de objetos .

Perfila tu modelo

Una vez que haya seleccionado un modelo candidato que sea adecuado para su tarea, es una buena práctica perfilar y comparar su modelo. La herramienta de evaluación comparativa TensorFlow Lite tiene un generador de perfiles integrado que muestra estadísticas de perfiles por operador. Esto puede ayudar a comprender los cuellos de botella del rendimiento y qué operadores dominan el tiempo de cálculo.

También puede usar el seguimiento de TensorFlow Lite para perfilar el modelo en su aplicación de Android, utilizando el seguimiento estándar del sistema Android y para visualizar las invocaciones de operador por tiempo con herramientas de creación de perfiles basadas en GUI.

Perfilar y optimizar operadores en el gráfico

Si un operador en particular aparece con frecuencia en el modelo y, según el perfil, encuentra que el operador consume la mayor cantidad de tiempo, puede considerar la optimización de ese operador. Este escenario debería ser poco común, ya que TensorFlow Lite tiene versiones optimizadas para la mayoría de los operadores. Sin embargo, es posible que pueda escribir una versión más rápida de una operación personalizada si conoce las restricciones en las que se ejecuta el operador. Consulte nuestra documentación de operador personalizada .

Optimiza tu modelo

La optimización de modelos tiene como objetivo crear modelos más pequeños que generalmente son más rápidos y más eficientes energéticamente, para que puedan implementarse en dispositivos móviles. TensorFlow Lite admite múltiples técnicas de optimización, como la cuantificación.

Consulte nuestros documentos de optimización de modelos para obtener más detalles.

Ajustar el número de subprocesos

TensorFlow Lite admite kernels multiproceso para muchos operadores. Puede aumentar el número de subprocesos y acelerar la ejecución de operadores. Sin embargo, aumentar el número de subprocesos hará que su modelo utilice más recursos y potencia.

Para algunas aplicaciones, la latencia puede ser más importante que la eficiencia energética. Puede aumentar el número de subprocesos configurando el número de subprocesos del intérprete. Sin embargo, la ejecución de subprocesos múltiples tiene el costo de una mayor variabilidad del rendimiento dependiendo de qué más se ejecute al mismo tiempo. Este es particularmente el caso de las aplicaciones móviles. Por ejemplo, las pruebas aisladas pueden mostrar una aceleración del doble en comparación con un solo subproceso, pero, si se ejecuta otra aplicación al mismo tiempo, puede resultar en un peor rendimiento que el de un solo subproceso.

Elimina copias redundantes

Si su aplicación no está diseñada cuidadosamente, puede haber copias redundantes al alimentar la entrada y leer la salida del modelo. Asegúrese de eliminar las copias redundantes. Si está utilizando API de nivel superior, como Java, asegúrese de revisar cuidadosamente la documentación para conocer las advertencias de rendimiento. Por ejemplo, la API de Java es mucho más rápida si se utilizan ByteBuffers como entradas .

Perfile su aplicación con herramientas específicas de la plataforma

Las herramientas específicas de la plataforma como el generador de perfiles de Android y los instrumentos proporcionan una gran cantidad de información de creación de perfiles que se puede utilizar para depurar su aplicación. A veces, el error de rendimiento puede no estar en el modelo, sino en partes del código de la aplicación que interactúan con el modelo. Asegúrese de familiarizarse con las herramientas de creación de perfiles específicas de la plataforma y las mejores prácticas para su plataforma.

Evalúe si su modelo se beneficia del uso de aceleradores de hardware disponibles en el dispositivo

TensorFlow Lite ha agregado nuevas formas de acelerar modelos con hardware más rápido como GPU, DSP y aceleradores neuronales. Normalmente, estos aceleradores se exponen a través de submódulos delegados que se hacen cargo de partes de la ejecución del intérprete. TensorFlow Lite puede usar delegados de la siguiente manera:

  • Usando la API de redes neuronales de Android. Puede utilizar estos backends de acelerador de hardware para mejorar la velocidad y la eficiencia de su modelo. Para habilitar la API de redes neuronales, consulte la guía de delegados de NNAPI .
  • El delegado de GPU está disponible en Android e iOS, usando OpenGL / OpenCL y Metal, respectivamente. Para probarlos, consulte el tutorial y la documentación del delegado de GPU .
  • El delegado de Hexagon está disponible en Android. Aprovecha Qualcomm Hexagon DSP si está disponible en el dispositivo. Consulte el tutorial para delegados de Hexagon para obtener más información.
  • Es posible crear su propio delegado si tiene acceso a hardware no estándar. Consulte Delegados de TensorFlow Lite para obtener más información.

Tenga en cuenta que algunos aceleradores funcionan mejor para diferentes tipos de modelos. Algunos delegados solo admiten modelos flotantes o modelos optimizados de una manera específica. Es importante comparar a cada delegado para ver si es una buena opción para su aplicación. Por ejemplo, si tiene un modelo muy pequeño, puede que no valga la pena delegar el modelo a la API de NN o a la GPU. Por el contrario, los aceleradores son una excelente opción para modelos grandes que tienen una alta intensidad aritmética.

Necesitas más ayuda

El equipo de TensorFlow se complace en ayudar a diagnosticar y abordar problemas de rendimiento específicos que pueda enfrentar. Presenta un problema en GitHub con detalles del problema.