最近几年,深度学习成为核算机视觉、语音辨认、天然言语处理等要害范畴中所最常运用的技能,被业界大为重视。但是,深度学习模型需求极为许多的数据和核算才干,只要更好的硬件加快条件,才干满意现有数据和模型规划持续扩展的需求。现有的处理计划运用图形处理单元(GPU)集群作为通用核算图形处理单元(GPGPU),但现场可编程门阵列(FPGA)供给了另一个值得探求的处理计划。日渐盛行的FPGA规划东西使其对深度学习范畴常常运用的上层软件兼容性更强,使得FPGA更简略为模型建立和布置者所用。FPGA架构灵敏,使得研讨者可以在比方GPU的固定架构之外进行模型优化探求。一起,FPGA在单位能耗下功用更强,这对大规划服务器布置或资源有限的嵌入式运用的研讨而言至关重要。本文从硬件加快的视角调查深度学习与FPGA,指出有哪些趋势和立异使得这些技能彼此匹配,并激起对FPGA怎么协助深度学习范畴开展的讨论。
简介
机器学习对日常日子影响深远。无论是在网站上点击个性化引荐内容、在智能手机上运用语音交流,或运用面部辨认技能来摄影,都用到了某种方式的人工智能技能。这股人工智能的新潮流也伴跟着算法规划的理念改变。曩昔依据数据的机器学习大多是运用详细范畴的专业常识来人工地“刻画”所要学习的“特征”,核算机从许多示例数据中习得组合特征提取体系的才干,则使得核算机视觉、语音辨认和天然言语处理等要害范畴完结了严峻的功用打破。对这些数据驱动技能的研讨被称为深度学习,现在正遭到技能界两个重要集体的重视:一是期望运用并练习这些模型、然后完结极高功用跨使命核算的研讨者,二是期望为实践国际中的新运用来布置这些模型的运用科学家。但是,他们都面对着一个约束条件,即硬件加快才干仍需加强,才或许满意扩展示有数据和算法规划的需求。
关于深度学习来说,现在硬件加快首要靠运用图形处理单元(GPU)集群作为通用核算图形处理单元(GPGPU)。比较传统的通用处理器(GPP),GPU的中心核算才干要多出几个数量级,也更简略进行并行核算。特别是NVIDIA CUDA,作为最干流的GPGPU编写渠道,各个首要的深度学习东西均用其来进行GPU加快。最近,开放型并行程序规划规范OpenCL作为异构硬件编程的代替性东西备受重视,而对这些东西的热心也在高涨。尽管在深度学习范畴内,OpenCL取得的支撑相较CUDA还略逊一筹,但OpenCL有两项共同的功用。首要,OpenCL对开发者开源、免费,不同于CUDA单一供货商的做法。其次,OpenCL支撑一系列硬件,包含GPU、GPP、现场可编程门阵列(FPGA)和数字信号处理器(DSP)。
作为GPU在算法加快上强有力的竞争者,FPGA是否当即支撑不同硬件,显得尤为重要。FPGA与GPU不同之处在于硬件装备灵敏,且FPGA在运转深化学习中要害的子程序(例如对滑动窗口的核算)时,单位能耗下一般能比GPU供给更好的体现。不过,设置FPGA需求详细硬件的常识,许多研讨者和运用科学家并不具有,正因如此,FPGA常常被看作一种行家专属的架构。最近,FPGA东西开端选用包含OpenCL在内的软件级编程模型,使其越来越受经干流软件开发练习的用户喜爱。
对调查一系列规划东西的研讨者而言,其对东西的选择规范一般与其是否具有用户友爱的软件开发东西、是否具有灵敏可晋级的模型规划办法以及是否能敏捷核算、以减缩大模型的练习时刻有关。跟着FPGA由于高笼统化规划东西的呈现而越来越简略编写,其可重构性又使得定制架构成为或许,一起高度的并行核算才干进步了指令履行速度,FPGA将为深度学习的研讨者带来优点。
对运用科学家而言,尽管有相似的东西级选择,但硬件选择的要点在于最大化进步单位能耗的功用,然后为大规划运转下降本钱。所以,FPGA凭仗单位能耗的微弱功用,加上为特定运用定制架构的才干,就能让深度学习的运用科学家获益。
FPGA能满意两类受众的需求,是一个合乎逻辑的选择。本文调查FPGA上深度学习的现状,以及现在用于添补两者间距离的技能开展。因而,本文有三个重要意图。首要,指出深度学习范畴存在探求全新硬件加快渠道的时机,而FPGA是一个抱负的选择。其次,勾勒出FPGA支撑深度学习的现状,指出潜在的约束。最终,对FPGA硬件加快的未来方向提出要害主张,协助处理往后深度学习所面对的问题。
FPGA
传统来说,在评价硬件渠道的加快时,有必要考虑到灵敏性和功用之间的权衡。一方面,通用处理器(GPP)可供给高度的灵敏性和易用性,但功用相对缺少功率。这些渠道往往更易于获取,可以低价的价格出产,而且适用于多种用处和重复运用。另一方面,专用集成电路(ASIC)可供给高功用,但价值是不行灵敏且出产难度更大。这些电路专用于某特定的运用程序,而且出产起来价格贵重且耗时。
FPGA是这两个极点之间的折中。FPGA归于一类更通用的可编程逻辑设备(PLD),而且简略来说,是一种可重新装备的集成电路。因而,FPGA既能供给集成电路的功用优势,又具有GPP可重新装备的灵敏性。FPGA可以简略地经过运用触发器(FF)来完结次序逻辑,并经过运用查找表(LUT)来完结组合逻辑。现代的FPGA还含有硬化组件以完结一些常用功用,例如全处理器内核、通讯内核、运算内核和块内存(BRAM)。别的,现在的FPGA趋势趋向于体系芯片(SoC)规划办法,即ARM协处理器和FPGA一般坐落同一芯片中。现在的FPGA商场由Xilinx主导,占有超越85%的商场份额。此外,FPGA正敏捷代替ASIC和运用专用规范产品(ASSP)来完结固定功用逻辑。 FPGA商场规划估计在2016年将到达100亿美元。
关于深度学习而言,FPGA供给了优于传统GPP加快才干的明显潜力。GPP在软件层面的履行依赖于传统的冯?诺依曼架构,指令和数据存储于外部存储器中,在需求时再取出。这推动了缓存的呈现,大大减轻了贵重的外部存储器操作。该架构的瓶颈是处理器和存储器之间的通讯,这严峻削弱了GPP的功用,特别影响深度学习常常需求获取的存储信息技能。比较较而言,FPGA的可编程逻辑原件可用于完结一般逻辑功用中的数据和操控途径,而不依赖于冯?诺伊曼结构。它们也可以运用分布式片上存储器,以及深度运用流水线并行,这与前馈性深度学习办法天然契合。现代FPGA还支撑部分动态重新装备,当FPGA的一部分被重新装备时另一部分仍可运用。这将对大规划深度学习形式产生影响,FPGA的各层可进行重新装备,而不打乱其他层正在进行的核算。这将可用于无法由单个FPGA包容的模型,一起还可经过将中心成果保存在本地存储以下降昂扬的全球存储读取费用。
最重要的是,比较于GPU,FPGA为硬件加快规划的探求供给了另一个视角。GPU和其它固定架构的规划是遵从软件履行模型,并环绕自主核算单元并行以履行使命建立结构。由此,为深度学习技能开发GPU的方针便是使算法习惯这一模型,让核算并行完结、保证数据彼此依赖。与此相反,FPGA架构是为运用程序专门定制的。在开发FPGA的深度学习技能时,较少强调使算法习惯某固定核算结构,然后留出更多的自在去探求算法层面的优化。需求许多杂乱的基层硬件操控操作的技能很难在上层软件言语中完结,但对FPGA履行却特别具有招引力。但是,这种灵敏性是以许多编译(定位和回路)时刻为本钱的,关于需求经过规划循环快速迭代的研讨人员来说这往往会是个问题。
除了编译时刻外,招引偏好上层编程言语的研讨人员和运用科学家来开发FPGA的问题尤为困难。尽管能流利运用一种软件言语常常意味着可以轻松地学习另一种软件言语,但关于硬件言语翻译技能来说却非如此。针对FPGA最常用的言语是Verilog和VHDL,两者均为硬件描绘言语(HDL)。这些言语和传统的软件言语之间的首要区别是,HDL仅仅单纯描绘硬件,而例如C言语等软件言语则描绘次序指令,并无需了解硬件层面的履行细节。有用地描绘硬件需求对数字化规划和电路的专业常识,尽管一些基层的完结决议可以留给主动合成东西去完结,但往往无法到达高效的规划。因而,研讨人员和运用科学家倾向于选择软件规划,因其现已非常老练,具有许多笼统和便当的分类来进步程序员的功率。这些趋势使得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与个人运用和数据中心运用的整合。别的,算法规划东西或许朝着进一步笼统化和体会软件化的方向开展,然后招引更广技能规模的用户。
常用深度学习软件东西
在深度学习最常用的软件东西中,有些东西现已在支撑CUDA的一起,认识到支撑OpenCL的必要性。这将使得FPGA更简略完结深度学习的意图。尽管据咱们所知,现在没有任何深度学习东西清晰表示支撑FPGA,不过下面的表格列出了哪些东西正朝支撑OpenCL方向开展:
Caffe,由伯克利视觉与学习中心开发,其GreenTea项目对OpenCL供给非正式支撑。Caffe还有支撑OpenCL的AMD版别。
Torch,依据Lua言语的科学核算结构,运用规模广,其项目CLTorch对OpenCL供给非正式支撑。
Theano,由蒙特利尔大学开发,其正在研制的gpuarray后端对OpenCL供给非正式支撑。
DeepCL,由Hugh Perkins开发的OpenCL库,用于练习卷积神经网络。
关于刚进入此范畴、期望选择东西的人来说,咱们的主张是从Caffe开端,由于它非常常用,支撑性好,用户界面简略。运用Caffe的model zoo库,也很简略用预先练习好的模型进行实验。
添加练习自在度
有人或许认为练习机器学习算法的进程是彻底主动的,实践上有一些超参数需求调整。关于深度学习尤为如此,模型在参数量上的杂乱程度常常伴跟着许多或许的超参数组合。可以调整的超参数包含练习迭代次数、学习速率、批梯度尺度、躲藏单元数和层数等等。调整这些参数,等于在一切或许的模型中,选择最适用于某个问题的模型。传统做法中,超参数的设置要么按照经历,要么依据体系网格查找或更有用的随机查找来进行。最近研讨者转向了习惯性的办法,用超参数调整的测验成果为装备依据。其间,贝叶斯优化是最常用的办法。
不论用何种办法调整超参数,现在运用固定架构的练习流程在某种程度上限制了模型的或许性,也便是说,咱们或许只在一切的处理计划中管窥了一部分。固定架构让模型内的超参数设置探求变得很简略(比方,躲藏单元数、层数等),但去探求不同模型间的参数设置变得很难(比方,模型类别的不同),由于假如要就一个并不简略契合某个固定架构的模型来进行练习,就或许要花很长时刻。相反,FPGA灵敏的架构,或许更适合上述优化类型,由于用FPGA能编写一个彻底不同的硬件架构并在运转时加快。
低耗能核算节点集群
深度学习模型最让人入神的便是其拓宽才干。不论是为了从数据中发现杂乱的高层特征,仍是为数据中心运用提高功用,深度学习技能常常在多节点核算根底架构间进行拓宽。现在的处理计划运用具有Infiniband互连技能的GPU集群和MPI,然后完结上层的并行核算才干和节点间数据的快速传输。但是,当大规划运用的负载越来越各不相同,运用FPGA或许会是更优的办法。FPGA的可编程行答应体系依据运用和负载进行重新装备,一起FPGA的能耗比高,有助于下一代数据中心下降本钱。
结语
比较GPU和GPP,FPGA在满意深度学习的硬件需求上供给了具有招引力的代替计划。凭仗流水线并行核算的才干和高效的能耗,FPGA将在一般的深度学习运用中展示GPU和GPP所没有的共同优势。一起,算法规划东西日渐老练,现在将FPGA集成到常用的深度学习结构已成为或许。未来,FPGA将有用地习惯深度学习的开展趋势,从架构上保证相关运用和研讨可以自在完结。