论文笔记 《Neural-Hardware Architecture Search》

这篇论文是发表杂在NeurIPS 2019的《Neural-Hardware Architecture Search》。作者为我们的老朋友MIT的Song Han(韩松)组。第一作者为Yujun Lin,本科毕业于清华。

文章探索了NN网络结构与硬件架构的联合搜索方法,使用Evolution Algorithm来搜索硬件架构(HAS),NN这边使用One-shot hyper-net的方法搜索量化网络(QNAS)。

方法

搜索空间

  • 硬件是一个systolic-array-like architecture(MPA),包括5个可调节参数
    • #rows #cols 2x4->16x64
    • input/weight/output buffer size 128B->4096B,间隔4B
  • 网络是一个ResNet blocks的结构
    • kernel size 3\5
    • channels 0.125 0.25 0.5 1 1.5
    • each layer
      • activation 4/6/8 bits
      • weights 2/4/6 bits
    • identity/ residual blocks
      • 最大16blocks

搜索方法

  • 先HAS:硬件架构搜索

    • 在几个已有网络上进行搜索,目标是减少Energy-Delay Product
    • 采用进化算法
      • 根据各个搜索维度的mean和var随机生成一些样本
      • Evaluate这些样本,排序
      • 选择top-K重新计算mean和var
  • 后QNAS:神经网络搜索采用超网络

    • 训练一个大的超网络,它的子网络集合包含所有搜索空间中的网络
      • 大网络训练时间较长,且需要特殊的技巧来优化
    • Controller sample网络后,从超网络中取对应的weight,不需要重新训练
    • 采用标准进化算法进行sample
      • 先生成一些父代神经网络
      • 根据accuracy选择top-K作为

结果

  • HAS 1.1x speedup than human
  • QNAS 1.3x speedup than HAS

总结

这篇文章把硬件设计也题上议程,先HAS再QNAS,但是没有联合搜索。

“论文笔记:《Co-Exploration of Neural Architectures and Heterogeneous ASIC Accelerator Designs Targeting Multiple Tasks》”

这篇论文是2020年2月发表在arxiv的《Co-Exploration of Neural Architectures and Heterogeneous ASIC Accelerator Designs Targeting Multiple Tasks》。第一作者为圣母大学的博士后Lei Yang(杨蕾),她将于今年秋天加入墨西哥大学担任副教授;姜炜文、史弋宇为mentor,值得一提的是史教授就是去年那位在芝加哥利用“贪心算法”把持枪劫车匪徒抓获的老板。

作者提出了一个同时搜索神经网络的结构和硬件架构的方法NASAIC。
支持多个任务的DNN搜索,且支持异构硬件PE的搜索。这篇文章也对搜索空间进行了可视化,分析了搜索的好处。

方法

搜索框架

  • 给定多任务的workload W,最大化DNN网络的accuracy,并满足latency、energy、area和硬件使用量小于threshold
  • 加速器可以有多个sub-accelerators,每个sub-accelerators可以使用不同的dataflow,加速器按照DNN层进行前向预测
  • 多个任务使用执行不同的DNN,将DNNs的每个Layer分配到加速器的sub-accelerators上执行,计算reward

搜索空间

  • DNN
    • 为Workload中的每个Task $T_i\in W$ 搜索一个DNN $D_i=<B_i, L_i, H_i, acc_i>$
      • $B_i$为backbone
      • $L_i、H_i$为层数、每层的参数(channel size, 连接关系等)
    • 通过NAS去搜索$D_i$的参数$H_i$
  • ASIC Accelerator
    • 包含多个sub-accelerator,用NoC连接
    • 使用NAS搜索每个sub-accelerator的参数<dataflow,pe_number,noc_bandwidth>
      • dataflow可以选择shidiannao、NVDLA等
      • PE总数量限制小于4096
      • NoC总带宽限制小于64GB/s
    • memory buffer的大小根据最大化硬件利用率来

硬件性能评估

  • 使用MAESTRO(开源cost model)模拟,将网络层分配到硬件上执行,得到latency energy area

搜索方法

  • 用controller来sample每个network的结构和每个sub-accelerator的type和参数
  • 计算reward,并用policy gradient的方法更新controller
  • 交替搜索DNN和硬件
    • SA阶段:Neural Architecture exploration
    • SH阶段:Hardware design exploration

实验

  • 不同任务组合下的explore space
    • W1: CIFAR-10+Nuclei(segmentation)
    • W2: CIFAR-10+STL-10(classification)
    • W3: CIFAR-10
    • classification: ResNet-9架构
    • segmentation: UNet架构
    • sample 500个网络-每个网络sample 10种硬件设计
  • 观察
    • 最好的设计不一定最靠近限制线
    • 相比于NAS->ASIC和ASIC->HW-NAS,交替搜索能得到更好的效果
    • 异构设计比同构设计有优势

评价

多任务与异构神经网络的架构设计很有意思,虽然这篇文章只尝试了小数据集,但结果显示了异构设计的优势。

论文笔记 《Best of Both Worlds: AutoML Codesign of a CNN and its Hardware Accelerator》

这篇论文是2020年5月发表于arxiv的《Best of Both Worlds: AutoML Codesign of a CNN and its Hardware Accelerator》,作者是来自三星剑桥AI中心和牛津大学的研究员。第一作者是Mohamed S. Abdelfattah。通讯是牛津副教授Nicholas D. Lane(李克澜),做机器学习系统、手机传感器、边缘计算等,值得一提的是,Nicholas教授2011-2015在MSRA带过Mobile and Sensing Systems group (MASS)。

这篇文章对软件-硬件联合搜索进行了建模,使用强化学习搜索CNN网络结构和加速器硬件设计的参数,利用NASBench在CIFAR-10上比较了联合搜索、交替搜索和分离搜索三种搜索方式的优劣,最后再CIFAR-100上做了实验,使用1000个GPU hours搜索不错的网络。

方法

搜索框架

  • CNN和Hardware的搜索总空间为$S=O_{nn1}O_{nn2}…O_{hw1}O_{hw2}$
  • 目标为找到最优的参数,使得有Evaluate函数测试的overhead最小,$s^* = arg\min_{s\inS}E(s)$
  • 使用RL在空间S中进行搜索
    • 网络结构和google的NAS_RL一样,由Controller(RNN网络)一个个预测每一个参数
    • 优化算法使用policy gradient,更新的梯度为$\nabla_{\theta}\pi_{\theta}(s_t)E(s_t)$
  • Evaluate函数考虑accuracy、latency、area
    • 他们的weighted sum作为评分
    • $Evaluate(s)=w_a Norm(-area(s))+ w_l Norm(-lat(s))+ w_a Norm(acc(s))$
    • 其中Norm是(min,max)到(0,1)
  • Constraint
    • 对acc、lat和area有要求,如lat<一个值
    • 如果sample不满足constraint,则惩罚,reward为负分
      • Controller更不容易生成这些不满足条件的sample

CNN搜索空间

  • 采用了NASBench的搜索空间
    • 类似ResNet的结构,其中Block这里称作Cell的结构
    • 限制了最多7个operations、9个connections

硬件搜索空间

  • 采用了CHaiDNN库,能部署在FPGA上
    • Data buffer(调整depth)
    • 内外通信bandwidth
    • Conv Engine(调整 filter维度和pixel维度的并行度)
    • 1x1卷积和3x3卷积单元的比例
    • 是否使用片上Pooling单元

硬件性能评估

  • Area
    • 建模每个模块使用的CLB(configurable logic blocks)、DSP、BRAM与面积关系
    • 根据每个sample使用情况计算Area
    • 实际综合面积开销平均1.6%误差
  • Latency
    • FPGA上跑每个单元各自在不同配置下的时间,记录下来
    • 根据每个sample的模型查表直接计算Latency
    • 和实际有约15%的误差

NASBench探索

  • 将NASBench中的所有网络和所有硬件架构组合,产生3.7billion个数据。
  • 选取其中的Pareto-optimal画在一张图上,进行分析
    • 确实是一个三方向的trade-off
    • 只有0.0001%的样本在帕累托最优集上,因此手工设计是几乎不可能
    • 帕累托最优的不同网络的结构有136种和硬件架构有338种,说明没有能通吃的结构

设计搜索方法

  • Combined search: 一个controller,直接联合优化CNN结构和硬件
    • 效果最好
    • 但搜索空间大,收敛慢
  • Phase search: 两个controller,交替优化CNN结构和硬件
    • 效果稍微次于Combined search
    • 收敛更快
  • Separate search: 先CNN搜索,搜完之后再硬件搜索
    • 最好的10个网络里面,有8个没有满足lat和area的constraint
    • 不考虑硬件去搜索CNN结构,会导致硬件执行效率有很大的随机性

CIFAR-100实验

  • 用 performance/area 来evaluate网络
    • 训练过程中,逐渐加大performance/area的constraint
  • 使用Combined search,2300个sample
  • 平台:6x Machine x 8x Nvidia 1080 = 48Card
    • 共 ~1000GPU hours
  • 结果分析
    • 不使用pooling engine好
    • 硬件的设计和网络的需求很Match,data buffer刚好够

评价

这篇论文在硬件设计空间、硬件评估模型以及搜索策略上面都没有创新,算是延续了之前的设计。
亮点在于通过对于整个NASBench搜索空间的所有的网络拿出来进行了分析,并且给出了帕累托最优。证明了Codesign有很大潜力,并且搜索空间有规律性,人工设计效率低。

论文阅读: Device-Circuit-Architecture Co-Exploration for Computing-in-Memory Neural Accelerators

读了论文2020年5月发表在arxiv上的《Device-Circuit-Architecture Co-Exploration for Computing-in-Memory Neural Accelerators》(早期版本发表于19年11月),也是圣母大学史弋宇老师组的作品。第一作者为姜炜文,博士后,博士导师为匹兹堡大学的Jingtong Hu。

文章提出了搜索框架NACIM,对底层器件选用(device)、硬件架构设计(circuit)和神经网络结构(architecture)联合搜索,以得到最优的PIM神经网络加速器以及运行在上面的神经网络。在搜索时同时考虑了PIM硬件的variation。

方法

搜索空间

  • NN 神经网络结构
  • Quantization 量化
    • 每一层的Activation和Weight分别设定量化bitwidth
    • Integer(0-3bit) Fraction(0-6bit)
  • DataFlow
    • Weight/output/row stationary和no local reuse
    • 实际PIM适用于weight stationary
  • Circuit
    • PE、PE Array、buffer size、NoC bandwidth
  • Device
    • ReRAM, FeFET, STT-MRAM
    • 不同device有不同的random telegraph noise(RTN)

搜索方法

  • 交替搜索
    • explore NN+Quantization+Device
    • explore Quantization+Circuit

考虑PIM硬件的variation训练量化网络

  • 建模random telegraph noise(RTN)为高斯分布

硬件评估模型

  • 使用对Quantization支持的NeuroSIM建模

实验

  • CIFAR-10和Nuclei(segmentation)
    • CIFAR-10选用VGG-like Space(VLS)
    • Nuclei选用Encoder-Decoder Space(EDS)

评价

把搜索空间扩展到了器件层面,在训练过程中使用了针对器件随机误差的训练方法,大大减少了误差。虽然实验不多,但是很有开创性。

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

论文笔记 Experiences with ML-Driven Design: A NoC Case Study

这篇是AMD在HPCA 2020上《Experiences with ML-Driven Design: A NoC Case Study》发表论文的读书笔记,这篇文章以NoC Arbitrator的设计作为一个例子,提出了用机器学习的算法辅助系统的设计,尤其强调了专家知识参与到系统设计中的重要性。一作Jieming Yin是AMD的工程师,08年哈工大本科毕业,15年美国明尼苏达双城分校博士毕业。

这篇论文提出:使用机器学习可以帮助人类专家做出更好的系统设计,但不是直接使用机器学习那么简单,需要人去设计和优化专门的结构。这篇论文以NoC的Arbitrator作为一个例子,使用RL来解每一个router上面的arbitrator应该传输哪个数据的任务,通过分析RL的Agent网络,专家可以知道哪些输入特征是重要的,因此可以利用这些信息来设计一个更简单高效的Arbitrator,而不是直接使用RL的Agent。

方法

  • 使用一个好解释的三层NN来做RL的Agent
  • 通过分析输入feature连接中间隐层的weight平均大小来判断feature重要程度(positive negative)
  • 根据feature重要程度来设计硬件
  • 先通过一个模拟器的简单场景来做分析,得到一些结论,总结一些方法,再推到一个真实的复杂场景(APU模拟器)做分析

评价

这篇论文没有直接说用ML比其他方法是好的,而是以一种介绍一个opportunity的口吻来探索ML方法在system design中的应用,非常的机智。作者通过简单实验->复杂实验一步步分析结论,一步步总结方法的模式也是非常值得借鉴的。总的来说,我很喜欢这篇论文,但是遗憾的是没有和一些其他的方法充分比较、也没有很好地分析可解释性的问题,正好留下了一个机会。

论文笔记 Scalpel: Customizing DNN Pruning to the Underlying Hardware Parallelism

这篇是Michigan大学和ARM合作的发表在2017年 ISCA的论文《Scalpel: Customizing DNN Pruning to the Underlying Hardware Parallelism》,到今天的引用量为154。第一作者Jiecao Yu 俞杰草,本科毕业于浙江大学,14年留学密歇根大学(MS & Ph.D),导师Scott Mahlke,已经毕业在Facebook工作。

这篇论文发现了之前的剪枝方法虽然在weight的数量上减少了很多,但是由于稀疏运算的特性,它们在硬件上的效率不行。文章提出了两种新的剪枝方法,针对三种不同的硬件(Micro-controller,CPU,GPU),分别使用它们或者联合使用它们可以得到更高的加速比。

方法

  • SIMD aware的剪枝
    • 将硬件的SIMD并行度作为剪枝的参数,一块一块地进行剪枝
    • 适用于Micro-controller和fc
  • Node Pruning
    • 直接将一个neuron减掉
    • 适用于高并行度的GPU和conv

评价

这篇文章于2017年发表,当时有人已经意识到剪枝带来的硬件效率的问题,部分人选择在硬件架构的角度来做稀疏运算(如:2016 ISCA EIE, 2017 ISCA SCNN);这篇文章反其道而行之,从软件的角度来思考问题,通过硬件的特性来优化算法,最后取得一个不错的加速效果。在之后的文章里面,软件-硬件的联合优化就成了一个大趋势(如 2019 ISCA Eager Pruning等)。

Your browser is out-of-date!

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

×