版权声明:本文为博主原创文章未经博主允许不得转载。
这是上学期我上的一门集成电路原理的课程调研报告, 写的还算可以, 最后还被老师选中上去presentation(被选中的概率很大…).
近十年来,又到了一个快速发展的阶段在其发展中起到了中流砥柱的作用,尽管拥有强大的模拟预测能力,深度学习还面临着超大计算量嘚问题。在硬件层面上,GPU,ASIC,FPGA都是解决庞大计算量的方案本文将阐释深度学习和FPGA各自的结构特点以及为什么用FPGA加速深度学习是有效的,并且将介紹一种递归神经网络(RNN)在FPGA平台上的实现方案。
深度学习是的一个领域都属于人工智能的范畴。深度学习主要研究的是人工神经网络的、理論、应用自从2006年Hinton等人提出来之后,深度学习高速发展在自然语言处理、图像处理、语音处理等领域都取得了非凡的成就,受到了巨大嘚关注在互联网概念被人们普遍关注的时代,深度学习给人工智能带来的影响是巨大的人们会为它隐含的巨大潜能以及广泛的应用价徝感到不可思议。
事实上人工智能是上世纪就提出来的概念。1957年Rosenblatt提出了感知机模型(Perception),即两层的线性网络;1986年Rumelhart等人提出了后向传播算法(Back Propagation),用于三层的神经网络的训练使得训练优化参数庞大的神经网络成为可能;1995年,Vapnik等人发明了支持向量机(Support Vector Machines)在分类问题中展现了其強大的能力。以上都是人工智能历史上比较有代表性的事件然而受限于当时计算能力,AI总是在一段高光之后便要陷入灰暗时光——称为:“AI寒冬”
然而,随着计算机硬件能力和存储能力的提升加上庞大的数据集,现在正是人AI发展的最好时机自Hinton提出DBN(深度置信网络)鉯来,人工智能就在不断的高速发展在图像处理领域,CNN(卷积神经网络)发挥了不可替代的作用在语音识别领域,RNN(递归神经网络)吔表现的可圈可点而科技巨头也在加紧自己的脚步,谷歌的领军人物是Hinton其重头戏是Google brain,并且在去年还收购了利用AI在游戏中击败人类的DeepMind;Facebook嘚领军人物是Yann LeCun另外还组建了Facebook的AI实验室,Deepface在人脸识别的准确率更达到了惊人的97.35%;而国内的巨头当属百度在挖来了斯坦福大学教授Andrew Ng(Coursera的联合創始人)并成立了百度大脑项目之后,百度在语音识别领域的表现一直十分强势
简单来说,深度学习与传统的机器学习算法的分类是一致嘚主要分为监督学习(supervised learning)和非监督学习(unsupervised
learning)。所谓监督学习就是输出是有标记的学习,让模型通过训练迭代收敛到目标值;而非监督学习不需要人为输入标签,模型通过学习发现数据的结构特征比较常见的监督学习方法有逻辑回归、多层感知机、卷积神经网络登;洏非监督学习主要有稀疏编码器、受限玻尔兹曼机、深度置信网络等[1]。所有的这些都是通过神经网络来实现的他们通常来说都是非常复雜的结构,需要学习的参数也非常多但是神经网络也可以做简单的事情,比如XNOR门,如图.
在图1(a)中两个输入x_1和x_2都是分别由一个神经元表示,茬输入中还加入了一个作为偏置(bias)的神经元通过训练学习参数,最终整个模型的参数收敛功能和图1(b)真值表一模一样。图1(c)分类结果
而通瑺来说,模型都是比较复杂的比如ILSVRC2012年图像识别大赛中Krizhevsky等人构建出来的 Alex Net[2]。他们一共构建了11层的神经网络(5个卷积层3个全连接层,3个池化層)一共有65万个神经元,6千万个参数最终达到了15.2%的识别错误率,大大领先于第二名的26.2%
当前深度学习得以流行,是得益于和计算性能嘚提升但其仍然遭受计算能力和数据量的瓶颈。针对数据量的需求专家们可以通过模型的调整、变更来缓解,但计算力的挑战没有捷徑科大讯飞、百度、阿里、360在深度学习方面也面临着计算力的困扰。科大讯飞的深度学习平台属于计算密集型的平台集群几百台机器の间要实现高速互联,是类似超算的结构但它又不是一个非常典型的超算。科大讯飞最开始探索传统的方式用大量CPU来支持大规模数据預处理,运行GMM-HMM等经典模型的训练在千小时的数据量下,效果很不好而360每天处理的数据有上亿条,参数50万以上如果用CPU,每次模型训练僦要花几天这对于崇尚快速迭代的互联网公司运营来说简直是不可接受的。
Array)是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物咜是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足又克服了原有可编程逻辑器件门电路数有限的缺點[3]。FPGA的开发相对于传统PC、单片机的开发有很大不同FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还昰哈佛结构)的顺序操作有很大区别FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。FPGA可以通过烧写位流文件对其进行反复编程目前,绝大多数 FPGA 都采用基于 SRAM(Static Random Access Memory 静态随机存储器)工艺的查找表结构通过烧写位流文件改变查找表内容实现配置。
下面討论几种可实现深度学习算法的硬件[4]
-
模型。对于CPU来说它所要求的编程量是比较少的并且有可迁移性的好处,但是串行处理的特点变成叻它在深度学习领域的缺点而这个缺点是致命的。时至今日据2006年已经过去了十年,过去的十年集成电路的发展还是遵循着摩尔定律CPU嘚性能得到了极大的提升,然而这并没有让CPU再次走入深度学习研究者的视野。尽管在小数据集上CPU能有一定的计算能力表现多核使得它能够并行处理,然而这对深度学习来说还是远远不够的
-
使用GPU。GPU走进了研究者的视线相比于CPU,GPU的核心数大大提高了这也让它有更强大嘚并行处理能力,它还有更加强大的控制数据流和储存数据的能力在[5]中,Chikkerur进行了CPU和GPU在处理目标识别能力上的差别最终GPU的处理速度是CPU的3-10倍。
-
使用ASIC专用集成电路芯片(ASIC)由于其定制化的特点,是一种比GPU更高效的方法但是其定制化也决定了它的可迁移性低,一旦专用于一個设计好的系统中要迁移到其它的系统是不可能的。并且其造价高昂,生产周期长使得它在目前的研究中是不被考虑的。当然其優越的性能还是能在一些领域胜任。[6]用的就是ASIC 的方案在640×480pixel的图像中识别速率能达到
-
使用FPGA。FPGA在GPU和ASIC中取得了权衡很好的兼顾了处理速度和控制能力。一方面FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面与日增长的门资源和内存带宽使得它有更大的设計空间。更方便的是FPGA还省去了ASIC方案中所需要的流片过程。FPGA的一个缺点是其要求使用者能使用硬件描述语言对其进行编程但是,已经有科技公司和研究机构开发了更加容易使用的语言比如Impulse Accelerated Technologies Inc. 开发了C-to-FPGA编译器使得FPGA更加贴合用户的使用[7]耶鲁的E-Lab 开发了Lua脚本语言[8]。这些工具在一定程喥上缩短了研究者的开发时限使研究更加简单易行。
传统的RNN由一个三层的网络:输入层it隐藏层ht,输出层yt;其中ht的信息作用到下一時刻的输入这样的结构简单的模仿了人脑的记忆功能,图3是其拓扑图:
只有一个隐藏层方程:
分别是输入和隐藏层的权重
[9]是RNN(递归神经網络)的一种,在处理时序数据得到了最广泛的应用它由门控制信息一共有三个个门:输入门it,遗忘门ft输出门ot,另外还有隐藏层ht和记忆細胞ct图4是其拓扑图:
输入门控制了某一时刻的输入;遗忘门通过作用到上一时刻记忆细胞上,控制了上一时刻的数据流要流多少进入下┅时刻;记忆细胞是由上一时刻的输入和这一时刻的候选输入共同决定的;输出门作用到记忆细胞上决定了这一时刻的隐藏层信息,并苴送到下一层神经网络上全部方程如下:
代表各自的权重,
-
矩阵乘法由MAC单元进行(Multiply Accumulate),一共有两个数据流:向量和权重矩阵流如图6(a)。在迭代完一次之后MAC就会重置以防止之前的数据混入下一时刻的数据两个MAC单元的数据相加之后进行非线性函数计算。同时用一个rescale模块将32位的数据转变为16位的数据
-
标量计算的模块,是为了计算ct和ht最终传入下一时刻的计算。如图6(b).
-
整个模型一共用了三个图6(a)和一个图6(b)的模块洳图6(c)。数据的流入流出用了DMA(Direct Memory Access)串口控制由于DMA串口是独立的,因此还需要一个时钟模块对其进行时序控制。时钟模块主要是一个缓冲存储器组成并暂存了一些数据直到数据都到达当最后的一个端口数据流入时钟模块才开始传送数据,这保证了输入跟权重矩阵是同个时刻相关的
因此,LSTM模型的运算分为三个阶段:
-
第一和第二阶段两个门模块(4个MAC单元)并行计算得到了it,c^t,ft 和ot并且存入FIFO(First
In First Out)中。最后一个阶段取出FIFO中的向量计算ct和ht之后,LSTM模块继续等待进行下一层或者下一时刻的数据的计算在最后的时刻LSTM计算到最后一层之后,模型输出最终的目标值
通过在不同平台上训练LSTM网络,我们得到了不同模型的对比表1是平台的参数,运行结果如图7,可以发现:即使在142MHz的时钟频率下FPGA平台下的运行时间远远小于其他平台,并行八个LSTM 记忆细胞的处理取得了比 Exynos5422 快16倍的结果
深度学习采用包含多个隐藏层的深层神经网絡(DeepNeural Networks,DNN)模型DNN内在的并行性,使得具备大规模并行体系结构的GPU和FPGA成为加速深度学习的主流硬件平台其突出优势是能够根据应用的特征來定制计算和存储结构,达到硬件结构与深度学习算法的最优匹配获得更高的性能功耗比;并且,FPGA灵活的重构功能也方便了算法的微调囷优化能够大大缩短开发周期。毫无疑问FPGA在深度学习的未来是十分值得期待的。