*abstract
Lava是一个开源Python框架,用于开发大脑启发应用程序并映射到神经形态硬件,提供了开发应用程序的工具和抽象方法,可以充分利用神经计算原理。
lava-dl支持Deep Event-Based Networks训练,可以直接训练,也可以ANN2SNN
lava-dl提供了SLAYER的改进版本,用于直接训练,还提供了名为Bootstrap的新ANN2SNN加速训练方法。
但是lava-dl训练库独立于核心lava库,此时无法直接训练lava Processes.应该首先使用lava-dl训练模型,然后使用netx库适用平台独立的hdf5网络描述转换为网络。
lava.lib.dl.decolle,用于使用本地学习和代理梯度训练深度 SNN。该扩展是 DECOLLE 学习 repo 的实现,与 lava-dl 训练工具完全兼容。有关该扩展的详细说明、示例和教程,请参阅此处。
lava.lib.dl.slayer 是 SLAYER 的增强版本。最值得注意的增强功能包括:支持递归网络结构、更多种类的神经元模型和突触连接(完整的功能列表在这里)。该版本的 SLAYER 基于 PyTorch 深度学习框架构建,与其前身类似,其中的子模块是与pytorch兼容的。为了与 Lava 平滑集成,lava.lib.dl.slayer 支持使用独立于平台的 hdf5 网络交换格式导出训练好的模型。在未来的版本中,SLAYER 将完全集成到 Lava 中,直接训练 Lava Processes。这将消除明确导出和导入训练网络的需要。
总体来讲,lava提供了Process类,用户可以使用已有的Process构建神经网络,也可以自己写Process构建神经网络。
lava中的process可以彼此提供接口,在本地内存运行,通过通道在彼此之间传递消息。同时不同的Process同时进行异步运算,体现了神经形态硬件固有的高度并行性,并且避免了内存交互的副作用。
Python编写一个Process后,lava就允许它在不同的后端(CPU、GPU或神经形态核)无缝运行。开发人员可以直接在经典硬件上测试应用程序,并将其部署到神经形态硬件上。Loihi是分布式异构硬件,在使用Loihi的时候,可以在神经形态核上运行某些Process,在嵌入式常规CPU和GPU上并行运行其他Process。lava针对这种运算的通信做了优化处理。
How to build a Process
创建新Process时,需要从AbstractProcess类继承。
比如自己写一个LIF类:
Attention:
- 只定义LIF神经元的界面,不定义时间行为
- 对计算后端完全不可知,在CPU和Loihi上运行代码,保持不变。
Process的行为由ProcessModel定义。对于LIF的具体例子,ProcessModel描述了它们的电流和电压如何对突触时输入反应,状态如何演变,神经元何时应该发出脉冲。
一旦Process被实例化并且您对其状态感到满意,就可以运行该Process。只要为所需的后端定义了ProcessModel,Process就可以在计算硬件之间无缝运行。
ProcessModels允许用户使用一种或多种语言(如Python、C或Loihi neurocore接口)和各种计算资源(如CPU、GPU或Loihi芯片)指定Process的行为。通过这种方式,ProcessModels支持跨平台无缝执行Process,并允许用户构建与平台特定实现无关的应用程序和算法。
一个Process可以有多个ProcessModels,分别用于要在其上运行它的每个后端
Dataset and Task
可以接受静态图像,SpikeInput Process可以使用图像输入,通过整合和发放动态生成脉冲:
并没有直接说明能否支持dvs
Data input requirements
可以接收rated-coded input,被编码为spiking rates.
也可以处理DVS(应该),文档上面讲一个process当某个条件或事件发生了改变后会异步输处一个新的高斯模式。
Model size
lava-dl本身是基于pytorch搭建的,其中的模块也是能与pytorch兼容的,也就是说训练时模型大小和pytorch一般模型差不多,但是和具体的神经网络结构有关,可以自己构建,也可以采用已经构建好的block。
loihi没有说明能支持多大的模型
灵汐的芯片没有多少限制,不超过显存限制(比如16G)均可。
Quantized training and deployment
lava-dl做了量化,可以选择round量化也可以选择floor量化。
部署方面文档只提供给有loihi权限的开发者,即必须先加入INRC。
Compression
为loihi2部署提供信息压缩模式
How to Deploy
未提供。