袁之航简介

袁之航于2017年获得北京大学理学学士学位,2017年起于北京大学信息科学技术学院攻读研究生(硕博连读),师从孙广宇长聘副教授。研究方向为:高效神经网络设计、神经网络压缩加速、软硬件协同优化等。袁之航累计参与6款AI芯片的研发,在国际会议/期刊上发表多篇论文;曾任北京大学创客空间社长/理事长、北京大学极客实验室奇点游戏工作室创始人、北京大学极客产品孵化部部长、北医学生会宣传部副部长;曾任AI音乐创业公司北京惊弓科技CTO。

项目经历

北京大学高能效计算与应用中心 2015.09-

  • 进行动态神经网络架构设计研究,发表多篇论文
  • 参与SNN(脉冲神经网络)芯片,负责芯片工具链算法部分的研究/软件开发和辅助硬件架构设计,针对芯片硬件设计提出多种ANN转SNN的优化算法,芯片已流片生产
  • 参与ReRAM(存内计算器件)神经网络芯片的设计,负责进行软-硬件协同优化设计,在考虑噪声和硬件资源限制下,使用NAS同时设计最优网络和最优硬件参数
  • 参与PCM(存内计算器件)神经网络芯片的设计,进行可行性验证和神经网络结构设计
  • 参与内存控制器地址映射策略研究,负责强化学习算法开发
  • 负责医学血液再灌注时间测量系统的研发工作,统筹算法设计、硬件开发
  • 参与LSTM在FPGA上加速的研究,共同设计加速器,负责硬件开发,研究成果在国际会议上发表,被引用次数超过100

泓图睿语(北京)科技有限公司 2017.03-2019.10
实习研究员

  • 参与超低功耗异步卷积神经网络芯片的设计,进行软硬件协同设计,确定芯片运行的网络架构。该芯片是全球首款异步AI芯片,已流片生产
  • 负责面向特定硬件高能效检测网络的设计,设计了多个版本的人脸检测/识别网络架构、车辆识别网络架构,已应用部署

北京大学极客实验室 2017.09-

  • 负责智能分类垃圾桶项目,统筹开发软件、硬件工作,产品在百度云智峰会展出
  • 负责跨平台游戏《魔瓶》项目,统筹设计、开发工作,游戏demo已上线
  • 负责印客印染、未来贺卡、炫光影像等文创产品的统筹开发工作,策划多场活动,多次对外展出
  • 负责策划开设创客X课程,已成功开课二十余节,参与人数达到数百人次

北京数城未来科技有限公司 2019.10-2020.03
实习成员

  • 负责遥感卫星图像AI检测识别框架的设计,实现包括建筑物检测分隔,建筑物高度标定等,已应用部署

北京大学

其他项目

  • 参与医学面瘫智能分级辅助诊疗系统项目,负责算法的设计和开发以及系统后端的开发,部分算法在期刊上发表,系统正在医院测试使用 2020-2021
  • 组建AI音乐生成创业团队,负责交互式自动音乐生成研发项目 2018

发表论文

  • 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.

获得荣誉

  • 北京大学优秀科研奖
  • 北京大学实践公益奖
  • 北京大学“创新实践项目奖”
  • 北京大学第七届模拟创业大赛 第三名
  • 北京大学2017黑客马拉松 第四名
  • 北京大学二等奖学金

Introduction in English

This website is HahnYuan’s personal blog. It was built in 2017.

I am a Ph.D student of the CECA of Peking University. My research interest is the high-efficiency neural network, software and hardware co-optimization.

The content of this blog is divided into two parts, one is about my own idea, the other is my notes and opinions of related research paper.

“会议概览: 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)

Session

“会议概览: 2020 47th ISCA”

开个新坑,看各大会议的Abstract,感兴趣的文章看Introduction。以求快速获得新Ideas。

Industry

《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》

Accelerators

《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》

Security

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

System-Level

《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》

Others

《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。

文章提出使用多层的Tokens作为Attention的输入,类似于DenseNet。

方法

全方向表达

  • $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。

这篇文章针对硬件运行神经网络可能会有错误的场景,提出使用NAS来搜索抗错误的神经网络架构(FT-NAS);并使用抗错误训练(FTT)的方法来减少错误。结合这两种方法就是FTT-NAS。

Motivation:
安全性和可信特性需要去解决。
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

NAS

  • 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}$(泊松分布)

ReRAM的crossbar计算

  • 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}})$

End-to-end的适应

  • 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方法效果很差

总结

这篇论文详细的在算法层面上建模了硬件的不完美带来的影响,并且提出了解决方案,虽然有SAF等解决方案挺不容易实现的;但至少非常清晰明白,为未来指出方向。solid的工作。

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

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

这篇文章实现了第一款忆阻器芯片系统来实现MNIST的分类网络。忆阻器芯片具有高产率、高性能和统一的crossbar阵列。同时文章还提出混合训练策略来适应器件的不完美性质。为了提升性能,文章还提出了复制卷积核的方法来增加并行度。

方法

忆阻器crossbar阵列的实现

  • 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上同时运行

总结

第一次将RRAM-based的加速器实际造出来,还是有很多问题的,但是这些问题暴露出来可以一个个解决,非常好。原来这个也能发Nature,学到了。

论文笔记 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的人员参与。

文章提出了一种将更深层的ANN转化成SNN的算法,可以实现VGG和ResNet的转化,在CIFAR-10和ImageNet上测试。

方法

SNN模型

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

网络限制

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

VGG转化

  • 激活阈值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))

ResNet转化

  • 在加法之后加入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%

总结

论文将ANN全转化到SNN上,通过对VGG和ResNet的实践,发现不同网络需要特定处理。并且提供了一层一层转化的思路,直接利用Spike的信息,值得借鉴。

Your browser is out-of-date!

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

×