Page 363 - 《软件学报》2025年第4期
P. 363

俞诗航 等: 神经形态计算: 从脉冲神经网络到边缘部署                                                     1769


                 否按预期工作, 在实际部署前发现和解决问题. 此外, 许多软件模拟器还提供性能和时序分析, 并评估硬件实现的
                 功耗和资源利用情况, 有助于达到更节能和高效的硬件实现. 选择                    SNN  仿真模拟器有一些标准       [117] , 它理应是开放
                 的, 且易于调试和运行, 并能支持各种硬件. 下面介绍一些常见的                  SNN  模拟器.


                                                 表 3 SNN  专用编程框架小结

                    框架名称          神经元模型                 编码方案                事件驱动           训练方法
                    BindsNET     IF, Izhikevich         秩序编码                不支持              STDP
                    SpikingJelly     LIF         频率编码, 延迟编码, 相位编码            支持         ANN-to-SNN, STDP
                    SpykeTorch       LIF        首脉冲触发时间编码, 秩序编码             不支持              STDP

                         [118]
                    NEST   支持具有不同生物学原理的神经元和突触模型, 提供了                   50  多种神经元模型和     10  多种突触模型, 包
                 括  Izhikevich  和  H-H  等典型的脉冲神经元模型, 以及   STDP  学习规则及其各类变体, 同时允许在仿真过程中随时
                 检查和修改神经元和突触状态. NEST           由  C++实现, 并提供一个名为      PyNEST  的  Python  接口, 可以有效地从单核
                 电脑扩展到多节点超级计算机.
                                               • 支持CPU多线程执行
                    Nengo  [119] 是一款专注于神经认知仿真的模拟器, 支持包括           SNN  在内的各类神经网络模型. Nengo        由  Python
                 实现, 提供了一种灵活的方式来构建和模拟              SNN  模型, 支持  TensorFlow  框架扩展, 允许用户定义神经元类型、学
                 习规则和优化方法, 将大脑的认知功能映射到神经网络中.
                         [120]
                    NeMo    是一款充分发挥      GPU  的通用计算能力以仿真大规模          SNN  的模拟器. NeMo  实现了   Izhikevich  脉冲
                 神经元模型, 能够在不牺牲计算效率的情况下真实地模拟各种脉冲动态, 也能在并行流处理器上模拟具有传导延
                 迟的  SNN, 同时减少内存带宽需求.
                    GeNN [121] 是用于  SNN  仿真的软件工具包. GeNN    通过代码生成将神经元仿真的不同描述转换为统一的                   C++
                 代码, 得到与英伟达     GPU  兼容的可执行文件, 从而在        CPU  或  GPU  上加速  SNN  仿真.
                    Brian 2 [122] 是使用  Python  编写的一款  SNN  开源模拟器. 它高度灵活、易于扩展, 方便用户使用微分方程定义
                 脉冲神经元和突触模型, 允许高效地模拟             SNN. Brian 2  使用自己的通用描述方法, 无需修改核心代码即可轻松生
                 成不同平台的代码, 具备强大的可扩展性.
                    CARLsim6 [123] 是  CARL-sim SNN  仿真平台的第  6  个版本, 该平台是首批利用    CUDA GPU  模拟大脑巨大并行
                 处理能力的开源仿真系统之一. 最新的            CARLsim6  支持当下的各类主流计算机和          GPU, 增加了可扩展性, 并纳入
                 了长期和短期突触可塑性, 能进行快速学习、网络重新连接和神经活动调节.
                    表  4  统计了主流  SNN  仿真软件的功能.

                                                 表 4 SNN  仿真软件功能统计

                  仿真工具    开源 GPU支持 编程语言                                   特点
                                               • 适合动态关注神经系统的结构
                                         C++
                   NEST    是     否             • 仿真速度快
                                        Python
                                               • 可利用本地网络中的多核计算机提高内存效率
                   Nengo   是     是      Python  • 拥有仿真后端, 如Nengo FPGA、Nengo Loihi、Nengo SpiNNaker和Nengo OpenCL
                                               • 专注于SNN的高级神经行为
                                               • 支持CPU多线程执行
                   NeMo    是     是       C++   • 可模拟不同的神经元模型和硬件配置
                                               • 可在支持CUDA的GPU上运行
                                               • 支持所有主流操作系统
                   Brian 2  是    是      Python  • 可在英伟达GPU上运行Brian 2脚本
                                               • 可将性能提升数十倍至数百倍
                                               • 提供易于使用的编程界面
                                         C++
                  CARLsim6  是    是             • 为SNN提供方便的参数调节
                                        Python
                                               • 提供生物可信的C++实现, 在灵活性和性能之间取得平衡
   358   359   360   361   362   363   364   365   366   367   368