FPGA在深度学习算法中的优势分析

2022-07-02 14:16周莹
科学与财富 2022年9期
关键词:深度学习

摘  要:近年来,人工智能在各个领域的应用上都取得了突破性的成功,深度学习作为人工智能最重要的研究方向,可以解决很多复杂及抽象的实际问题。当前深度学习得以流行,是得益于大数据和计算性能的提升,但其仍然遭受计算能力和数据量的瓶颈。针对数据量的需求,可以通过模型的调整、变更来缓解,但计算力的挑战没有捷径。FPGA在深度学习算法的硬件加速方面有着高速度、低功耗等诸多优势。本文针对FPGA的特点在深度学习算法中的优势进行分析。

关键词:FPGA;硬件加速;深度学习

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。对于人工智能应用,特别是基于深度学习的应用来说,很多应用场景对实时性有着严格的要求,例如搜索、语音识别等,这些富文本应用和模型对内存带宽有着更加严苛的需求。随着新技术的不断涌现,FPGA的易用性和性能都将得到极大提升。从机器学习,高性能计算,数据分析等领域,FPGA在更多样化的应用领域中已经崭露头角。这些都与FPGA上嵌入了越来越多可用的on-chip存储器有关。面对人工智能时代提出的更高要求,FPGA利用其特点,在AI时代发挥其重要作用。[1]FPGA具有高速度、低功耗、稳定、适用于流式的计算密集型任务和通信密集型任务、灵活而且开发周期短等优势,十分适合深度学习算法的实现。主要表现在以下几点:

1、FPGA内部含有大量的计算单元,因此它的计算能力很强,在进行神经网络运算的时,FPGA的速度会比CPU快很多。

2、FPGA的最大特点是它的可编程性,能够灵活地针对算法需求而修改电路。

3、在平均性能方面, FPGA可以根据特定的应用去编程硬件,例如如果应用里面的加法运算非常多就可以把大量的逻辑资源去实现加法器。

4、使用FPGA对云计算的很多网络功能进行加速,能够实现更快速、稳定、安全的云计算和网络服务。

从整体上看,目前对于FPGA在深度学习中的应用,研究方向主要集中在两个方面:一个是和人工智能、机器学习相关的各个领域,比如FPGA微架构、FPGA编程工具与编程语言,以及FPGA在AI的各种应用等。另一个是FPGA的高层次综合(High-Level Synthesis,HLS),也就是使用高层语言,如C++/OpenCL/Python等,对FPGA进行有效的编程和使用。从宏观上看,DNN(深度神经网络)的硬件实现可以使用诸如CPU、GPU、FPGA或者ASIC等多种方式实现。CPU有着最高的灵活性,但性能不尽如人意;ASIC方案与之相反。而FPGA能够在性能和灵活性之间达到良好的平衡。从微观上看,FPGA方案本身对于DNN的实现,既可以使用编写底层RTL的方式,对特定的网络结构进行针对性的优化;也可以采用高层次综合(HLS)的方法,通过高层语言对网络结构进行快速描述。[2]但是,前者需要丰富的FPGA硬件设计与开发经验,并伴随着很长的开发周期;而后者由于开发工具等限制,最终得到的硬件系统在性能上往往很难满足设计要求。

对于几种可实现深度学习算法的硬件分析如下:

(1)使用CPU:对于CPU来说,它所要求的编程量是比较少的并且有可迁移性的好处,但是串行处理的特点变成了它在深度学习领域的缺点,而这个缺点是致命的。虽然这十几年来CPU的性能得到了极大的提升,然而,这并没有让CPU再次走入深度学习研究者的视野。尽管在小数据集上CPU能有一定的计算能力表现,多核使得它能够并行处理,然而这对深度学习来说还是远远不够的。

(2)使用GPU:相比于CPU,GPU的核心数大大提高了,这也让它有更强大的并行处理能力,它还有更加强大的控制数据流和储存数据的能力。有研究表示CPU和GPU在处理目标识别能力上, GPU的处理速度是CPU的3-10倍。

(3)使用ASIC:专用集成电路芯片(ASIC)由于其定制化的特点,是一种比GPU更高效的方法。但是其定制化也决定了它的可迁移性低,一旦專用于一个设计好的系统中,要迁移到其它的系统是不可能的。并且,其造价高昂,生产周期长。当然,其优越的性能还是能在一些领域胜任。例如在640×480pixel的图像中识别速率能达到 60帧/秒。

(4)使用FPGA:FPGA在GPU和ASIC中取得了权衡,很好的兼顾了处理速度和控制能力。一方面,FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面,与日增长的门资源和内存带宽使得它有更大的设计空间。更方便的是,FPGA还省去了ASIC方案中所需要的流片过程。FPGA的一个缺点是其要求使用者能使用硬件描述语言对其进行编程。 [3]

总之, GPU的优势在于大量数据的并行计算和浮点计算能力,但GPU功耗很高,是FPGA功耗的几十倍甚至上百倍,相比之下,FPGA不仅具有数据并行的特点,还具有流水线并行的特点。对于流式计算任务,相比于GPU,FPGA在延迟方面有着天生的优势。对于通信密集型任务,FPGA的优势就更大了,从吞吐量上讲,FPGA的数据传输可以使用40Gbps甚至100Gbps的网线,任意大小的数据包都可以被线性处理。虽然GPU也能够高性能处理数据包,但是GPU没有网口,因此需要先把数据包由网卡收上来,再去处理,这样就限制了GPU的吞吐量。

深度学习算法的FPGA加速研究主要集中在一些局部的优化技术上,如循环平铺、转换、数据优化量化等,并主要对嵌入式FPGA进行预测过程等局部的加速设计与实现。另一方面,随着FPGA器件和云端部署等技术的发展,内存带宽已经逐渐不再是DNN的算法瓶颈,取而代之的是单周期可以完成的乘加操作数量,这都将成为FPGA在人工智能以及深度学习领域中的发展趋势。

参考文献:

[1]余凯,贾磊,陈雨强,徐伟.深度学习的昨天、今天和明天[J].计算机研究与发展,2013,50(09):1799-1804

[2]张蔚敏,蒋阿芳,纪学毅.人工智能芯片产业现状.《电信网技术》,2018年2月第2期.

[3]尹宝才,王文通,王立春.深度学习研究综述[J].北京工业大学学报,2015,41(01):48-59.

作者简介:周莹(1987-),女,汉族,甘肃省天水市,硕士学历,讲师职称。主要研究方向:FPGA应用。

猜你喜欢
深度学习
有体验的学习才是有意义的学习
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
基于深度卷积网络的人脸年龄分析算法与实现