(文章来源:OFweek)
作为GPU在算法加速上强有力的竞争者,FPGA是否立即支持不同硬件,显得尤为重要。FPGA与GPU不同之处在于硬件配置灵活,且FPGA在运行深入学习中关键的子程序(例如对滑动窗口的计算)时,单位能耗下通常能比GPU提供更好的表现。不过,设置FPGA需要具体硬件的知识,许多研究者和应用科学家并不具备,正因如此,FPGA经常被看作一种行家专属的架构。最近,FPGA工具开始采用包括OpenCL在内的软件级编程模型,使其越来越受经主流软件开发训练的用户青睐。
对考察一系列设计工具的研究者而言,其对工具的筛选标准通常与其是否具备用户友好的软件开发工具、是否具有灵活可升级的模型设计方法以及是否能迅速计算、以缩减大模型的训练时间有关。随着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的可编程逻辑原件可用于实现普通逻辑功能中的数据和控制路径,而不依赖于冯·诺伊曼结构。
最重要的是,相比于GPU,FPGA为硬件加速设计的探索提供了另一个视角。GPU和其它固定架构的设计是遵循软件执行模型,并围绕自主计算单元并行以执行任务搭建结构。由此,为深度学习技术开发GPU的目标就是使算法适应这一模型,让计算并行完成、确保数据相互依赖。与此相反,FPGA架构是为应用程序专门定制的。在开发FPGA的深度学习技术时,较少强调使算法适应某固定计算结构,从而留出更多的自由去探索算法层面的优化。需要很多复杂的下层硬件控制 *** 作的技术很难在上层软件语言中实现,但对FPGA执行却特别具有吸引力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)