深度学习FPGA实现基础知识0(FPGA击败GPU和GPP,成为深度学习的未来?)
需求说明:深度学习FPGA实现知识储备
来自:http://power.21ic.com/digi/technical/201603/46230.html
FPGA击败GPU和GPP,成为深度学习的未来?
近年来深度学习技术在计算机视觉、语音识别、自然语言处理等领域得到了广泛应用与高度关注。然而,在面对海量数据与复杂模型需求时,仅凭硬件加速的支持难以满足日益增长的数据量与模型规模的要求。为此,
现有的解决方案主要依赖图形处理单元(GPU)集群作为通用计算架构,
而可编程门阵列(FPGA)则提供了一个值得深入探讨的替代方案。
随着FPGA设计工具的日益流行,
它们能够更好地支持现有深度学习上层软件的需求,
从而使得FPGA在实际应用中更具操作性。
此外,
灵活的FPGA架构使得研究者能够在 GPU 固定架构之外实现更为高效的模型优化。
同时,在单位能耗方面,
FPGA的表现更为突出,
这对其在大规模服务器部署以及资源受限的嵌入式应用中的应用具有重要意义。
本文从硬件加速的角度探讨深度学习与 FPGA 的结合趋势与创新方向,
并试图揭示 FPGA 如何助力于推动人工智能技术的发展
简介
机器学习深刻影响了现代生活。无论是在网络上浏览个性化推荐内容、在手机上使用语音交互功能还是通过面部识别技术拍摄照片时,都运用了某种形式的人工智能技术。这一股人工智能的新潮流也伴随着算法设计理念的转变。过去基于数据的传统机器学习方法主要依赖于领域特定知识来人工塑造所学特征;而计算机则通过从大量示例数据中学习组合特征提取能力实现了性能的重大突破。这些基于数据的学习技术研究被称为深度学习,并受到两个重要研究群体的关注:一是致力于训练和部署模型以实现跨任务计算的研究者;二是希望通过部署这些模型来解决现实世界新应用的应用科学家们。然而目前两方面的进展仍受硬件加速能力的限制,在满足扩大现有数据规模和算法规模需求方面仍有较大空间
对于深度学习而言,在现代硬件加速中主要依赖 GPU 集群相当于 GPGPU 的一部分
以在算法加速方面强大的竞争力与GPU形成竞争成为一个重要议题。 FPGA对于是否立即支持不同的硬件需求成为一个重要议题。 FPGA在硬件设计上具有灵活性的优势,并且,在单位能耗水平下表现出色。 实现FPGA设计需要一定的硬件知识背景,并非所有人都具备这一技能。 最近的 FPGA工具开始引入 OpenCL 等软件级编程模型来提升性能。
对于那些致力于研究和开发设计工具的研究者们而言,在选择合适的工具时会遵循一定的筛选依据:包括友好性、可扩展性和计算效率等方面。随着FPGA凭借其高抽象化设计工具的优势更加容易编写,并且其可重构性使定制化架构成为可行选项。同时展现出高效的并行计算能力,则会显著提升指令处理速度。因此在一定程度上降低了训练大型模型所需的时间。
考虑到应用科学家的专业需求,在硬件选择上,则应着重于尽可能提高单位能耗所带来的性能提升。因此,在深度学习领域中具备显著优势的应用科学家可能会倾向于采用FPGA作为计算平台,并能根据特定应用场景进行定制架构优化
FPGA能够满足两类目标受众的需求,并被视为一个合理的选择。本文旨在探讨FPGA在深度学习领域的现状及其当前用于填补相关技术间差距的技术发展情况。因此本文具有三个主要研究目标:首先本研究希望揭示深度学习领域探索新型硬件加速平台的可能性并指出FPGA作为理想候选的优势;其次本研究将描绘FPGA支持深度学习的应用现状并分析其潜在局限性;最后本研究将为 FPGA 硬件加速方向提出关键建议以助其实现未来在深度学习领域的问题解决
FPGA
通常情况下,在评估硬件平台的加速效果时
从性能与灵活性两个维度出发,FPGA采用折中的方案。作为一类功能更为通用的可编程逻辑设备(PLD),其基本架构相对直观。 FPGA可以理解为在保证集成电路性能的同时具备了GPP可重新配置的灵活性。顺序逻辑部分可采用触发器(FF)实现,而组合逻辑则通过查找表(LUT)来完成。现代 FPGA 设计中通常会集成硬核组件以实现一些常用功能如全处理器内核、通信内核等,并支持运算内核和块内存(BRAM)。当前 FPGA 的发展趋势是向系统级芯片(SoC)方向演进,在同一芯片上集成了 ARM 协处理器和 FPGA 资源以提升整合度。全球 FPGA 市场目前由 Xilinx 领导着,并占据了超过 85% 的市场份额。与此同时,在固定功能逻辑领域 FPGA 正迅速取代 ASIC 和应用专用标准产品(ASSP)。预计到 2016 年末 FPGA 市场规模将达到 100 亿美元
从深度学习的角度看,在性能方面基于FPGA的加速器显著超过了基于传统GPP的设计。
最核心的是,在硬件加速设计领域中选择不同的架构提供了独特的研究视角。传统的GPU设计遵循软件执行模型,并围绕自主计算单元的并行性展开结构设计。因此,在深度学习技术中采用GPU的目标就是让算法能够适应这种软件驱动的架构,并实现计算过程中的并行性以及数据间依赖关系的有效管理。与此不同的是,在开发基于FPGA的深度学习技术时,则较少强调算法需要适应一种固定的计算结构,并留给算法层面更多的优化空间。由于某些复杂的底层硬件控制操作难以在高层软件语言中实现的特点,在FPGA上进行相应的处理则显得格外具有吸引力;然而这也带来了高昂的编译(定位及布线)时间成本;对于那些希望通过快速迭代进行系统设计的研究人员来说这往往成为一个挑战
除了编译时间之外,在吸引上层编程语言的研究人员和应用科学家来开发FPGA方面也面临着诸多困难。然而,在学习另一种软件编程语言方面却并非如此。相反,在硬件编程语言翻译技能方面却并非如此。与传统的软件编程语言相比的主要区别在于硬件描述语言(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及其团队的研究成果)
未来展望
深度学习的发展前景不仅体现在 FPGA 领域中,还与其整体表现息息相关
常用深度学习软件工具
广泛应用于深度学习领域的软件工具中一些已经意识到并采用OpenCL技术这一重要性
Caffe源自伯克利视觉与学习中心之发展,并在其GreenTea项目中为OpenCL提供了非正式的支持。此外,在AMD平台上的版本同样提供了相应的OpenCL支持。
Torch是一个以Lua语言为基础构建的科学计算框架,在应用领域具有广泛的使用;其项目CLTorch为OpenCL提供了非正式的技术支持。
Theano, developed by the University of Montreal, is currently working on an unofficial GPU array-based backend for OpenCL.
DeepCL,由Hugh Perkins开发的OpenCL库,用于训练卷积神经网络。
对于那些刚入行并希望选择学习工具的新手来说,在开始学习前我们建议他们首先从Caffe入手。这是因为该框架因其广泛使用而广受欢迎,并且其友好的用户界面使得上手相对容易。通过访问Caffe提供的model zoo资源库,在实际操作中使用已经训练好的模型进行测试非常便捷。
增加训练自由度
有人或许以为训练机器学习算法的过程是完全自动化了,但事实是,某些关键参数仍需人工微调.尤其在深度学习领域,随着模型复杂度的提升,涉及的可调节参数数量也随之剧增.这些可调节参数包括迭代次数、学习率、批量大小以及网络架构等要素.通过微调这些超参数,相当于从海量可能的设计方案中筛选出最适合解决当前问题的那个方案.传统的做法通常是根据经验或系统性搜索(如网格搜索或更具效率的随机搜索)来设定这些参数值.然而,近年来研究者开始采用适应性方法,其核心思路是利用尝试结果来指导后续配置选择.其中,贝叶斯优化因其高效性而成为最常用的方法.
无论采用何种策略进行超参数调节
低耗能计算节点集群
深度学习模型最令人惊叹的是其强大的扩展能力。无论是在发掘数据中的深层复杂特征还是优化数据中心应用性能时,在多节点计算架构间实现有效拓展都是不可或缺的任务。目前主流的技术方案主要依赖于配备InfiniBand互连技术的GPU集群以及Message Passing Interface(MPI)协议来实现上层并行计算能力和高效的节点间数据传输效率。然而,在面对日益多变的应用负载需求时采用FPGA可能会成为更为理想的选择因为FPGA能够提供高度可编程性在不同应用场景下可以根据负载需求进行灵活配置同时其能效比的优势也有助于降低下一代数据中心的成本
结语
相较于基于GPU及GPP的传统架构,在满足深度学习硬件需求方面FPGA提供了一个更具竞争力的选择。
整理来自:时间的诗
