Está en la página 1de 3

Marco de software de lava

Un marco de software para la computación neuromórfica

Introducción
Lava es un marco de software de código abierto para desarrollar aplicaciones de
inspiración neurológica y mapearlas en hardware neuromórfico. Lava proporciona a los
desarrolladores las herramientas y abstracciones para desarrollar aplicaciones que
explotan al máximo los principios de la computación neuronal. Restringidas de esta
manera, como el cerebro, las aplicaciones de Lava permiten que las plataformas
neuromórficas procesen de manera inteligente, aprendan y respondan a los datos del
mundo real con grandes ganancias en eficiencia energética y velocidad en comparación
con las arquitecturas informáticas convencionales.

La visión detrás de Lava es una base de código abierta y desarrollada por la comunidad
que une la gama completa de enfoques perseguidos por la comunidad informática
neuromórfica. Proporciona una estructura modular, componible y extensible para que
los investigadores integren sus mejores ideas en una biblioteca de algoritmos en
crecimiento, al tiempo que introduce nuevas abstracciones que permiten a otros
construir sobre esas ideas sin tener que reinventarlas.

Para este propósito, Lava permite a los desarrolladores definir procesos versátiles como


neuronas individuales, redes neuronales, programas codificados convencionalmente,
interfaces para dispositivos periféricos y puentes a otros marcos de software. Lava
permite encapsular colecciones de estos procesos en módulos y agregarlos para formar
aplicaciones neuromórficas complejas. La comunicación entre los procesos de Lava
utiliza el paso de mensajes basado en eventos, donde los mensajes pueden variar desde
picos binarios hasta paquetes del tamaño de un kilobyte.

El comportamiento de los procesos de Lava está definido por uno o más modelos de


implementación , donde se pueden especificar diferentes modelos para diferentes
plataformas de ejecución ("backends"), diferentes grados de precisión y para fines de
modelado algorítmico de alto nivel. Por ejemplo, un proceso de red neuronal
excitatoria/inhibitoria puede tener diferentes modelos de implementación para un chip
neuromórfico analógico en comparación con un chip neuromórfico digital, pero los dos
modelos podrían compartir una definición de proceso "E/I" común con las
implementaciones de cada modelo determinadas por una entrada común parámetros

Lava es independiente de la plataforma, por lo que las aplicaciones pueden crear


prototipos en CPU/GPU convencionales e implementarse en arquitecturas de sistemas
heterogéneas que abarcan tanto procesadores convencionales como una gama de chips
neuromórficos como Loihi de Intel. Para compilar y ejecutar procesos para diferentes
backends, Lava se basa en una interfaz de bajo nivel llamada Magma con un potente
compilador y una biblioteca de tiempo de ejecución. Con el tiempo, la comunidad de
desarrolladores de Lava puede mejorar Magma para apuntar a plataformas
neuromórficas adicionales más allá de su soporte inicial para los chips Loihi de Intel.

El marco Lava actualmente admite (se lanzará pronto):

1. Mensaje basado en canal que pasa entre procesos asincrónicos (el paradigma
de comunicación de procesos secuenciales)
2. Paralelismo hipergranular donde la computación emerge como el resultado
colectivo de las interacciones entre procesos
3. Plataformas de ejecución heterogéneas con componentes tanto
convencionales como neuromórficos
4. Entrenamiento fuera de línea basado en backprop de una amplia gama de
modelos de neuronas y topologías de red
5. Herramientas para generar redes neuronales de picos complejas,
como campos neuronales dinámicos y redes que resuelven problemas de
optimización bien definidos.
6. Integración con marcos de terceros
Para lograr la máxima productividad del desarrollador, Lava combina una interfaz de
Python simple con un rendimiento acelerado utilizando el código C/C++/CUDA
subyacente.

Para obtener más información, visite Lava en Github: https://github.com/lava-nc

organización de lava
Los procesos son el bloque de construcción fundamental en la arquitectura Lava a partir
de la cual se construyen todos los algoritmos y aplicaciones. Los procesos son objetos
con estado con variables internas, puertos de entrada y salida para la comunicación
basada en mensajes a través de canales y múltiples modelos de comportamiento. Esta
arquitectura está inspirada en el paradigma del proceso secuencial de comunicación
(CSP) para sistemas paralelos asincrónicos que interactúan a través del paso de
mensajes. Los procesos de Lava que implementan la API de CSP se pueden compilar y
ejecutar a través de un compilador multiplataforma y un tiempo de ejecución que admite
la ejecución en HW neuromórfico y convencional de von-Neumann. Juntos, estos
componentes forman la capa de magma de lava de bajo nivel.

En un nivel superior, la biblioteca de procesos contiene un conjunto creciente de


procesos genéricos que implementan varios tipos de modelos de neuronas, topologías de
conexión de redes neuronales, procesos de IO, etc. Estos se ejecutan en CPU, GPU o
hardware neuromórfico, como la arquitectura Loihi de Intel.

Varias bibliotecas de algoritmos y aplicaciones se basan en estos procesos genéricos


para crear procesos especializados y proporcionar herramientas para entrenar o
configurar procesos para aplicaciones más avanzadas. Una biblioteca de aprendizaje
profundo, una biblioteca de optimización restringida y una biblioteca de campos
neuronales dinámicos se encuentran entre las primeras que se lanzarán en Lava, con más
bibliotecas por venir en versiones futuras.

Lava está abierto a modificaciones y extensiones a bibliotecas de terceros como Nengo,


ROS, YARP y otras. Las utilidades adicionales también permiten a los usuarios perfilar
la potencia y el rendimiento de las cargas de trabajo, visualizar redes complejas o
ayudar con las conversiones de punto flotante a punto fijo requeridas para muchos
dispositivos de baja precisión, como HW neuromórfico.

Todas las API principales de Lava y los componentes de nivel superior se publican, de
forma predeterminada, con licencias BSD 3 permisivas para fomentar la contribución
comunitaria más amplia posible. Los componentes Magma de nivel inferior necesarios
para mapear procesos a backends neuromórficos generalmente se lanzan con licencias
LGPL-2.1 más restrictivas para desalentar las bifurcaciones comerciales patentadas de
estas tecnologías. Los componentes específicos de Magma necesarios para compilar
procesos específicamente para los chips Intel Loihi siguen siendo propiedad de Intel y
no se proporcionan a través de este sitio de GitHub (consulte a continuación). Es
probable que un código de capa de magma similar para otras futuras plataformas
neuromórficas comerciales también siga siendo propietario.

También podría gustarte