摘? 要:近年來(lái),人工智能在各個(gè)領(lǐng)域的應(yīng)用上都取得了突破性的成功,深度學(xué)習(xí)作為人工智能最重要的研究方向,可以解決很多復(fù)雜及抽象的實(shí)際問(wèn)題。當(dāng)前深度學(xué)習(xí)得以流行,是得益于大數(shù)據(jù)和計(jì)算性能的提升,但其仍然遭受計(jì)算能力和數(shù)據(jù)量的瓶頸。針對(duì)數(shù)據(jù)量的需求,可以通過(guò)模型的調(diào)整、變更來(lái)緩解,但計(jì)算力的挑戰(zhàn)沒(méi)有捷徑。FPGA在深度學(xué)習(xí)算法的硬件加速方面有著高速度、低功耗等諸多優(yōu)勢(shì)。本文針對(duì)FPGA的特點(diǎn)在深度學(xué)習(xí)算法中的優(yōu)勢(shì)進(jìn)行分析。
關(guān)鍵詞:FPGA;硬件加速;深度學(xué)習(xí)
人工智能(Artificial Intelligence),英文縮寫為AI。它是研究、開(kāi)發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué)。對(duì)于人工智能應(yīng)用,特別是基于深度學(xué)習(xí)的應(yīng)用來(lái)說(shuō),很多應(yīng)用場(chǎng)景對(duì)實(shí)時(shí)性有著嚴(yán)格的要求,例如搜索、語(yǔ)音識(shí)別等,這些富文本應(yīng)用和模型對(duì)內(nèi)存帶寬有著更加嚴(yán)苛的需求。隨著新技術(shù)的不斷涌現(xiàn),F(xiàn)PGA的易用性和性能都將得到極大提升。從機(jī)器學(xué)習(xí),高性能計(jì)算,數(shù)據(jù)分析等領(lǐng)域,F(xiàn)PGA在更多樣化的應(yīng)用領(lǐng)域中已經(jīng)嶄露頭角。這些都與FPGA上嵌入了越來(lái)越多可用的on-chip存儲(chǔ)器有關(guān)。面對(duì)人工智能時(shí)代提出的更高要求,F(xiàn)PGA利用其特點(diǎn),在AI時(shí)代發(fā)揮其重要作用。[1]FPGA具有高速度、低功耗、穩(wěn)定、適用于流式的計(jì)算密集型任務(wù)和通信密集型任務(wù)、靈活而且開(kāi)發(fā)周期短等優(yōu)勢(shì),十分適合深度學(xué)習(xí)算法的實(shí)現(xiàn)。主要表現(xiàn)在以下幾點(diǎn):
1、FPGA內(nèi)部含有大量的計(jì)算單元,因此它的計(jì)算能力很強(qiáng),在進(jìn)行神經(jīng)網(wǎng)絡(luò)運(yùn)算的時(shí),F(xiàn)PGA的速度會(huì)比CPU快很多。
2、FPGA的最大特點(diǎn)是它的可編程性,能夠靈活地針對(duì)算法需求而修改電路。
3、在平均性能方面, FPGA可以根據(jù)特定的應(yīng)用去編程硬件,例如如果應(yīng)用里面的加法運(yùn)算非常多就可以把大量的邏輯資源去實(shí)現(xiàn)加法器。
4、使用FPGA對(duì)云計(jì)算的很多網(wǎng)絡(luò)功能進(jìn)行加速,能夠?qū)崿F(xiàn)更快速、穩(wěn)定、安全的云計(jì)算和網(wǎng)絡(luò)服務(wù)。
從整體上看,目前對(duì)于FPGA在深度學(xué)習(xí)中的應(yīng)用,研究方向主要集中在兩個(gè)方面:一個(gè)是和人工智能、機(jī)器學(xué)習(xí)相關(guān)的各個(gè)領(lǐng)域,比如FPGA微架構(gòu)、FPGA編程工具與編程語(yǔ)言,以及FPGA在AI的各種應(yīng)用等。另一個(gè)是FPGA的高層次綜合(High-Level Synthesis,HLS),也就是使用高層語(yǔ)言,如C++/OpenCL/Python等,對(duì)FPGA進(jìn)行有效的編程和使用。從宏觀上看,DNN(深度神經(jīng)網(wǎng)絡(luò))的硬件實(shí)現(xiàn)可以使用諸如CPU、GPU、FPGA或者ASIC等多種方式實(shí)現(xiàn)。CPU有著最高的靈活性,但性能不盡如人意;ASIC方案與之相反。而FPGA能夠在性能和靈活性之間達(dá)到良好的平衡。從微觀上看,F(xiàn)PGA方案本身對(duì)于DNN的實(shí)現(xiàn),既可以使用編寫底層RTL的方式,對(duì)特定的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行針對(duì)性的優(yōu)化;也可以采用高層次綜合(HLS)的方法,通過(guò)高層語(yǔ)言對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行快速描述。[2]但是,前者需要豐富的FPGA硬件設(shè)計(jì)與開(kāi)發(fā)經(jīng)驗(yàn),并伴隨著很長(zhǎng)的開(kāi)發(fā)周期;而后者由于開(kāi)發(fā)工具等限制,最終得到的硬件系統(tǒng)在性能上往往很難滿足設(shè)計(jì)要求。
對(duì)于幾種可實(shí)現(xiàn)深度學(xué)習(xí)算法的硬件分析如下:
(1)使用CPU:對(duì)于CPU來(lái)說(shuō),它所要求的編程量是比較少的并且有可遷移性的好處,但是串行處理的特點(diǎn)變成了它在深度學(xué)習(xí)領(lǐng)域的缺點(diǎn),而這個(gè)缺點(diǎn)是致命的。雖然這十幾年來(lái)CPU的性能得到了極大的提升,然而,這并沒(méi)有讓CPU再次走入深度學(xué)習(xí)研究者的視野。盡管在小數(shù)據(jù)集上CPU能有一定的計(jì)算能力表現(xiàn),多核使得它能夠并行處理,然而這對(duì)深度學(xué)習(xí)來(lái)說(shuō)還是遠(yuǎn)遠(yuǎn)不夠的。
(2)使用GPU:相比于CPU,GPU的核心數(shù)大大提高了,這也讓它有更強(qiáng)大的并行處理能力,它還有更加強(qiáng)大的控制數(shù)據(jù)流和儲(chǔ)存數(shù)據(jù)的能力。有研究表示CPU和GPU在處理目標(biāo)識(shí)別能力上, GPU的處理速度是CPU的3-10倍。
(3)使用ASIC:專用集成電路芯片(ASIC)由于其定制化的特點(diǎn),是一種比GPU更高效的方法。但是其定制化也決定了它的可遷移性低,一旦專用于一個(gè)設(shè)計(jì)好的系統(tǒng)中,要遷移到其它的系統(tǒng)是不可能的。并且,其造價(jià)高昂,生產(chǎn)周期長(zhǎng)。當(dāng)然,其優(yōu)越的性能還是能在一些領(lǐng)域勝任。例如在640×480pixel的圖像中識(shí)別速率能達(dá)到 60幀/秒。
(4)使用FPGA:FPGA在GPU和ASIC中取得了權(quán)衡,很好的兼顧了處理速度和控制能力。一方面,F(xiàn)PGA是可編程重構(gòu)的硬件,因此相比GPU有更強(qiáng)大的可調(diào)控能力;另一方面,與日增長(zhǎng)的門資源和內(nèi)存帶寬使得它有更大的設(shè)計(jì)空間。更方便的是,F(xiàn)PGA還省去了ASIC方案中所需要的流片過(guò)程。FPGA的一個(gè)缺點(diǎn)是其要求使用者能使用硬件描述語(yǔ)言對(duì)其進(jìn)行編程。 [3]
總之, GPU的優(yōu)勢(shì)在于大量數(shù)據(jù)的并行計(jì)算和浮點(diǎn)計(jì)算能力,但GPU功耗很高,是FPGA功耗的幾十倍甚至上百倍,相比之下,F(xiàn)PGA不僅具有數(shù)據(jù)并行的特點(diǎn),還具有流水線并行的特點(diǎn)。對(duì)于流式計(jì)算任務(wù),相比于GPU,F(xiàn)PGA在延遲方面有著天生的優(yōu)勢(shì)。對(duì)于通信密集型任務(wù),F(xiàn)PGA的優(yōu)勢(shì)就更大了,從吞吐量上講,F(xiàn)PGA的數(shù)據(jù)傳輸可以使用40Gbps甚至100Gbps的網(wǎng)線,任意大小的數(shù)據(jù)包都可以被線性處理。雖然GPU也能夠高性能處理數(shù)據(jù)包,但是GPU沒(méi)有網(wǎng)口,因此需要先把數(shù)據(jù)包由網(wǎng)卡收上來(lái),再去處理,這樣就限制了GPU的吞吐量。
深度學(xué)習(xí)算法的FPGA加速研究主要集中在一些局部的優(yōu)化技術(shù)上,如循環(huán)平鋪、轉(zhuǎn)換、數(shù)據(jù)優(yōu)化量化等,并主要對(duì)嵌入式FPGA進(jìn)行預(yù)測(cè)過(guò)程等局部的加速設(shè)計(jì)與實(shí)現(xiàn)。另一方面,隨著FPGA器件和云端部署等技術(shù)的發(fā)展,內(nèi)存帶寬已經(jīng)逐漸不再是DNN的算法瓶頸,取而代之的是單周期可以完成的乘加操作數(shù)量,這都將成為FPGA在人工智能以及深度學(xué)習(xí)領(lǐng)域中的發(fā)展趨勢(shì)。
參考文獻(xiàn):
[1]余凱,賈磊,陳雨強(qiáng),徐偉.深度學(xué)習(xí)的昨天、今天和明天[J].計(jì)算機(jī)研究與發(fā)展,2013,50(09):1799-1804
[2]張蔚敏,蔣阿芳,紀(jì)學(xué)毅.人工智能芯片產(chǎn)業(yè)現(xiàn)狀.《電信網(wǎng)技術(shù)》,2018年2月第2期.
[3]尹寶才,王文通,王立春.深度學(xué)習(xí)研究綜述[J].北京工業(yè)大學(xué)學(xué)報(bào),2015,41(01):48-59.
作者簡(jiǎn)介:周瑩(1987-),女,漢族,甘肅省天水市,碩士學(xué)歷,講師職稱。主要研究方向:FPGA應(yīng)用。