• Han Y, Yuan Z, Pu Y, et al. Latency-aware Spatial-wise Dynamic Networks, NeurIPS 2022.
  • Li X, Yuan Z, Guan Y, et al. Flatfish: a Reinforcement Learning Approach for Application-Aware Address Mapping[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems (TCAD), 2022.
  • Li X, Bing Z, Guang Y, et al. Enabling High-Quality Uncertainty Quantification in a PIM Designed for Bayesian Neural Network. HPCA, 2022.
  • Yuan Z, Xue C, Chen Y, et al. PTQ4ViT: Post-Training Quantization Framework for Vision Transformers[J]. European Conference on Computer Vision (ECCV), 2022.
  • Yuan Z, Chen Y, Xue C, et al. PTQ-SL: Exploring the Sub-layerwise Post-training Quantization[J]. arXiv preprint arXiv:2110.07809, 2021.
  • Yuan Z, Jingze L, Xingchen L, et al. NAS4RRAM: Neural Network Architecture Search for Inference on RRAM-based Accelerators[J]. SCIENCE CHINA Information Sciences, 2021.
  • Yuan Z, Wu B, Sun G, et al. S2DNAS: Transforming Static CNN Model for Dynamic Inference via Neural Architecture Search[C]. European Conference on Computer Vision (ECCV), 2020. (oral)
  • Yuan Z, Liu X, Wu B, et al. ENAS4D: Efficient Multi-stage CNN Architecture Search for Dynamic Inference[J]. arXiv preprint, 2020.
  • Guan Y, Sun G, Yuan Z, et al. Crane: Mitigating Accelerator Under-utilization Caused by Sparsity Irregularities in CNNs[J]. IEEE Transactions on Computers (TC), 2020.
  • Guan Y, Yuan Z, Sun G, et al. FPGA-based accelerator for long short-term memory recurrent neural networks[C]. Asia and South Pacific Design Automation Conference (ASP-DAC), 2017.
  • Wu B, Liu Z, Yuan Z, et al. Reducing overfitting in deep convolutional neural networks using redundancy regularizer[C]. International Conference on Artificial Neural Networks (ICANN), 2017.

“会议概览: 2020 ASPLOS”

Session 4A: huge memories and distributed databases

∅sim: Preparing System Software for a World with Terabyte-scale Memories

  • 问题:现在系统不能scale到大内存
  • 提出了0sim的模拟器,能够模拟TB级别的内存(通过压缩内存(替换数据为0)),达到了150x的内存缩减
  • Case studies:
    • interactively debug memcached OOM >=2TB system
    • irreversible fragmentation with 100s of GBs free.

Session 5A: frameworks for deep Learning

Interstellar: Using Halide’s Scheduling Language to Analyze DNN Accelerators

  • DNN加速器的设计空间可以看做一个loop transformation: blocking(split/reorder)、dataflow(unroll)、resource allocation(memory)
  • 使用Halide schedule 能够simulate和分析加速器设计空间
  • 很多不同的dataflow都能达到类似的energy efficiency,因为主要开销在RF和DRAM

DeepSniffer: A DNN Model Extraction Framework Based on Learning Architectural Hints

  • 使用运行时sequence identification(类似于Speech recognition),输入GPU kernel features(Latency/ Rv/ R/W / kdd),使用kernel model和context model预测,最后CTC decoder出来。
  • 神经网络的运行栈可以被学习,用来预测得到网络结构
  • 使用context的信息能使得model extraction更powerful
  • 网络结构对targeted attack是重要的(即使没有dimension和parameters)


“会议概览: 2020 47th ISCA”



《Data Compression Accelerator on IBM POWER9 and z15 Processors : Industrial Product》,IBM research/IBM Systems

  • 硬件压缩提升I/O和网络性能,减少存储和内存开销
  • on-chip的压缩加速器,0.5%的面积换388x的加速比(POWER9),23%的实际性能提升
  • 重点在trade-off

《High-Performance Deep-Learning Coprocessor Integrated into x86 SoC with Server-Class CPUs Industrial Product》,Centaur Technology(一家x86 CPU芯片设计公司,1995年成立,美国德克萨斯)

  • DL coprocessor (NCORE) + x86 SoC(server-class CPU)
  • int8,uint8,int16,bf16, 20T ops/s
  • MLPref Inference v0.5 1218IPS, 1.05ms latency ResNet-50-v1.5/ 0.329ms MobileNet-V1

《The IBM z15 High Frequency Mainframe Branch Predictor Industrial Product》,IBM system group

  • 多级look-ahead structure
  • 能预测branch direction和target addresses,增强:multiple auxiliary direction, target, and power predictors
  • 为enterprise-class system的特定workloads优化

《Evolution of the Samsung Exynos CPU Microarchitecture》,作者来自于Sifive/Centaur/Independent Consultant/ARM/Texas A&M University/AMD/Nuvia/Goodix

  • 讨论了三星Exynos家族从M1到M6的设计变化
  • perceptron-based branch prediction/Spectre v2 security enhancements/micro-operation cache algorithms/prefetcher advancements/memory latency optimizations

《Xuantie-910: A Commercial Multi-Core 12-Stage Pipeline Out-of-Order 64-bit High Performance RISC-V Processor with Vector Extension : Industrial Product》,Alibaba T-head division

  • 基于RISC-V RV64GCV指令集+自定义算术运算/bit manipulation/load&store/TLB和cache operations+RISCV 0.7.1向量扩展
  • 支持多核多cluster的SMP(对称多处理) with cache coherence+12级流水/乱序执行/多发射超标量/2.5GHz/12nm/每个核心0.8mm^2
  • 软件和工具链的co-optimization,在RISC-V上表现最好,和ARM比有来有回

CPU based

《Divide and Conquer Frontend Bottleneck》, Sharif University of Technology, Sharif University of Technology谢里夫理工大学(伊朗麻省理工),Ali Ansari, Hamid Sarbazi-Azad

  • instruction和BTB(branch-target-buffer分支预测先取的) miss导致的frontend stalls很大,现有的预取器不行
    • 指令的miss penalty远大于buffer的miss
  • 把Frontend的bottleneck分成三类分别处理。
    • sequential miss,SN4L
    • discontinuity miss, Dis
    • BTB miss, pre-decoding the prefetched blocks
  • 5%的提升

《Auto-Predication of Critical Branches*》,Intel Labs(Bengaluru, India和Haifi, Israel)

  • H2P(hard-to-predict)和mis-speculation限制了分支预测的scalability。Predication(同时取两个分支的数据)将控制依赖关系替换成数据依赖可以缓和这个问题,但可能降低指令并行性。
  • 分析了trade-off(prediction和predication),提出ACB,自动根据是否critical to performance来关闭predication。
  • 使用复杂的性能检测。8%的提升

《Slipstream Processors Revisited: Exploiting Branch Sets》

《Bouquet of Instruction Pointers: Instruction Pointer Classifier-based Spatial Hardware Prefetching》

《Focused Value Prediction*》,Intel Labs(Bengaluru, India/Haifa, Israel)

《Flick: Fast and Lightweight ISA-Crossing Call for Heterogeneous-ISA Environments》

《Efficiently Supporting Dynamic Task Parallelism on Heterogeneous Cache-Coherent Systems》

《T4: Compiling Sequential Code for Effective Speculative Parallelization in Hardware》


《Think Fast: A Tensor Streaming Processor (TSP) for Accelerating Deep Learning Workloads》,Groq Inc(加州山景城).

  • 内存单元插入到vector/matrix计算单元,以利用dataflow的locality
  • observations 1机器学习数据并行可以映射到硬件张量中 2stream programming model可以准确理解和控制硬件单元,带来更好的performance
  • TSP探索并行性,包括指令级别、存储并发、数据和模型并行,同时保证determinism通过减少所有的硬件反应元素(arbiters caches)
  • 20.4K IPS ResNet50
  • Functional slicing: local functional homogeneity but chip-wide (global) heterogeneity, each tile竖条条 implements a specific function and is stacked vertically,dataflow是左右走的,并且指令分别发到每一个竖条条上。
  • Parallel lanes and streams: Streams provide a programming abstraction and are a conduit导向 through which data flows between functional slices.

《Genesis: A Hardware Acceleration Framework for Genomic Data Analysis》

《DSAGEN: Synthesizing Programmable Spatial Accelerators》

《Bonsai: High-Performance Adaptive Merge Tree Sorting》

《Gorgon: Accelerating Machine Learning from Relational Data》

《DSAGEN: Synthesizing Programmable Spatial Accelerators》

《A Specialized Architecture for Object Serialization with Applications to Big Data Analytics》

《SpinalFlow: An Architecture and Dataflow Tailored for Spiking Neural Networks》, Utah大学, Surya Narayanan, Pierre-Emmanuel Gaillardon

  • SNN dataflow需要考虑多个tick的neuron potentials,带来了新的数据结构和新的数据pattern。
  • 提出SpinalFlow,处理Compressed,time-stamped, sorted sequence的输入输出;一个神经元执行一系列步骤的计算来减少potential的存储开销,better data reuse

《NEBULA: A Neuromorphic Spin-Based Ultra-Low Power Architecture for SNNs and ANNs》


《MuonTrap: Preventing Cross-Domain Spectre-Like Attacks by Capturing Speculative State》


《SysScale: Exploiting Multi-domain Dynamic Voltage and Frequency Scaling for Energy Efficient Mobile Processors》

《The NEBULA RPC-Optimized Architecture》

《CryoCore: A Fast and Dense Processor Architecture for Cryogenic Computing》

《Heat to Power: Thermal Energy Harvesting and Recycling for Warm Water-Cooled Datacenters》


《Printed Microprocessors》

《Déjà View: Spatio-Temporal Compute Reuse for‘ Energy-Efficient 360° VR Video Streaming》

《SOFF: An OpenCL High-Level Synthesis Framework for FPGAs》

《Hardware-Software Co-Design for Brain-Computer Interfaces》

论文笔记 《Classifying Memory Access Patterns for Prefetching》

这篇论文是发表在ASPLOS2020的《Classifying Memory Access Patterns for Prefetching》,作者来自Google的Parthasarathy Ranganathan和来自Stanford的Christos Kozyrakis,第一作者是Grant Ayers和Heiner Litz。

这篇文章通过分析内存访问的行为来判断是否一个Prefetcher是否有效。作者结合二进制代码分析和动态的Trace分析制作了了一个分析工具,揭示了访问的特性,同时利用特性提出了software prefetch injection的方法。



  • 只关注load instruction:带来最多cache miss
  • 同一个PC两次load的address分类
    • Constant: $A_n=A_{n-1}$,例如*ptr访问
    • Delta: $A_n=A_{n-1}+d$,例如streaming,array traversal
    • Pointer Chase: $A_n=Ld(A_{n-1})$,例如next=current->next
      • 地址是从之前的地址得到的
    • Indirect Delta: $A_n=Ld(B_{n-1}+d)$,例如*(M[i])
    • Indirect Index: $A_n=Ld(B_{n-1+c}+d)$,例如M[N[i]]
    • Constant plus offset reference: $A_n=Ld(B_{n-1}+c_2)+c_1$例如Linked list(链表)遍历

预取器内核(Prefetch Kernel)抽取

  • dataflow analysis
    • 找到并分类instructions causing miss
    • 因为可能的path极多,dynamic profile能剪枝到prefetch最重要的部分
  • prefetch kernel
    • miss address=data+computations
    • 用图表示关系,vetex是data,edge是computation
      • 根节点是miss PC的地址
      • 找生成根节点的子节点的依赖
    • 找到一个PC所有出现的地方
    • 细节
      • Load-to store依赖:找load instruction的address的prior store(必须要动态分析,最大的不同点)
      • 直到所有节点是terminal节点:constant、random number、trace边界等
    • 不考虑控制逻辑,因为trace本身就考虑了控制逻辑,同一个PC使用那些出现频繁的flow
  • Compaction(压缩)
    • dataflow kernel包括不需要的操作
      • 例如memory loads/stores caused by register spilling/function calls
    • Store-Load Bypassing
      • 通过dynamic直接把store-load连接起来
    • Arithmetic Distribution and Compaction
      • flatten the dataflow graphs by distributing and reducing nested arithmetic operations
      • 例如(3 + 4) − (6 + 1)
      • 减少了1000x的graphs
    • Assignment and Zero pruning
      • Assignment between registers对图没用,去掉
      • 0计算,去掉
  • 例子
    • An = 0x28 + load(0x38 + load(−0x8 + load(rsp)))
    • An =0x28+load(0x38+rax)


  • top 200 miss PCs
  • classification
    • 多数的miss address都包括loading from memory
  • complexity(kernel computations)
    • 小workload大部分<10
    • 大workload大部分<100
  • prefetch kernel timeliness

论文笔记 《OmniNet: Omnidirectional Representations from Transformers》

这篇文章是2021年挂在arxiv的《OmniNet: Omnidirectional Representations from Transformers》,作者是Google Research的Yi Tay/Mostafa Dehghani。




  • $xformer(X)=X_1,X_2,\dots X_L$
  • $O=Attend(IndexSort(xformer(X)))$
  • $OmniNet(X)=xformer(X)_L+MaxPool1D(O)$


  • 计算complexity, omninet变成flatnet
    • Attention被实现为meta-learner,输入所有的,精炼
    • 使用efficient transformer
      • kernel transformations
      • low-rank self-attention
      • block-based sparsity
    • partition layers



论文笔记 《FTT-NAS: Discovering Fault-Tolerant Neural Networks》

这篇文章是发在ASP-DAC2020的《FTT-NAS: Discovering Fault-Tolerant Neural Networks》,作者来自清华汪玉组,共同第一作者Wenshuo Li和Xuefei Ning。


safety-critic applications的需要:硬件对于soft error更加sensitive(来自atmospheric neutrons大气中子/radioactive impurities放射性杂质)。
边缘设备:Voltage instability/aging/temperature variation。
malicious attackers:embedding hardware trojans(硬件木马)/manipulating back-doors/memory injection。



  • 模型用8bit量化
  • 训练模型
    • random bit-flip
    • $y=f(Wx+b+\theta 2^{\alpha} (-1)^\beta)$
    • $\theta~ Bernoulli(p)$ p概率产生bit偏移
    • $\alpha ~ Uniform(0,1,\dots, Q-1)$ Q-1个比特随机选
    • $\beta~ Uniform(0,1)$ 随机产生正负偏移
  • 注意,为了效率,这个模型只在feature map上面加,相当于bias


  • RL的模型,CIFAR-10
  • super-net里面选择,用shared-weights
    • shared weights使用FTT方法训练
  • search space
    • normal cell和reduce cell
    • 7 operations: none, skip connect, 3x3 avg, 3x3 max, 1x1 conv, 3x3 relu-conv-bn, 5x5 relu-conv-bn
    • B-2 nodes,2个输入来自于上两个cell
    • 6.9*10^21 B=6
  • searching
    • $R=(1-\alpha)acc_c+\alphaacc_f$
    • search iter
      • 数据集$D_t$训练shared weights
      • 另一个数据集$D_v$训练controller
    • FTT训练的loss $L=(1-\beta)acc_c+\betaacc_f$


  • ResNet-20 1110M flpps 3%flip 13.6%
  • FT-NAS-Net 750M flops 3%flip 78.2%
  • FTT-NAS-Net-20 704M flops 3%flip 88.6%
    • 发现双重connections between some pairs of nodes
    • 说明可能找到了敏感的connections,然后用冗余的path来保护这些nodes
  • ResNet-M (使用5%的错误率训练) 862M flops 81.9%
    • 使用了double connection
    • base channel 从64降到了40,保持flops
  • 提升来自于两个方面:1.架构,2.redundancy的forwarding
    • 简单的inference conv两次,然后取平均 57.4%
  • 其它noise的效果
    • 对于bit-flips效果最好>gaussian noise> salt-and-pepper noise


这篇文章使用简单的加feature map噪声的方法将神经网络对于noise的鲁棒性提升了,并且总结了可能的原因。但是加的噪声比较简单,而且结论太启发式,需要进一步研究。

论文笔记 Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference

这篇论文是发表在CVPR2018的《Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference》,作者是google brain做Mobilenet的Hartwig Adam和Dmitry Kalenichenko,第一作者是Benoit Jacob。




  • 量化策略:非对称量化
    • $r=S(q-Z)$
    • r是real q是quantized
    • Z是零点,代表quantized的空间上对应r为0的数值。
      • 因为有zero-padding
  • 矩阵乘法
    • r3=r1r2 分别有不同的S和Z
    • $S_3(q_3^{i,k}-Z_3)=\sum_{j}S_1(q_1^{i,j}-Z_1)S_2(q_2^{j,k}-Z_2)$
    • $q_3^{i,k}=Z_3+M\sum_{j}(q_1^{i,j}-Z_1)(q_2^{j,k}-Z_2)$
      • M是scale factor $M:=S_1 S_2/S_3$
        • 实际运算使用一个定点数乘和一个移位 $M=2^{-n}M_0$
        • $M_0\in[0.5,1)$是int16或者int32的
        • 有一定的损失,但利用定点数乘法把误差降到最低
    • $q_3^{i,k}=Z_3+M(NZ_1 Z_2-Z_1 a_2^k -Z_2 a_1^i +\sum_j q_1^{i,j} q_2^{j,k})$
      • 其中$a_1:=\sum_{j}q_2^{j,k}$ 整个矩阵运算里面是提前算好了O(N^2)
      • 整个计算量在q1q2 O(N^3)
  • 实现
    • 中间临时数值用int32
    • q1q2
      • int32+=uint8*uint8
    • bias
      • $S_{bias}=S_1 S_2, Z_{bias}=0 $
    • 算完之后cast到uint8
      • 使quantization倾向于使用uint8全部的表示区间


  • 使用量化算法的原因
    • 1.原来算法weights的channel-level large differences>100x,导致range较小的那些channel有很大的量化误差
    • 2.weights的outlier
  • simulate quantization effects in the forward pass of training
    • weight and biases stored in FP32
    • $q_{sim}(r;a,b,n)=round(\frac{clamp(r;a,b)-a}{s(a,b,n)})s(a,b,n)+a$
    • n是量化的位点数目2^8,$s(a,b,n)=\frac{b-a}{n-1}$
    • biases are not quantized because they are represented as 32-bit integers
  • a,b的确定
    • weight: a:=min(w) b:=max(w)
    • activation: via EMA(exponential moving average)
      • disable activation quantization at start of training to get stable state
    • nudge a/b to make sure 0.0 is representable
  • batchnorm的处理
    • inference: fold to weight of conv $w_{fold}:=\frac{\gamma w}{EMA(\sigma_B)}$
    • training: simulate the folding
      • 计算图上计算两遍Conv,第一遍浮点把$\sigma_B$和$\mu_B$算出来
      • 第二遍把folded weights算出来然后quantize之后conv


  • ImageNet ResNet,掉2%
  • ReLU6>ReLU
  • weights are more sensitive to reduced bit depth than activations.
  • it’s better to keep weight and activation bit depths the same.


这篇文章系统性的提出了整个网络非对称量化的方法,非常具有实践意义。在计算图上进行分析修改的方法值得借鉴。分析掉点的原因:channel-wise quantization。数值误差:M的tail和cast到uint8; bias的量化损失。

论文笔记 Noise Injection Adaption: End-to-End ReRAM Crossbar Non-ideal Effect Adaption for Neural Network Mapping

这篇论文是发表在DAC2019上的《Noise Injection Adaption: End-to-End ReRAM Crossbar Non-ideal Effect Adaption for Neural Network Mapping》,论文作者是中佛罗里达大学的Deliang Fan组,第一作者是Zhezhi He和Jie Lin。

文章分析了RRAM的crossbar运行DNN的不理想性质:SAF,IR-Drop,thermal noise, shot noise和random telegraph noise。提出了训练、映射和测试的框架PytorX,能有效减少这些不理想性质的影响。



  • 确定的噪声:Stuck-at-fault(SAF)缺陷
    • SA0是卡在低阻态,1.75%
    • SA1是卡在高阻态,9.04%
  • 随机噪声1:IR-Drop
    • 线阻
    • 决定于于input电压和RRAM的电导
    • 建模成随机,因为直接计算太expensive了
  • 随机噪声2:Thermal Noise和Shot Noise
    • 热噪声
    • 散粒噪声
    • 建模成0均值的高斯分布
      • $i_{rms}=\sqrt{Gf(4K_B T+2qV)}$
      • rms是root-mean-square current
      • G是电导,f是crossbar的操作频率,T是温度,V是voltage drop
    • programming偏差
      • $\sigma=\Delta G/3$
      • $\Delta G$是ReRAM的电导分辨率resolution (每一级之间的差异)
    • 加上上面两种噪声影响,权值的总体偏差的标准差:
      • $g_{rms}=i_{rms}/V=\sqrt{\frac{Gf(4K_B T+2qV)}{V^2}+(\frac{\Delta G}{3})^2}$
  • 随机噪声3:Random Telegraph Noise(RTN)
    • 随机电报噪声,也叫Burst Noise 爆裂声
    • 临时的、随机的减少电导值
    • $G_{rtn}=G \frac{bG+a}{G-(bG+a)}$
    • 其中a、b是参数,取1.662e-7和0.0015
    • 根据参考文献,G有一半的可能性变成$G+G_{rtn}$(泊松分布)


  • NN的算法计算
    • $y=(\alpha_w \alpha_x)\sum_i (w,x)$
    • w和x是量化后的权重,$\alpha_w, \alpha_x$是scale因子
  • RRAM的计算
    • DAC的输入$V_{DAC,i}=V_{ref}+\Delta V_{DAC}x_i$
      • $x_i$是n个二值数的比特串(the input $x_i$ is encoded as binary bit-strings n_i[n]),二进制补码表示,文章取n=8
      • $ΔV_{DAC}$ is the minimum voltage stage of the DAC
      • 这里是直接8bit输入了,不是一个个输入的
    • ADC收到的信号
      • $I_{ADC,j}=\sum_{i}(\Delta V_{DAC}x_i \dot (G_{i,j}^+ - G_{i,j}^-))$
      • $G_{i,j}^+ - G_{i,j}^-=\Delta G\dot w$
        • $\Delta G$是RRAM cell的电导step size
    • ADC的量化
      • $y=round(\frac{I_{ADC,j}}{\Delta I_{ADC}})$


  • SAF的误差修正
    • 记录所有的错误cell,然后片外计算来补偿
  • Noise Injection Adaption for IR-drop
    • 128x128的crossbar的IR-drop非常高,不能用,64x64的可以用
    • 训练的时候考虑IR-drop
    • 但是如果直接算,花费的计算开销太大了
    • NIA方法
      • 训练网络,map到硬件,收集crossbar output current shift
      • 使用高斯噪声近似影响
      • 使用带高斯噪声来训练网络
  • 其他随机噪声
    • $G_{act}=G+G_g+G_p$
    • 高斯噪声和泊松噪声
    • 高斯噪声是和weight和input相关的
      • 使用NIA方法效果很差



论文笔记: Fully hardware-implemented memristor convolutional neural network

这篇文章是2020年发表在Nature杂志的论文《 Fully hardware-implemented memristor convolutional neural network》,文章作者来自清华的未来芯片技术高精尖创新中心和北京信息科学与技术国家研究中心,第一作者是Peng Yao,通讯作者是吴华强副教授。




  • TiN/TaOx/HfOx/TiN
    • 32 conductance states
    • 50ns的pulse时长可以做SET和RESET的closed-loop programming
  • 1T1R的设置
  • crossbar 128 x 16的结构
    • 128 word lines和128 source line
    • 16 bit lines
  • PE,每个PE有2048-cell的忆阻器阵列


  • 5层的 CNN 分类MNIST
  • 输入value被编码成脉冲数目
    • 输入3x3的patch
    • 根据量化的bit数决定:8bit的输入被分为8个脉冲输入,结果被shift加到tmp结果上面去
  • 带符号的weight被分配到一对忆阻器上
    • 一个是正数weight
    • 一个是负数weight
    • 15-level conductance weight
      • 4-bit的权重可以取得很好的效果
      • 分配到两个8级忆阻器上
  • bit line输入编码好的脉冲,source line输出分别代表正数和负数的值
  • 不同的channel被放到不同的row上面,可以同时计算他们


  • 在忆阻器芯片上原生训练整个网络是很复杂的
  • 片外训练的网络受每一个设备的不完美性质影响
    • defective devices缺陷设备
    • parasitic wire resistance and capacitance 线的电阻和电容
    • 将外部的权重转移到忆阻器的电导上去的时候这些因素会blur(污染)权重,降低模型准确率
  • 混合训练策略
    • 只在线训练最后一层FC


  • 不同层速度mismatch
    • 执行CNN卷积运算是耗时的,因为每一层都需要一个个输入sliding window
    • FC层的计算是很快的
  • 复制卷积的kernel到不同的crossbar
    • 但是复制weight是有挑战性的,因为不可预测和无法避免的硬件差异,conductance drift电导漂移和state locking(就是RRAM-cell坏了,不能重新写了)
    • 使用混合训练策略来部分解决这个问题
  • batch的预测,一次用三张图在三个复制后的PE上同时运行



论文笔记 Going Deeper in Spiking Neural Networks:VGG and Residual Architectures

这篇文章是2019年发在frontiers in Neuroscience的《Going Deeper in Spiking Neural Networks:VGG and Residual Architectures》,作者来自于普渡大学的Kaushik Roy组(负责Nanoelectronics Research Laboratory),第一作者是Abhronil Sengupta(18年毕业,现在在宾州州立做助理教授),还有和facebook reality labs的人员参与。




  • 输入使用泊松随机产生500-1000个timesteps
  • 使用了激活后降低到0的neuron模型


  • 不用bias
    • BN层换成dropout来做正则化
  • Pooling层使用avgpool


  • 激活阈值Vthr设置成最大ReLU的激活值
    • 被叫做”weight-normalization”或者”threshold-balancing”
      • weight normalization是将weight scale到和最大neural activation,Vthr设置为1
      • threshold-balancing是保持weight大小,Vthr设置到最大激活
  • Spike-Norm
    • 由于使用了降低到0的neuron模型,输入信息会有损失
    • 一层一层单独来转,保证最小化neuron的temporal delay,同时保证阈值不会太小
      • temporal delay是由于evidence integration导致的输入spike到输出spike的时间差
      • evidence integration(证据整合),就是乘累加计算
    • 每层的weight-normalization/threshold-balancing根据spike的输入来确定
      • Vthr=max(Vthr,max(Wx))


  • 在加法之后加入ReLU
    • 因为ReLU才会Spike,因此ResBlock的第二层Conv和输入共同evidence integration,整合后转化成IF
    • 提供了一个时序balancing的作用
  • 输入layers使用相同threshold
    • 因为网络第一层conv出来的threshold比较高,但是ResBlock的conv出来的threshold比较低,junction layer的spike会被identity mapping的输入主导,需要balance
    • 两支的threshold都设为1
  • 7x7转为3x3的卷积
    • threshold-balancing更好


  • VGG CIFAR-10 ANN 91.7%,SNN 91.5%
  • VGG ImageNet ANN 70.5% SNN 70%
  • ResNet-20 CIFAR-10 ANN 89.1% SNN 87.5%
  • ResNet-34 ImageNet ANN 70.7% SNN 65.5%



Your browser is out-of-date!

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