论文笔记 Comprehensive SNN Compression Using ADMM Optimization and Activity Regularization

阅读了19年挂在arxiv上的论文《Comprehensive SNN Compression Using ADMM Optimization and Activity Regularization》。这篇文章是清华李国齐组、UCSB谢源老师组、李鹏组做的。第一作者是UCSB的博士后Lei Deng。

这篇论文使用量化、剪枝和抑制Activity对SNN做压缩。量化和剪枝用的是ADMM,抑制Activity用的是加regularizaiton。直接在SNN上进行训练。

方法

剪枝

  • ADMM解带损失函数的sparse weight的问题。
  • 先进行ADMM重新训练、再进行Hard-pruning重训练
  • 训练采用STBP(AAAI 19)

量化

  • ADMM解带损失函数的对称quantization问题
  • 训练过程同剪枝

Activity Regularization

  • $\lambda R$作为正则化项,其中R是firing ratio

三种方法同时使用

  • 先ADMM剪枝的重训练
  • 再 ADMM 剪枝和量化的重训练
  • 最后 Hard-pruning-quantization 重训练

实验

  • 由于使用了STBP,在timesteps=10左右的时候效果都非常不错,CIFAR10在5层conv上能达到89%左右的top1
  • 效果好,4bit量化下基本保持精度 1bit(+1 -1) 2bit下CIFAR10掉不超过1个点
  • 提出了评价的不精确地Metric:剩余计算量$R_ops$
    • $R_ops=(1-s)b/B r/R = R_mem R_s$
    • b是bitwidth
    • s是sparsity
    • r是firing ratio
  • SNN在quantization上面,能比pruning降低更多计算量
  • 对于event-driven的N-MNIST来说,对于这些Compression更加敏感
    • 原因可能是信息分布到了哥哥time-step里面,由于内部稀疏的features的敏感性,时序分布的信息导致了准确率下降。(完全不懂在说什么)

评价

我想做的几个东西:activity regularization还有量化的优化,其实已经有人做好了。现在想来,这更像是工程的实现问题。至于需要研究的东西,比如event-driven的数据集为什么这么不中用、量化剪枝等方法为什么要这样融合、activity regularization如何给网络带来影响的(或者说firing ratio的影响),需要接下来的工作解释清楚。我想可以把着力点放在这些问题上面,对SNN有怀疑,那就通过科学的研究来杀死它;对SNN抱有希望,那就提出新的方法来超越原来的方法。

论文笔记: Loihi: a Neuromorphic Manycore Processor with On-Chip Learning

读了论文发表于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会不会是这样呢?那就先把芯片造出来!也许科学研究就是这样,大部分都不会成功,但是必须边走边看吧,无数失败的东西里面总会有成功的一个。不喊加油了,就只是祈望这条路是可行的。

论文笔记: Towards Accurate and High-Speed Spiking Neuromorphic Systems with Data Quantization-Aware Deep Networks

这篇是发表在DAC2018的论文《Towards Accurate and High-Speed Spiking Neuromorphic Systems with Data Quantization-Aware Deep Networks》,作者是克拉克森大学(Clarkson University)的Fuqiang Liu和Chenchen Liu,Chenchen Liu本科毕业于陕西科技大学,硕士北京大学,博士比兹堡大学,现在是克拉克森大学的Assistant professor。

文章解决SNN网络的浮点运算与实际硬件计算需要更低的bit数目的gap。实际硬件(如忆阻器)一般使用3-4bit的weight数据表示,然后inter-layer signals越大,能量消耗越大,因此作者将网络中的Activation(文中叫inter-layer signals)与Weight按照实际需求的3-4bit去量化,然后在部署实际硬件中测试性能。

方法

Neuron Convergence

  • 在activation的两端加带权值的L1正则化,让activation绝对值尽量不超过$2^{k-1}$
    • 在activation绝对值超过$2^{k-1}$给予更大的惩罚
  • 数值分布上启发式分析了这样做的error

Weight Clustering

  • 实际上就是weight的量化,最小化量化损失
    • 假定了weight [-1,1]
  • 采用了k-nearest,虽然说也能做到,但是这样做太浪费资源了

实验

  • 在Lenet Alexnet ResNet这几个网络和MNIST和CIFAR10数据集上测试
  • 使用了忆阻器硬件,32x32的crossbar
  • 4bit ResNet18 降低3%的精度
  • 和8-bit进行比较,能减少90%以上的能耗和30%-40%的Area开销

评价

分析到SNN网络与实际硬件之间的gap这点很有意义。但是提出的方法没有什么创新点,并且实验也是很多漏洞的。比如没有考虑有关Spiking造成的误差,另外也没有考虑BN层和Pooling层的处理。这方面的需要更多的研究,是一个机会。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×