Pentium dual core del 2009 para ML, Jupyter, Deep Learning with Tensorflow & Keras, Tensorflow Serve en el 2022

 


Utilizando un Pentium Dual Core para procesos de Inteligencia Artificial

Quien me conoce, sabe que me gusta reciclar y dar uso a esos ordenadores que tenemos medio olvidados, que pensamos que ya no nos van a servir para nada.

En este sentido, he hecho realidad lo que es todo un reto. En la inmobiliaria de Calella de Palafrugell me han dejado reciclar un ordenador del año 2009 para realizar procesos relacionados con Inteligencia Artificial. Un 10 por ellos para creer en estos proyectos y entrar en la era 4.0.

Las características del PC:

* CPU 64b Year 2009
*  - Pentium(R) Dual-Core  CPU      E5400  @ 2.70GHz
* MEM: 3GB
* SWAP: 8GB
* HD: ST3250820A 100Gb
* GPU: Nvidia Geforce 210 ver 340.52
* Audio Asus, Realtek Hd Hight Definition Audio
* Ethernet: Atheros AR8121 / AR8113 / AR8114

* OS: Ubuntu 22.04 LTS (jammy) 64b
* Tensorflow 1.5 (For compatibility with old CPU'S)
* Keras 2.1.4 (For compatibility with Tensorflow 1.5 old CPU'S)
* PHP 8.1
* Python2.7 (For compatibility with tensorflow & Keras old CPU'S)
* Docker

Este PC se encarga de realizar el Deep Learning de un dataset de más de 13000 imágenes, con el objetivo de clasificarlas. Para hacerlo utiliza Tensorflow & Keras, ofreciendo además el servicio Jupyter para poder realizar estas tareas externamente mediante un simple navegador.

Este procesador no tenía las instrucciones AVX obligatorias para las versiones de Tensorflow2.0+, así que se ha tenido que utilizar vesiones anteriores de Tensorflow y Keras para que resultasen compatibles con el hardware.

Otro problema que me encontraba era la falta de memoria a causa de la cantidad de párametros a calcular en las neuronas de salida. Esta máquina dispone de tan solo 3Gb. La solución ha sido ampliar la swap (que simula tener más memória), hasta 8Gb en lugar de los 2Gb que tiene por defecto. Si bien hace que el proceso sea más lento, cuando Tensorflow la utiliza, lo hace momentáneamente, así que tampoco influye mucho en la velocidad. Con un poquito de paciencia todo se lleva más que bien.

Aquí una captura del proceso Jupyter:



En la Imagen de la cabecera se aprecia una captura del proceso de aprendizaje (para cada época tarda 70h. aproximadamente).

El sistema además ofrece el servicio de Tensorflow Serve.

Realiza mediante PHP también un proceso de captura online de imágenes, prepararlas con instrucciones en un subproceso en Python2.7, realiza la petición al Tensorflow Serve y envía los resultados de la clasificación a la base de datos en Internet para verificar el correcto proceso (o no) de la clasificación. Alcanza cerca de un 80% de aciertos, por lo que es bueno. También os digo que será mejor cuando después de realizar esta clasificación, el sistema aprenda directamente mediante las imágenes que yo mismo he clasificado.

Una captura del proceso de clasificación:


El modelo utiliza 47 características como outputs. Teniendo en cuenta que es un ordenador antiguo, que está realizando proceso de Deep Learning y además prediciendo, el proceso de predicción tarda unos 12 segundos de media (Entre que descarga la imagen desde internet, preparar los inputs con el proceso de Python, tensorflow serve realiza la predicción, y el sistema envía los outputs a la base de datos).

Mientras, se realizan procesos de monitorización, como la temperatura de la CPU y el uso de los procesadores:



Analizando los primeros resultados, hay que tener en cuenta que el dataset para realizar el train, se ha basado en datasets descargados de internet. Se realizó un filtro sobre todas las imágenes para descartar algunas y para que se asemejen lo más posible a las situaciones reales de la empresa. Los fallos más comunes de la predicción son: Terraza con Piscina (por la similitud en el suelo), Lavabo con cocina (por similitud en los azulejos). También suele confundir comedor con habitación (por la similitud entre un sofá y una cama). O por ejemplo, comedor lo confunde con cocina (En muchas cocinas hay mesas con sillas, así que es normal también). Poco a poco se irá perfeccionando el sistema con nuevos datasets más fiables,  y espero conseguir resultados muchísimo más acertados. Hay que tener también en cuenta que el proceso de aprendizaje solo ha pasado 2 veces por el dataset (2 épocas). Hay que probar con más épocas para ver los resultados sin que el sistema haga un sobre aprendizaje de los mismos.

La lección que podemos aprender: Aunque las máquinas de hoy en día superen con creces el rendimiento de las antiguas, y, si bien es cierto, alcanzan velocidades de vértigo que ahorraría en electricidad, no hay por que invertir en más tecnología cuando ya disponemos de ella y que no utilizamos para nada (que se traduce en más producción de co2, gasto de energía, etc...). Podemos reaprovechar todos los recursos disponibles, siempre que no sea para situaciones críticas. Demos una segunda vida a esas máquinas que están deseando volver a trabajar. Al fin y al cabo estamos siempre en la rueda de comprar lo nuevo y tirar lo viejo, así que, yo apuesto por el reciclaje y estar al día a la vez.

¿Quien le hubiera dicho a ese pc que estaría hoy de vuelta 'a la vida' realizando predicciones y procesos de aprendizaje profundo en el 2022?

Comentarios

Artículos más populares

Clase en PHP para encender/apagar LED en Raspberry pi

Raspberry Pi. Encender/Apagar LED desde PHP. Acceso directo a los puertos GPIO ultrarápido.

Ja es poden veure els programes de 'REDES' de TVE2 per internet