Cuando el código se hace hardware

A raíz de su participación en un curso para aprender a transformar código en hardware, sintetizando el HLS en el código para las FPGAS, el autor reflexiona acerca del enorme potencial de la ingeniería neuromórfica en campos como la optimización, la inteligencia artificial o la neurociencia, pero advierte de que no siempre es la mejor opción: hay que evaluar el coste económico y en tiempo
Juan Ignacio Cantero Ramis
19 de abril de 2022 | Compartir: Compartir en twitter Compartir en LinkedIn
Cuando el código se hace hardware
Bret Kavanaugh / Unsplash

Hace unos meses me presentaron la oportunidad de meterme en un fregado completamente nuevo para mí. No había oído hablar nunca del tema. Era la típica propuesta sobre la que, con el tiempo, te paras a reflexionar y te dices: “en qué estaba pensando cuando dije que sí”. Tengo que reconocer que en el fondo sé la respuesta, pero no deja de ser un poco absurdo. Y es que, cuando te cuesta mucho decir que no a estudiar y hacer algo tecnológico, pese a que no tienes ni idea y a que es una tecnología no muy habitual, cuando te dan además tiempo y medios para ello, es como un caramelo y, bueno, pasa lo que pasa.

La cuestión es que dije que sí. La idea fue hacer un curso de HLS y FPGAS. HLS es el acrónimo de High-Level Synthesis o, lo que es lo mismo, un proceso de transformación de un algoritmo escrito en lenguaje de alto nivel (C o C++) en complejos algoritmos FPGAs. Y FPGA significa Field Programmable Gate Arrays o, en cristiano, dispositivo programable basado en bloques matriciales de semiconductores lógicos configurables. Es decir, una placa con bloques de muchísimos elementos lógicos que permiten sumar, restar, incluir, excluir, hacer operaciones booleanas, etc. En el fondo, aprender a transformar código en hardware. Dos disciplinas que me encantan.

Con el curso me estoy dando cuenta de que todas estas cosas, que aparentemente puede parecer que no sirven para mucho, tienen un potencial brutal y ahora veréis por qué.

Esta tecnología nació, o mejor dicho, se definió por primera vez en 1990 por el informático Carver Mead. Gracias a los avances tecnológicos de aquella época se pudo comprobar que el comportamiento de los transistores y la forma en que se comunican entre sí las neuronas tenían muchas similitudes. Históricamente se pensado que el coste de la computación está directamente relacionado con la energía usada en ella. Sin embargo, Carver y su equipo eran conscientes de que eso no era realmente así. El verdadero coste de una computación es la energía consumida y la sobrecarga del sistema requerida para suministrar esa energía y disipar el calor.

Carver comparó el consumo de un microprocesador de la época y el sistema nervioso animal y vio que en el cerebro existían sobre 1016 sinapsis y que un pulso nervioso llegaba a cada sinapsis sobre 10 veces de promedio. Constató que la disipación energética del cerebro era solo de 106 J, mientras que en micro, realizaba 10 millones de operaciones y usa alrededor de 1W. Eso hace un consumo de 10-7 J por operación y si tenemos en cuenta el resto de componentes, 10-5 J/operacion. Con esto, Carver se propuso simplificar la construcción eliminando todo lo que sobraba y dando lugar a lo que fueron los principios básicos de la ingeniería neuromórfica, o lo que es lo mismo, se planteó la posibilidad de crear un cerebro electrónico que simulase al cerebro real. Bajo ese paraguas, comenzó a trabajar en sintetizadores que, mediante el uso de programación en C/C++, fuesen capaces de crear un sistema hardware muchísimo más rápido y eficiente que lo que un ordenador convencional sería capaz de hacer.

Y lo consiguió. Gracias a su trabajo y al tiempo, esta tecnología se ha desarrollado hasta crear narices artificiales capaces de reconocer olores, sistemas de análisis y reconocimiento de patrones mil veces más rápidos que los mismos ejecutados en ordenadores convencionales (y usando diez mil veces menos energía), sistemas de optimización… Es por tanto una tecnología que aporta muchísimos beneficios, sobre todo en el campo de la optimización, la inteligencia artificial o la neurociencia.

Pero, como todo en esta vida, tiene un pero. Y ese “pero” es que no sirve para todo y no siempre es la mejor opción. Y es así porque eso que parece tan bonito tiene un coste en tiempo y en recursos que puede llegar a ser muy elevado para el beneficio que pueda llegar a dar el sistema final. Y ahora explico por qué con un ejemplo, tal vez un poco forzado, pero que espero que sirva como imagen.

Supongamos que queremos desarrollar una novedosa máquina de café que es capaz de interactuar contigo mediante la voz y, gracias a la IA, proponerte el café que más te apetece en ese momento, sin necesidad de que lo elijas tú. Parece un proyecto perfecto. Tiene que reconocer patrones y usar el aprendizaje automático para ser capaz de ofrecerte lo que tú quieres. Disciplinas optimas para la ingeniería neuromórfica.

Pero ¿qué ocurre si no tienes dinero suficiente para desarrollarla y de momento no encuentras a nadie que apoye tu idea con inversión? Ahí la cosa se complica. Tendrías dos opciones: una es desarrollar una aplicación en Python con algoritmos ya existentes y usando redes neuronales ya creadas, entrenándolas para tal fin. Te costaría tiempo, pero no dinero, ya que con un ordenador y una cámara podrías hacerlo. La segunda opción, si nos decantásemos por el desarrollo del proyecto por ingeniería neuromórfica, debería empezar por comprar una placa que permita sintetizar redes neuronales que sean capaces de entrenarse en tiempo real, con el consiguiente coste económico, además de invertir una gran cantidad de tiempo en el desarrollo del código en C/C++, su depuración, síntesis, optimización y luego posterior grabado a la placa (cosa que no es rápida ni mucho menos).

En definitiva, la ingeniería neuromórfica abre un gran campo de mejora en muchísimos procesos ya que la rapidez, la robustez y la optimización que te da, un ordenador convencional no sería capaz de proporcionarla, pero hay que saber cuándo y cómo usarla ya que existen otras tecnologías que, en algunos casos, te simplifican mucho más la vida.

Juan Ignacio Cantero es experto en desarrollo de la industria 4.0 del Instituto de Tecnología Cerámica y colaborador de Atlas Tecnológico

Scroll al inicio
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad