柠檬友玩

首页 > 游戏资讯 > 正文

中科院团队推出开源神经形态芯片「文曲星」(附源代码)

时间:2022-11-23 11:07:01

由中科院计算、北京邮电大学、上海科技大学和中科院大学6名学生和1名教师组成的研究小组在arXiv中提出了一种极低功耗的神经形态处理器“文曲星22A”,结合通用CPU和SNN计算的功能,通过RISC-V SNN扩展指令集完成了高效计算

几十年来,用于模仿大脑行为的神经形态计算得到了广泛的发展。 人工神经网络( ANN )是人工智能( AI )中的重要概念之一,在任务识别和分类方面获得了很好的性能。 为了在硬件上更好地模拟大脑行为,研究人员开发了一种快速节能的新方法——神经形态计算。 在神经形态计算中,脉冲神经网络( Spiking Neural Network,SNN )是硬件实现的最佳选择。 因此,最近的研究侧重于加速SNN计算。 但是,大多数加速器解决方案都基于CPU加速器体系结构,并且由于复杂的控制过程而降低了能效。 由中科院计算、北京邮电大学、上海科技大学和中科院大学6名学生和1名教师组成的研究小组在arXiv中提出了一种极低功耗的神经形态处理器“文曲星22A”,结合通用CPU和SNN计算的功能,通过RISC-V SNN扩展指令集完成了高效计算文曲星22A通过定制RISC-V SNN指令集1.0(RV-SNN1.0 )将SNN计算单元集成到通用CPU的pipeline中,实现了低功耗计算。

中科院团队推出开源神经形态芯片「文曲星」(附源代码)

论文链接: 3358 arxiv.org/ABS/2210.00562 github:https://github.com/open mantianxing/wenquxing 22 agitee:3359 gitee.com/wenquxing 22 agitee:3359 wenquxing 22 a研究者使用中科院大学操作系统CPU团队设计的9级RISC-V处理器Nutshell作为基准,其执行单元为该研究所自行设计的RISC-V SNN扩展指令处理器NutShell本身有RV64IMACSU指令集,可以运行Linux等现代操作系统,也是高性能的RISC-V开源处理器。 研究小组基于RISC-V定制的SNN指令集计算粒度高,执行一个指令可以防止pipeline长时间停滞。 该研究使用带泄漏集成发行模型( LIF )和基于顺序的二进制随机STDP执行基于事件的SNN计算。 神经元和突触模型都对硬件友好且节能。 总的来说,该研究为实现低功耗SNN计算做出了以下贡献。

基于RISC-V ISA设计了计算粒度高的定制SNN扩展指令集RV-SNN 1.0; 简化标准LIF模型,降低处理器神经元模型计算和合并难度,修正了二进制随机STDP以适应突触权值的单周期更新; 研究小组将文曲星22A的源代码开源,支持未来的芯片研究。 为了评价文曲星22A的性能,该研究用于MNIST数据集的识别任务,并与其他SNN系统进行了比较。 实验结果表明,与加速器解决方案ODIN相比,在分类精度相当的情况下,文曲星22A的功耗仅为ODIN的1/5。

源代码描述文曲星22A相关文件如下图所示。

SNN单元的文曲星22A以Nutshell (果壳)处理器为原作,两者的不同在于文曲星22A有可用于脉冲)处理、神经更新、突触( SNN )计算的SNN单元。 这些不同之处还在于文曲星22A的核心代码部分,并且存在于函数单元的( fu )列表之下。 SNN单元包括四个部分,并且分别是脉冲处理单元、长串深度( ltd )、神经元单元和长串端口( stdp )单元。

该脉冲处理单元:该单元被控制为执行在输入脉冲和突触之间的“与”操作,计算有效脉冲的数量,并传送给下一组件; 神经元单元:神经元单元根据来自脉冲处理单元的有效脉冲数、前一状态、神经元的leakage电压更新神经元当前状态的LTP和LTD单元:神经元更新后,来自神经元的脉冲信号这个信号决定突触的权重是否为1(on )。 此后,LTD单元开始根据LTD概率降低突触权重。 16位LFSR生成随机的10位数字x以与LTD概率进行比较。 对于x LTD概率,突触权重设置为0。 文曲星22A整体结构这项研究采用了基准NutShell处理器来支持SNN的计算。 下图2显示了文曲星22A的微体系结构。 SNN单元(显示为SNNU )将添加到pipeline中,现在将开始运行。 SNN工作流的三个阶段由spu ( spu )、nu ( neuron unit )和su ( synapse unit )处理组成。 所有这些组件都集成在SNNU中。 SNN特殊寄存器文件与通用寄存器文件一起定义,发出ISU(issueunit )控制命令以避免数据危险。

实验结果MNIST数据集有70000个0到9的手写数字样本,其中60000个用于训练,10000个用于测试。 每个数字样本都是2828灰度的图像,最大值为255。 该研究使用文曲星22A,采用二元随机STDP学习规则对数据集进行了分类。 网络体系结构

为了与图像格式一致,该研究将各神经元的突触数设定为2828。 为了向弯曲星22A的SNN提供这些采样,使用泊松编码器产生基于速度的泊松分布脉冲,激励输入层。 该编码器将输入数据转换为相同形状的脉冲数据。 为了生成脉冲,该研究设定了需要归一化为p=x,这里x为[ 0,1 ]的时间周期的释放概率。 所有这些预处理步骤都在文曲星22A上执行。 比较结果表1是基于文曲星22A和其他STDP的SNN系统的MNIST识别比较结果。 从实验结果可知,在使用的STDP位以下的系统中,文曲星22A与其他分类精度相差不大,更好。

为了比较功耗,该研究将文曲星22A和ODIN集成在同一FPGA平台上,并比较了这两个芯片的功耗。 结果如图4所示。 从图4可以看出,总耗电量从25.949w(ODIN )下降到5.055 W )文曲星22A ),具体硬件资源利用率如表2所示,比Odin处理器低约5倍。

下表2比较了文曲星22A和ODIN的硬件利用。 结果显示文曲星22A的硬件资源消耗更少。

文曲星22A性能本研究使用不同数量的神经元训练SNN,在二进制随机STDP中为( 10,20,40 )个神经元。 图5显示10000个MNIST测试样本下的分类准确率( CA ),结果文曲星22A上10、20、40个神经元二进制权重SNN的最大准确率分别为80.94%、86.91%、91.91% CA的增加表明很难用少量的神经元对相似度高的数字进行分类。 输出层中神经元数量随w_exp增加而增加,但通过配置更多的神经元可以获得更高的识别准确率。