Computación Neuromórfica

Introducción

Ya comentamos en un post alguna cosa sencilla sobre la computación cuántica (superposición, entrelazamiento de bits cuánticos o qubits…) y, por supuesto, principalmente todo el blog se fundamenta en el framework de la computación clásica (algoritmos secuenciales y deterministas, puertas lógicas y álgebra de Bool, bits como unidad básica, arquitectura de Von Neumann…), pero existe (al menos) un tercer tipo de computación que está poniéndose de moda desde hace un tiempo, y es la computación neuromórfica.

[!TIP] La arquitectura de Von Neumann, en la que se basan los computadores clásicos y la gran mayoría del hardware moderno, consta principalmente de una unidad central de procesamiento (CPU), memoria principal (RAM) y unidades de entrada y salida (E/S) o periféricas, donde tanto datos como programas se almacenan en la misma memoria. Excepcionalmente (en menor medida), también usa la arquitectura Harvard, sobre todo para microcontroladores (e.g. ATMega, PIC…) y procesadores de señales (e.g. DSPs), que tiene buses independientes porque usa memorias separadas (un bloque para instrucciones y otro distinto para datos), lo que lo hace más rápido en ciertas tareas, la poder leer una instrucción y guardar un datos simultáneamente, por ejemplo.

vonneumann-vs-neuromorphic

Es un concepto en el que ya se pensaba desde hace tiempo, pero requería algo de investigación teórica y evolución de nuevo hardware para llevar al mundo real. Si pensamos en el cerebro humano, sabemos que las neuronas no son rígidas, ni en el sentido individual (nacen y mueren neuronas constantemente a lo largo de nuestra vida [aunque esta tasa varíe con la edad]) ni en el sentido colectivo (los enlaces y sinapsis entre neuronas y grupos de neuronas se degradan, reorganizan y refuerzan de maneras impredecibles). Por tanto, las redes neuronales clásicas (con pesos y biases) son, en este sentido, una limitación arquitectónica muy simplificada de la realidad. Un modelo más fidedigno necesitaría dar flexibilidad a las conexiones (por lo menos), i.e. la red debería aprender cómo auto-organizarse dinámicamente.

En esta línea de pensamiento, los investigadores han ido desarrollando herramientas alrededor de la computación neuromórfica, que recoge esta idea y (hoy día) es capaz de emular en hardware real el comportamiento biológico del cerebro mediante el procesamiento de impulsos (spikes) y la integración de memoria (e.g. dinamismo de las neuronas) y cálculo (e.g. acción impulsiva de estas) en una misma unidad, eliminando el “cuello de botella” de Von Neumann.

[!WARNING] El cuello de botella de la arquitectura de Von Neumann es una limitación muy conocida y frecuente que se da cuando existe una diferencia de rendimiento reconocible entre la CPU y la memoria. En esta situación, al compartir un mismo bus para datos e instrucciones, la CPU queda inactiva esperando información, ya que su velocidad de procesamiento puede superar con creces la capacidad de transferencia de la memoria (ya sea desde memoria volátil o no volátil).

Además, hay evidencias de que la computación neuromórfica permite la ejecución de modelos de IA más eficientes y sostenibles, lo que acelera el interés institucional en ella. Y los avances en investigación han evolucionado efectivamente hasta hoy día, cuando ya existen sistemas de escala masiva y aplicaciones comerciales edge para desarrollar soluciones basadas en ello.

Sobre este enfoque

Expuesto en 2024, Hala Point es el sistema de computación neuromórfica más grande del mundo, desarrollado por Intel, en los Laboratorios Nacionales Sandía 🍉, que utiliza 1152 procesadores neuromórficos Loihi 2 / 3 para emular 1150 millones de neuronas (el equivalente al cerebro de un búho 🦉), logrando una eficiencia energética (aprox. > 15 TOPS/W) de hasta 50 veces superior al equiparable en GPUs convencionales (con cargas de trabajo similares).

En el borde, destacan procesadores como el Akida de Brainchip, que se integran en soluciones IoT funcionales e incluso en vehículos de Mercedes, permitiendo inferencia de altas prestaciones en tiempo real sin depender de la nube.

Akida

Otros procesadores neuromórficos son NorthPole de IBM (arquitectura digital de alta densidad para inferencia de visión y lenguaje), SpiNNaker 1 / 2 de la Univ. de Manchester y la Univ. de Dresden (arquitectura masivamente paralela específicamente diseñada y optimizada para simulación o modelización cerebral), o Xylo de SynSense (específicamente para audio, señales eléctricas o nerviosas y sensores de baja potencia).

¿En qué conceptos se basa la arquitectura neuromórfica (neuromorfología)?:

Librerías y frameworks

¿Y qué librerías podemos utiliar tanto para programar el hardware (silicio) neuromórfico así como para emularlo en computadores clásicos?:

Librería / Framework Función Principal Enfoque de Programación Hardware Real
Lava (Intel) Orquestación y despliegue de aplicaciones neuromórficas de extremo a extremo. Agnóstico: permite desarrollar algoritmos que corren tanto en CPUs como en chips Loihi. ✅ Sí (Optimizado para Loihi 1/2)
snntorch Entrenamiento de SNNs mediante gradiente descendente (backpropagation). Deep Learning: basado en PyTorch; ideal para investigadores de IA clásica. ❌ No directamente (requiere exportar el modelo)
Nengo Simulación de sistemas cognitivos complejos y funciones matemáticas a gran escala. Arquitectura: usa el NEF (Neural Engineering Framework) para modelar el cerebro. ✅ Sí (Loihi, SpiNNaker, FPGAs)
SpikingJelly Framework de aprendizaje profundo para SNNs con soporte para aceleración en GPU. PyTorch-based: muy popular para visión artificial y procesamiento de señales. ⚠️ Solo vía exportación (e.g. a chips de SynSense)
Rockstar Optimización de hiperparámetros y ajuste de redes de impulsos en tiempo real. Ajuste Fino: se enfoca en que la red sea eficiente y precisa bajo restricciones. ❌ Principalmente simulación/emulación

Trabajo futuro

Entre las posibles líneas de trabajo e investigación, se abren las siguientes:

Como desventaja, actualmente aún es un problema abierto qué algoritmos diseñar y usar para entrenar las redes neuromórficas tan eficazmente como hace el backpropagation y sus variantes en las redes tradicionales.