读了论文发表于18年IEEE MICRO(期刊,不是MICRO会议)的论文《Loihi: a Neuromorphic Manycore Processor with On-Chip Learning》,这篇文章是Intel做的Loihi芯片的论文,第一作者是Mike Davies, Director, Neuromorphic Computing Lab, Intel. 第二作者是Narayan Srinivasa, Director, Machine Intelligence Research Programs at Intel Labs. 第三作者是Tsung-Han Lin,Research Scientist at Intel Labs.
这篇论文讲了Intel的Loihi芯片的特性,包括层级化的连接、突触延时、学习算法等。还展示了Loihi芯片在解LASSO问题的EDP(能量-延迟积)小的算法,为反对SNN怀疑论者提供了一个论据。
设计
Loihi采用的是异构设计,一片60mm^2的Chip(14nm)由128个Neuromorphic Core、3个嵌入式X86核、片下通信接口组成。一个Chip上的Core可以更多,多个Chip也可以组成更大的network,其mesh protocal最多支持4096 on-chip cores,最多16384个chips。
计算Core
- 每个核心可以支持1024个neuron(文章里叫compartments,理解成可以重复使用(类似于卷积kernel)的单元),这些neuron被组织成一些包含多个Neuron的树。
- 每个neuron都有输入Axon(fan-in)和输出(fan-out)的连接
- neuron共享10个体系结构意义上的存储器,这些存储器保存了share configuration and state variables
- 每个SNN时间步(time-steps)这些neuron流水式的进行计算、更新存储器
- 当膜电位超过阈值,产生spike,这些spike被传输到目的cores的一系列fan-out模块上
- 每个Core包含一个学习模块,可以使用local记录的spike train + 传递的reward spiking来调整权重(算法可编程)
计算Core的特殊设计
- Sparse network compression
- 支持三种压缩模型
- fan-out neuron indices,index state被存在突触的状态变量里面
- Core-to-core multicast.
- direct a single spike to any number of destination cores
- Variable synaptic formats
- 权重可以1-9bit量化(signed或者un-signed),还可以不同neuron不同bitwidth,非常灵活
- Population-based hierarchical connectivity
- 使用connectivity templates(一个weight-sharing机制)
- 可以很好支持卷积,大幅度reduce a network’s required connectivity resources
NoC
- 异步NoC进行Core间通信
- 支持核心控制以及x86-x86信息的:写、读请求、读response信息
- 支持spiking信息的传递
- 支持为支持Cores时间同步的barrier message的传递
评价
不愧是Intel,Loihi的架构设计应该是非常成熟了,很多最关键的问题(比如权重复用和解决高度sparse的异步计算问题)都考虑到了。相对于ANN的加速器起来说,为什么一定要设计成把每个Neuron分配到Core上面去这种形式?其实值得商榷,可能有很多数据搬运的问题,是不是有文章探讨这个问题呢?但是SNN最大的问题还是应用,文章使用的解LASSO的算法,我甚至觉得有点心疼,只能比EDP这种东西,根本上算法性能比不过,非常尴尬。文章说:”its flexibility might go too far, while in others, not far enough.”。作者的想法是:看到ANN有了大的算力,才有产生质的突破;SNN会不会是这样呢?那就先把芯片造出来!也许科学研究就是这样,大部分都不会成功,但是必须边走边看吧,无数失败的东西里面总会有成功的一个。不喊加油了,就只是祈望这条路是可行的。