Hasta aquí no estoy descubriendo nada nuevo porque ya sabes que, actualmente, esto está sucediendo. Pero como sabes que esto está sucediendo, sabes que es necesaria una infraestructura brutal para recoger, almacenar y procesar esos datos para convertirlos en información. Además, la generación de los modelos de aprendizaje suele llevar bastante tiempo y recursos, justo por la gran cantidad de datos que existen.
El problema surge porque no todos tenemos la capacidad de tener estas mega infraestructuras o simplemente queremos optimizar el proceso. Por estos motivos, tenemos que buscarnos la vida para poder sacar esos datos e información de una manera más modesta y óptima.
Una forma es generar filtros sencillos para los datos dentro de los dispositivos que los capturan y envían, así reducimos la cantidad, pero podemos perder cierta información. Después, los modelos tienen que procesar esta información y generar una salida.
Digamos que este es el proceso “normal” que se sigue. Ahora bien, ¿qué pasaría si los propios dispositivos que recogen y envían los datos, tuvieran modelos optimizados en tamaño y consumo de recursos para filtrar mejor los datos, y generar cierta información previa que hiciera que no se perdiera tanta información? Sería un puntazo, ¿verdad?
Entre otras plataformas que nos ayudan con algoritmos y modelos de aprendizaje, esta TensorFlow. Tiene gran soporte, una comunidad detrás, es código abierto y se utiliza tanto para la investigación como para la generación de productos. Lo que sobra decir es que, quien está detrás de este proyecto es Google. La pega es que los modelos que se generan son bastante grandes y consumen muchos recursos. Están pensados para funcionar en grandes máquinas con recursos muy altos. Pero la era de IoT ha llegado para quedarse y hay que tener en cuenta los limitados recursos de estos dispositivos.
TensorFlow lo sabe y por ello ha sacado TensorFlowLite, que es una evolución de TensorFlowMobile, pero que todavía está en desarrollo y no cubre lo mismo que Mobile. Lo bueno es que los modelos que genera son muy pequeños, tiene muy pocas dependencias y muy buen rendimiento. Al menos, eso es lo que dicen.
Este potencial radica en que para generar los modelos, han utilizado kernels optimizados, preconfiguraciones con activaciones prefusionadas y núcleos cuantificados para generar modelos más pequeños y rápidos, pero igual de eficientes. Otro punto a tener en cuenta es que la forma de crear los modelos es con la librería de serialización FlatBuffers. Esta librería no necesita leer o descomprimir los datos antes de representarlos o leerlos, lo que mejora el uso de los escasos recursos del dispositivo. Además, la idea es que todos los modelos que hemos podido generar en “superordenadores”, los podamos utilizar en Lite, previa conversión. No todo iba a ser tan sencillo. Pero vamos, en principio y sobre el papel, todo es un win win.
Ahora que conoces TensorFlowLite, ¿no te dan ganas de jugar con ello y ver su potencial? Ahora toca cacharrear ; )
Patxi Galán · @patxigg