深度学习可以用FPGA实现吗

未来,FPGA将有效地适应深度学习的发展趋势
FPGA深度学习研究里程碑:
1987VHDL成为IEEE标准
1992GANGLION成为首个FPGA神经网络硬件实现项目(Cox et al.)
1994Synopsys推出第一代FPGA行为综合方案
1996VIP成为首个FPGA的CNN实现方案(Cloutier et al.)
2005FPGA市场价值接近20亿美元
2006首次利用BP算法在FPGA上实现5 GOPS的处理能力
2011Altera推出OpenCL,支持FPGA
出现大规模的基于FPGA的CNN算法研究(Farabet et al.)
2016在微软Catapult项目的基础上,出现基于FPGA的数据中心CNN算法加速(Ovtcharov et al.)
深度学习的未来不管是就FPGA还是总体而言,主要取决于可扩展性。要让这些技术成功解决未来的问题,必须要拓展到能够支持飞速增长的数据规模和架构。FPGA技术正在适应这一趋势,而硬件正朝着更大内存、更少的特征点数量、更好的互连性发展,来适应FPGA多重配置。英特尔收购了Altera,IBM与Xilinx合作,都昭示着FPGA领域的变革,未来也可能很快看到FPGA与个人应用和数据中心应用的整合。另外,算法设计工具可能朝着进一步抽象化和体验软件化的方向发展,从而吸引更广技术范围的用户。
至芯西安分中心地址:西安市高新区唐延路与锦业二路十字逸翠园i都会1号楼1单元403
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。热门推荐:
选自Medium
作者:Eugenio Culurciello
机器之心编译
参与:Rick R、吴攀
在这篇文章中,作者Eugenio Culurciello简述了几类硬件设计,希望能为大家更快的运行神经网络提供洞见。
我喜欢深度学习...
深度学习最近取得的成功势不可挡:从图像分类和语音识别到图片标注、理解视觉场景、视频概述、语言翻译、绘画,甚至是生成图像、语音、声音和音乐!
…而我想让它运行得飞快!
其成果令人震惊,因而需求就会增长。比如你是谷歌/ Facebook / Twitter 的工作人员:在你找到一种「阅读」图片或视频内容的方法来建立一个更贴近用户特征(他们的喜好、谈论对象、推荐、分享的内容)的模型之后,你会做什么?你可能会想做得更多!
或许你会使用 ResNet / Xception / denseNet 的某个版本来将用户图片分类为成千上万个类别。而如果你是某个互联网巨头企业的一员,你拥有许多的服务器和服务器群组,因而理想情况下你希望在这个现有架构上运行深度学习算法。然这种方法曾经很有效……直到你意识到自己用来分析文本语法结构的这些服务器现在所不得不进行的运算是你之前运行单一图像分类所需操作次数的一百万倍以上。而用户产生的数据则流动得越来越快:现实生活中每过一分钟就会产生 300 小时时长的视频!
服务器群组会消耗大量的功率,并且如果我们需要使用大量基础设施来处理图像和视频,那么我们就需要建立大量的发电装置,或是使用效率更高的方式在云端进行深度学习计算。能耗问题很难解决,因此我们最好走提高效率的路线。
然而对于需要更多用于深度学习解决方案的硬件和优化型芯片的领域来说,数据中心只是其中的一个方面。1000 瓦的计算系统对于自动驾驶汽车来说或许可行,但在许多其它的应用中,功率是一个很大的限制。比如无人机、机器人、手机、平板电脑和其它的移动设备。它们都需要几瓦甚至不到 1 瓦的功率预算才行。
还有很多消费类电子产品,比如智能相机、增强现实眼镜等设备,它们需要小功率,并且由于隐私问题,用户们可能不会想要采用云计算解决方案。
随着我们的家变得越来越智能,你会发现许多设备都会需要连续地使用深度学习应用、收集和处理数据。
那么…你就需要新的硬件,对吗?
所以我们需要新的硬件,一个比 Intel Xeon 所驱动的服务器更加高效的硬件。一个英特尔服务器 CPU 可能会消耗 100-150 瓦功率并需要一个有着冷却装置的超大系统来支持其性能的正常发挥。
还有哪些其它的选择?
图形处理器、GPU
现场可编程的逻辑器件、FPGA(现场可编程门阵列/Field-Programmable Gate Array)
定制芯片、特殊应用型集成电路、ASIC、芯片系统或 SoC
数字信号处理器、DSP
未来的、外星人发明的、由新的物理定律所发展出的技术
GPU 最早是为生成基于多边形网络的计算机图形而设计的。在最近几年,由于近来计算机游戏和图形引擎领域的需求和复杂度需要,GPU 积累了强大的处理性能。英伟达是 GPU 领域的领军者,能生产有数千个内核的处理器,这些内核的设计工作效率可以达到 100%。实际上这些处理器也非常适用于运行神经网络和矩阵乘法方面的计算。注意,矩阵向量的乘法运算被认为是「尴尬的并行(embarrassingly parallel)」,因为它可以通过简单的算法扩展被并行化(它们缺少分支因而可以避免缓存信息丢失)。
Titan X 是训练深度学习模型的一个最得力的助手。它拥有 3500 多个内核,每秒能够执行超过 11 万亿次浮点运算。更多测试性能方面的信息请参考这里(/soumith/convnet-benchmarks)。
由于 GPU 的超多核(~3500 个,对比 Intel Xeon 的 16 个/ Xeon Phi 的 32 个),英特尔的 CPU 和英伟达的 GPU 之间的竞争助长了后者的发展,使其 GPU 比 CPU 在时钟频率快 2~3 倍。GPU 核是更为复杂(分支预测和流程)的 CPU 核的流线型版本,但是前者许多都支持更高级别的并行运算,因而拥有更好的性能。
这种 GPU 很擅长训练深度学习系统――卷积神经网络或者循环神经网络。它们可以在仅仅几毫秒之内就运行一批 128 或 256 张图像。但是它们同时也会消耗大约 250 瓦的功率并且需要一个完整的计算机来支持运行,这又消耗了额外的 150 瓦的功率。一个高性能的 GPU 系统至少需要消耗 400 瓦的功率。
这并不适用于增强现实眼镜、无人机、手机、移动设备和小型机器人。甚至对于未来的消费级自动驾驶汽车来说也是不可接受的。
英伟达正在致力于开发效率更高的器件,比如 Tegra TX1、TX2(深度神经网络需要 12 瓦的能耗和每秒 ~100 千兆次浮点运算的性能,TX2 需要的更多)和更强大的 Drive PX(250 瓦,与一个 Titan X 的消耗量差不多)。
这里还要注意,在自动驾驶汽车和智能摄像机中,直播视频是必要的而图像批处理是不可能实现的,因为视频需要针对及时响应进行实时处理。
一般 GPU 的水平大约是 5 G-flops/s per W。如果我们想在移动系统中部署深度学习解决方案,那我们还需要更好的方法!
Xilinx 等公司的现代 FPGA 器件就是电子元器件中的乐高。我们可以使用其电路作为模块来构建出整个定制微处理器和复杂的异构系统。而在最近几年,FPGA 开始生产出越来越多的乘累加计算模块。这些 DSP 模块正如其名,能够执行乘法运算并可以被排列到一起来进行一定量的并行运算。
我们将 FPGA 应用于神经网络的研究历史已有 10 年时间。我们的工作始于来自纽约大学的 Yann LeCun 的开创性工作,尤其是 Clement Farabet。我们的协同合作制造出了 NeuFlow,它是一个复杂的、用于运行神经网络的数据流处理器。
从 2011 年到 2015 年早期,我们完善了一个全新的设计――nn-X。这项工作是由 Berin Martini 和 Vinayak Gokhale(来自我们的办公室)领导的。这套系统可以在 4 瓦的功率电力预算下实现 200 G-ops/s 的速度,也即 50 G-ops/s/W,这个结果几乎是 GPU 性能的 10 倍。
但是 nn-X 有两个很大的问题:
1. 当固定的卷积引擎(convolutional engine)未被使用时其利用率会很低
2. 高内存带宽
第一个问题是由于 nn-X 采用了固定的 10x10 卷积引擎,而当它在执行 3x3 卷积时,只有 9% 的 DSP 单元得到了有效利用。这一点后来是通过将一个 12x12 的网格分为 4x4 单元的 3x3 卷积器而得以解决。不幸的是该系统还需要高内存带宽,因为它并没有使用数据缓存且需要从内存中读取输入并直接将结果保存在内存中。像这样的 nn-X 不能进行扩展,且其 DPS 单元的利用率永远不会超过 75C80%。
设计方面有类似限制的系统也会有性能方面的限制。
我们所需的是一个带有数据缓存的系统,它可以使用任意组 DPS 单元来有效地(近乎 100% 地)利用资源。这种系统有 Microsoft Catapult 和我们的 SnowFlake 加速器,后者的利用率几乎可以达到 100%(更多内容即将呈现)。
微软使用 Altera 器件来实现创纪录的深度神经网络处理性能。不幸的是它并不是一个商业化的系统,而是一项微软的数据中心资产,因而还未对公众开放。中国的科技巨头企业百度也加入了这一队列。
高通、AMD、ARM、英特尔和英伟达都在致力于将定制化芯片整合进它们的现有解决方案中。Nervana 和 Movidius(目前都在英特尔旗下)已经或者说正在开发集合方案。SoC 在同一技术节点上所能提供的性能大约是 FPGA 系统的 10 倍,在特定结构中还要更高。由于 SoC 和处理器所需的功率变得越来越低,其区别将来自于新的集合内存系统和带宽对外部存储器的有效利用。在这一领域,整合为 systems-on-a-package(SOP)的 3D memory 至少可以节约 10 倍的功率。
DSP 已经存在了很长一段时间,它最初是用来执行矩阵算法的。但到目前为止,DSP 并没能真正提供任何有用的性能或是可以与 GPU 相匹敌的器件。为什么会这样呢?其主要原因就是核数量。DSP 主要用于电信系统,且无需拥有 16 个或 32 个以上的核。其工作负载并不需要这么多。相反,GPU 负载在近 10~15 年间一直在增加,因此它需要更多的核。最终,大约从 2006 年开始,英伟达的 GPU 在性能上就超过了 DSP。
Texas Instruments 公司还在开发 DSP,但是我们从中并没有看到任何有竞争力的性能。且许多 DSP 也已经被 FPGA 取代了。
Qualcomm 在它们的 SoC 中使用 DSP,并且其性能会有所加速,但是目前还没有足够多的信息来将它与其它的解决方案进行比较。
  原文链接:/towards-data-science/hardware-for-deep-learning-8d9b03df41a
&本文为机器之心编译,转载请联系本公众号获得授权。
  ?------------------------------------------------
加入机器之心(全球招聘):
投稿或寻求报道:
广告&商务合作:
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
1040文章数
知名IT评论人,曾就职于多家知名IT企业,现是科幻星系创建人
未来在这里发声。
新媒体的实践者、研究者和批判者。
立足终端领域,静观科技变化。深入思考,简单陈述。
智能硬件领域第一自媒体。当前位置:
展望FPGA在深度学习领域的未来
近十年来,人工智能又到了一个快速发展的阶段。深度学习在其发展中起到了中流砥柱的作用,尽管拥有强大的模拟预测能力,深度学习还面临着超大计算量的问题。在硬件层面上,GPU,ASIC,FPGA都是解决庞大计算量的方案。
  OFweek网讯 近十年来,人工智能又到了一个快速发展的阶段。深度学习在其发展中起到了中流砥柱的作用,尽管拥有强大的模拟预测能力,深度学习还面临着超大计算量的问题。在硬件层面上,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)。所谓监督学习,就是输出是有标记的学习,让模型通过训练,迭代收敛到目标值;而非监督学习不需要人为输入标签,模型通过学习发现数据的结构特征。比较常见的监督学习方法有逻辑回归、多层感知机、卷积神经网络登;而非监督学习主要有稀疏编码器、受限玻尔兹曼机、深度置信网络等。所有的这些都是通过神经网络来实现的,他们通常来说都是非常复杂的结构,需要学习的参数也非常多。但是神经网络也可以做简单的事情,比如XNOR门,如图。    在图1(a)中,两个输入x_1和x_2都是分别由一个神经元表示,在输入中还加入了一个作为偏置(bias)的神经元,通过训练学习参数,最终整个模型的参数收敛,功能和图1(b)真值表一模一样。图1(c)分类结果。  而通常来说,模型都是比较复杂的。比如ILSVRC2012年图像识别大赛中Krizhevsky等人构建出来的 Alex Net。他们一共构建了11层的神经网络(5个卷积层,3个全连接层,3个池化层),一共有65万个神经元,6千万个参数,最终达到了15.2%的识别错误率,大大领先于第二名的26.2%。    图2. Alex Net神经网络  当前深度学习得以流行,是得益于大数据和计算性能的提升。但其仍然遭受计算能力和数据量的瓶颈。针对数据量的需求,专家们可以通过模型的调整、变更来缓解,但计算力的挑战没有捷径。科大讯飞、百度、阿里、360在深度学习方面也面临着计算力的困扰。科大讯飞的深度学习平台属于计算密集型的平台,集群几百台机器之间要实现高速互联,是类似超算的结构,但它又不是一个非常典型的超算。科大讯飞最开始探索传统的方式,用大量CPU来支持大规模数据预处理,运行GMM-HMM等经典模型的训练,在千小时的数据量下,效果很不好。而360每天处理的数据有上亿条,参数50万以上,如果用CPU,每次模型训练就要花几天,这对于崇尚快速迭代的互联网公司运营来说简直是不可接受的。
责任编辑:Trista
免责声明:
本文仅代表作者个人观点,与
OFweek电子工程网
无关。其原创性以及文中陈述文字和内容未经本站证实,
对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅
作参考,并请自行核实相关内容。
邮箱/用户名:
忘记密码?
用其他账号登录: QQ
请输入评论
广东省/深圳市
四川省/成都市
广东省/深圳市
广东省/深圳市
广东省/深圳市
广东省/深圳市
北京市/海淀区
广东省/深圳市
广东省/深圳市
广东省/惠州市
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

我要回帖

 

随机推荐