- 文献综述(或调研报告):
本次毕设主要针对ASIC实现的架构进行探索。由于神经网络训练和推理计算的规整性,针对其设计的ASIC加速器架构有很大的优化空间。由于加速器的功耗主要消耗在访存上[1],因此优先对数据流进行优化,最大化数据复用,以减少访存上的能量消耗,提高能效。DNN加速器的架构有以下几种:(1) 2014年,陈云霁等人发布了DianNao架构[2]。DianNao架构采用名为“神经功能单元(NFU)”作为计算的基础单元,将不同的层都化简为两到三个计算步骤,再将这两到三个计算步骤流水化,从而实现神经网络的正向传播。同时,DianNao还选择了高效实现访存作为切入点,设计了三块片上存储单元:NBin、NBout和SB,分别用来保存每一层的输入数据、输出数据和权值。在此基础上,陈云霁又提出了DaDianNao[3]和shiDianNao[4]等,以解决内存带宽不足的问题。(2) 2016年,Chen Y H 等人提出了eyeriss架构[5]。Eyeriss以数据复用方式为出发点,考虑到现有的数据流仅仅最大化一种输入数据的复用,或仅仅最小化部分和的累加成本,这种单一的优化方式在卷积层尺寸变化时可能会导致效果变差。所以eyeriss提出了一种同时优化三种数据复用的数据流——RS(Row Stationary),以适应各种不同的算法和硬件环境。RS首先将高维的卷积运算分解成一系列的1D conv primitive。通过logical mapping、physical mapping两步映射将这些原语映射到PE阵列上。该数据流取得了比基础复用方式如WS、OS和NLR等更好的表现[6]。(3)2018年,eyeriss v2[7]提出了基于前代架构的改进版本数据流RS 。可实现空间平铺来自所有维度的数据,以充分利用高并行性的性能。为了支持RS ,它进一步提出了低成本和可扩展的NoC设计,称为分层网格,连接处理元素阵列的高带宽全局缓冲区(PE)处于两级层次结构中。这可以实现高带宽数据交换,同时仍然能够利用任何可用的数据重用。(4) 2017年,谷歌提出TPU(tensor processing unit)架构[8],支持tensoflow框架,速度达到了10 TOPS/W。同时,谷歌应用了脉动阵列技术,用以平衡访存和计算,使得PE能够在访存的瓶颈下被充分利用。(5)2018年,NNest[9]提供了一种对DNN加速器功耗的快速评估方法,其中使用了一种多层数据复用架构。NNest将存储分为了四个层次:DRAM、Global Buffer、Local Buffer和ALU,数据从上一级存储器中被切块并取得,存储到下一级存储器中,最后在ALU中进行计算。
本次设计需要在架构上运行移动端DNN算法。移动端DNN算法是指维持精度不变或略微降低,大幅减少参数量和计算参数的,适合移动端部署的网络。移动端DNN有(1)MobileNet[10]。MobileNet是为移动端和嵌入式设备提出的轻量级网络,使用深度可分离卷积(depthwise separable convolutions)和逐点卷积(pointwise convolution)构建深度神经网络。同时引入两个超参数,用以定义网络的权重宽度和输入图大小,进一步缩小模型。MobileNet是一个VGG-like网络,网络结构比较规整,易于使用架构语言表达。(2)ShuffleNet[11]。ShuffleNet使用了通道拖移、逐点组卷积和深度可分离卷积技术,解决了特征学习局限的问题,降低了权重参数的数量。使用三种方法形成的卷积层叫做shuffle单元。作者使用shuffle单元代替了ResNet中的残差块结构,形成了ShuffleNet。对比传统网络,在与传统网络相同的参数量和计算次数下达到了更好的效果。(3)MobileNet V2[12]。相比于MobileNet V1,V2引入了Inverted residual 以及Linear Bottlenecks,解决了ReLu对特征的破坏,环节训练过程中特征退化的问题,对比前代网络,使参数量从5.1M降低至4.3M,乘加次数从1.3B降低至0.8B,而精度几乎不变。
目前,针对架构的simulator未有一个通用的软件,多为架构的开发者自行定义,这就造成了未流片的DNN加速器功耗和性能的度量不一致。目前的模拟器主要有RTL仿真,FPGA板级验证和软件模拟等。对于预设计,通常使用软件模拟的方式进行验证。例如,eyeriss使用的预设计模拟器[13],将访存的能耗分为四个等级,DRAM、Global buffer、NoC和RF,对每一个级别的访存设定一个基于经验的归一化能耗(图 1)。
图 1
由于乘加计算消耗的能量相对于DRAM可以忽略,因此可以仅仅考虑数据存取的功耗。将一层卷积层计算的能量消耗分为两个部分:(1)从上一级存储器中读取权重和输入数据的消耗,(2)累加部分和的消耗。通过计算每个级别的访问次数来量化能量消耗,并且利用图1中的归一化能量对每个级别的访问能量进行加权,通过组合来自两种类型的输入数据和psum的结果来获得数据流的总数据存取能耗。又例如NNest[9],一种早期设计空间探索工具,可以基于高级网络拓扑和架构特征快速准确地估计DNN推理加速器的面积/性能/能量,而无需低级别RTL代码。NNest配备了广义的空间架构框架,能够在广泛的架构/微架构参数上进行快速高维设计空间探索。NNest将存储分为了四个层次:DRAM、Global Buffer、Local Buffer和ALU,数据从上一级存储器中被切块并取得,存储到下一级存储器中,最后在ALU中进行计算。NNest提供了两种卷积计算数据复用方式,分别是IWR和PR,两种方式的区别在于其数据复用的顺序不同。NNest根据架构得到访存计算公式,代入相关的架构参数,即可获得访存次数等信息,再使用cacti[14]工具计算芯片的能耗和面积数据。Cacti工具是一个存储器模块的ASIC仿真分析工具,将一系列缓存参数输入,计算访问时间,功率,周期时间和缓存的面积,目前该工具已开源。Aladdin[15]也是一种pre-RTL的能耗性能加速器模拟器,可以实现大型设计空间探索定制架构。Aladdin基于动态数据依赖图,通过用户输入的C代码描述硬件行为,config文件描述硬件约束,输出加速器的perfomance,power,area。
[1] Sze V, Chen Y H, Yang T J, et al. Efficient processing of deep neural networks: A tutorial and survey[J]. Proceedings of the IEEE, 2017, 105(12): 2295-2329.
[2] Chen T, Du Z, Sun N, et al. Diannao: A small-footprint high-throughput accelerator for ubiquitous machine-learning[C]//ACM Sigplan Notices. ACM, 2014, 49(4): 269-284.
[3] Chen Y, Luo T, Liu S, et al. Dadiannao: A machine-learning supercomputer[C]//Proceedings of the 47th Annual IEEE/ACM International Symposium on Microarchitecture. IEEE Computer Society, 2014: 609-622.
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。