Comparación de inferencia en imágenes con host CPU & dispositivo Coral Acelerador & TFlite

¿Qué sucedería si preparamos un experimento que comparara un modelo con características similares usando CPU de escritorio tradicional  y  por otro lado, una  EDGE TPU?
Cada Edge TPU es capaz de ejecutar 4 trillones de operations (tera-operaciones) por segundo (TOPS), utilizando 0.5 watts por cada TOPS (2 TOPS por watt). como se traduce este rendimientopara su aplicación dependerá de una variedad de factores. Cada modelro de red neuronal tiene diferentes requerimientos, y si stá utilizando un dispositivo acelerador USB, el rendimeinto total también variará dependiento el CPU host, la velocidad de USB y otros recursos del sistema. referencia (english)
Exploremos ahora una experiencia  utilizando el acelerador USB,

tomando contacto con el dispositivo


Comenzando el experimento

Al explorar la tabla de "tiempo por inferencia", tengo curiosidad por experimentar con la inferencia de modelos, utilizando una CPU de escritorio y con la misma CPU host delegar la inferencia al dispositivo Coral. Entonces, el desafío inicial aquí es explorar las diferencias entre ambos entornos utilizando el experimento más homogéneo posible.


La pregunta inicial está relacionada con el método de inferencia

Edge TPU es compatible solo con los modelos TensorFlow Lite. Por lo tanto, generalmente debemos entrenar un modelo TensorFlow, convertirlo a TensorFlow Lite y compilarlo para Edge TPU. referencia (english)
Para este experimento, seleccionaré un modelo general y el equivalente quantized  ... o sea preparado para Edge TPU y una implementación para Python.

¿Dónde puedo descargar un modelo?

Por supuesto, podemos usar TF Hub y explorar diferentes versiones de modelos, también en la página de Coral es posible ver muchos modelos quantized.

Ahora comencemos el experimento, decidí explorar  la arquitectura del modelo MobileNet v2 y 224 como tamaño de imagen.

Intentaré seguir 2 pasos simples:
  • Crear una implementación para analizar imagenes utilizando CPU de escritorio.
  • Crear una implementación para usar el acelerador Edge TPU Coral y analizar imágenes.
Finalmente, debemos comparar los resultados con la tabla inicial propuesta. *señalando que usaremos un host de tipo CPU diferente.

Implementación

Para el escenario inicial, creé un script python simple para explorar la inferencia en CPU de escritorio, también como alternativa, propuse una implementación equivalente en Colab. (solución integrada con TensorFlow Hub para obtener el modelo)

Para la aplicación Edge TPU, utilicé un acelerador Coral y aquí está la solución creada para hacer las inferencias.* en el repositorio de código, agregué un archivo "* .sh" para completar los requisitos iniciales y simplificar la representación del experimento.

Conclusiones

Finalmente, como mencioné, el rendimiento de la inferencia depende del tipo de CPU, USB y rendimiento del host, pero la ejecución en general con Edge TPU es más de 10 veces más rápida.

Imagenes 224x224 , arquitectura MobileNet v2 con CPU

  • i7–7500U CPU 2.70GHz × 2
  • Linux kernel: 5.3.0–28-generic
  • Promedio en inferencias: 50 Milliseconds

Imagenes 224x224 , arquitectura MobileNet v2 quantized con Coral Edge TPU accelerator.

  • Promedio en inferencias: 2.6 Milliseconds

Bien!! muy similar a la tabla de rendimiento inicial :). Ahora  puedes experimentar a tu gusto, usando la versión provista o variando modelos.

Este es solo un ejemplo simple, pero ... ¿quieres ver más proyectos usando dispositivos Coral? Echa un vistazo a este teachable-sorter


Articulo original (english)

Comentarios

Entradas más populares de este blog

Modelando relaciones en UML, un acercamiento a las Asociaciones

Utilizando Intents implícitos para crear actividades

Secuencias…Modelado indispensable