fpga为什么不适合做深度学习training

当前位置:
展望FPGA在深度学习领域的未来
近十年来,人工智能又到了一个快速发展的阶段。深度学习在其发展中起到了中流砥柱的作用,尽管拥有强大的模拟预测能力,深度学习还面临着超大计算量的问题。在硬件层面上,GPU,ASIC,FPGA都是解决庞大计算量的方案。
  为什么选择FPGA  FPGA(Field Programmable Gate Array)是在PAL、GAL、CPLD等器件的基础上进一步发展的产物。它是作为专用领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有器件门电路数有限的缺点。FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。FPGA可以通过烧写位流文件对其进行反复编程,目前,绝大多数 FPGA 都采用基于 SRAM(Static Random Access Memory 静态随机存储器)工艺的查找表结构,通过烧写位流文件改变查找表内容实现配置。  下面讨论几种可实现深度学习算法的硬件。  使用CPU。在2006年的时候,人们还是用串行处理器处理机器学习的问题,当时Mutch 和 Lowe开发了一个工具FHLib(feature hierarchy library)用来处理hierarchical 模型。对于CPU来说,它所要求的编程量是比较少的并且有可迁移性的好处,但是串行处理的特点变成了它在深度学习领域的缺点,而这个缺点是致命的。时至今日,据2006年已经过去了十年,过去的十年的发展还是遵循着摩尔定律,CPU的性能得到了极大的提升,然而,这并没有让CPU再次走入深度学习研究者的视野。尽管在小数据集上CPU能有一定的计算能力表现,多核使得它能够并行处理,然而这对深度学习来说还是远远不够的。  使用GPU。GPU走进了研究者的视线,相比于CPU,GPU的核心数大大提高了,这也让它有更强大的并行处理能力,它还有更加强大的控制数据流和储存数据的能力。Chikkerur进行了CPU和GPU在处理目标识别能力上的差别,最终GPU的处理速度是CPU的3-10倍。  使用ASIC。专用集成(ASIC)由于其定制化的特点,是一种比GPU更高效的方法。但是其定制化也决定了它的可迁移性低,一旦专用于一个设计好的系统中,要迁移到其它的系统是不可能的。并且,其造价高昂,生产周期长,使得它在目前的研究中是不被考虑的。当然,其优越的性能还是能在一些领域胜任。用的就是ASIC 的方案,在640&480pixel的图像中识别速率能达到 60帧/秒。  使用FPGA。FPGA在GPU和ASIC中取得了权衡,很好的兼顾了处理速度和控制能力。一方面,FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面,与日增长的门资源和内存带宽使得它有更大的设计空间。更方便的是,FPGA还省去了ASIC方案中所需要的流片过程。FPGA的一个缺点是其要求使用者能使用硬件描述语言对其进行编程。但是,已经有科技公司和研究机构开发了更加容易使用的语言比如Impulse Accelerated Technologies Inc. 开发了C-to-FPGA编译器使得FPGA更加贴合用户的使用,耶鲁的E-Lab 开发了Lua脚本语言。这些工具在一定程度上缩短了研究者的开发时限,使研究更加简单易行。  在FPGA上运行LSTM神经网络  LSTM简介  传统的RNN由一个三层的网络:输入层it,隐藏层ht,输出层yt;其中ht的信息作用到下一时刻的输入,这样的结构简单的模仿了人脑的记忆功能,图3是其拓扑图:    只有一个隐藏层方程:  其中 Wx和 Wh分别是输入和隐藏层的权重,b 是偏置。  LSTM 是RNN(递归神经网络)的一种,在处理时序数据得到了最广泛的应用,它由门控制信息一共有三个个门:输入门it,遗忘门ft,输出门ot,另外还有隐藏层ht和记忆细胞ct。图4是其拓扑图:    输入门控制了某一时刻的输入;遗忘门通过作用到上一时刻记忆细胞上,控制了上一时刻的数据流要流多少进入下一时刻;记忆细胞是由上一时刻的输入和这一时刻的候选输入共同决定的;输出门作用到记忆细胞上,决定了这一时刻的隐藏层信息,并且送到下一层神经网络上。全部方程如下:    其中W 代表各自的权重,b 代表各自的偏置, & 是logistic sigmoid 函数:  设计FPGA模块  研究使用的FPGA是Xilinx的Zedboard Zynq ZC7020板子。图5是它的概览    LSTM主要进行的是矩阵的乘法和非线性函数的计算(tanh,sigmoid),因此,选择了Q8.8定点。  矩阵乘法由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模型的运算分为三个阶段:  
&&&&&&&&&&
责任编辑:Trista
免责声明:
本文仅代表作者个人观点,与
OFweek电子工程网
无关。其原创性以及文中陈述文字和内容未经本站证实,
对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅
作参考,并请自行核实相关内容。
邮箱/用户名:
忘记密码?
用其他账号登录: QQ
请输入评论
广东省/深圳市
四川省/成都市
广东省/深圳市
广东省/深圳市
广东省/深圳市
广东省/深圳市
北京市/海淀区
广东省/深圳市
广东省/深圳市
广东省/惠州市
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
傻丫头和高科技产物小心翼翼的初恋
CSDN &《程序员》编辑/记者,投稿&纠错等事宜请致邮
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
中国搜索引擎和网络服务公司百度(使用深度神经网络来提供语音识别、图像搜索,并服务于语境广告)决定生产环境服务器中使用FPGA而不是GPU。百度高级架构师Jian Ouyang表示,虽然个别的GPU提供峰值浮点性能,在百度使用的深度神经网络的应用中,相比相同的性能水平FPGA消耗更少的功率,并可以安装在刀片式服务器上,完全由连接在主板上的PCI Express总线供电。FPGA的一个主要优点是:因为一个计算得到的结果可以被直接馈送到下一个而无需在主存储器临时保存,存储器带宽需求比使用GPU或CPU实现时低得多。“使用FPGA,我们不需要修改服务器设计和环境,所以很容易大规模部署。我们需要许多功能来支持那些无法在同一时间部署到FPGA中的。但是,我们可以使用他们的可重配置在FPGA中按需移入和移出功能。重构时间小于10μs。” Ouyang说。百度团队通过使用一个简化的浮点引擎来进一步节省空间。“处理器提供的标准浮点实现可以处理所有可能的异常。但以我们的情况来看,我们并不需要处理所有IEEE[754]标准以外的情况。”原文:后使用快捷导航没有帐号?
查看: 399|回复: 2
FPGA在深度学习的未来
注册会员, 积分 138, 距离下一级还需 62 积分
论坛徽章:2
为什么选择FPGAFPGA(Field Programmable Gate Array)是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点[3]。FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。FPGA可以通过烧写位流文件对其进行反复编程,目前,绝大多数 FPGA 都采用基于 SRAM(Static Random Access Memory 静态随机存储器)工艺的查找表结构,通过烧写位流文件改变查找表内容实现配置。下面讨论几种可实现的硬件[4]。使用CPU。在2006年的时候,人们还是用串行处理器处理的问题,当时Mutch 和 Lowe开发了一个工具FHLib(feature hierarchy library)用来处理hierarchical 模型。对于CPU来说,它所要求的编程量是比较少的并且有可迁移性的好处,但是串行处理的特点变成了它在深度学习领域的缺点,而这个缺点是致命的。时至今日,据2006年已经过去了十年,过去的十年集成电路的发展还是遵循着摩尔定律,CPU的性能得到了极大的提升,然而,这并没有让CPU再次走入深度学习研究者的视野。尽管在小数据集上CPU能有一定的计算能力表现,多核使得它能够并行处理,然而这对深度学习来说还是远远不够的。使用GPU。GPU走进了研究者的视线,相比于CPU,GPU的核心数大大提高了,这也让它有更强大的并行处理能力,它还有更加强大的控制数据流和储存数据的能力。在[5]中,Chikkerur进行了CPU和GPU在处理目标识别能力上的差别,最终GPU的处理速度是CPU的3-10倍。使用ASIC。专用集成电路芯片(ASIC)由于其定制化的特点,是一种比GPU更高效的方法。但是其定制化也决定了它的可迁移性低,一旦专用于一个设计好的系统中,要迁移到其它的系统是不可能的。并且,其造价高昂,生产周期长,使得它在目前的研究中是不被考虑的。当然,其优越的性能还是能在一些领域胜任。[6]用的就是ASIC 的方案,在640×480pixel的图像中识别速率能达到 60帧/秒。使用FPGA。FPGA在GPU和ASIC中取得了权衡,很好的兼顾了处理速度和控制能力。一方面,FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面,与日增长的门资源和内存带宽使得它有更大的设计空间。更方便的是,FPGA还省去了ASIC方案中所需要的流片过程。FPGA的一个缺点是其要求使用者能使用硬件描述语言对其进行编程。但是,已经有科技公司和研究机构开发了更加容易使用的语言比如Impulse Accelerated Technologies Inc. 开发了C-to-FPGA编译器使得FPGA更加贴合用户的使用[7],耶鲁的E-Lab 开发了Lua脚本语言[8]。这些工具在一定程度上缩短了研究者的开发时限,使研究更加简单易行。
注册会员, 积分 138, 距离下一级还需 62 积分
论坛徽章:2
在FPGA上实现目标识别和分类,是深度学习在应用实施方面的一个重要研究和应用方向。
目前似乎没有看到有比较成熟的工具,帮助开发FPGA上caffe或tensorflow应用开发。
注册会员, 积分 139, 距离下一级还需 61 积分
论坛徽章:2
未来是美好的,但还是需要学习

我要回帖

 

随机推荐