博客專欄

EEPW首頁 > 博客 > 聚焦 | GPU、FPGA和ASIC

聚焦 | GPU、FPGA和ASIC

發(fā)布人:旺材芯片 時間:2021-07-12 來源:工程師 發(fā)布文章

人工智能包括三個要素:算法,計算和數(shù)據(jù)。對人工智能的實現(xiàn)來說,算法是核心,計算、數(shù)據(jù)是基礎(chǔ)。在算法上來說,主要分為工程學(xué)法和模擬法。


工程學(xué)方法是采用傳統(tǒng)的編程技術(shù),利用大量數(shù)據(jù)處理經(jīng)驗改進提升算法性能;模擬法則是模仿人類或其他生物所用的方法或者技能,提升算法性能,例如遺傳算法和神經(jīng)網(wǎng)絡(luò)。而在計算能力來說,目前主要是使用 GPU 并行計算神經(jīng)網(wǎng)絡(luò),同時,F(xiàn)PGA 和 ASIC 也將是未來異軍突起的力量。


隨著百度、Google、Facebook、微軟等企業(yè)開始切入人工智能,人工智能可應(yīng)用的領(lǐng)域非常廣泛??梢钥吹剑磥砣斯ぶ悄艿膽?yīng)用將呈幾何級數(shù)的倍增。應(yīng)用領(lǐng)域包括互聯(lián)網(wǎng),金融,娛樂,政府機關(guān),制造業(yè),汽車,游戲等。從產(chǎn)業(yè)結(jié)構(gòu)來講,人工智能生態(tài)分為基礎(chǔ)、技術(shù)、應(yīng)用三層。應(yīng)用層包括人工智能+各行業(yè)(領(lǐng)域),技術(shù)層包括算法、模型及應(yīng)用開發(fā),基礎(chǔ)層包括數(shù)據(jù)資源和計算能力。



人工智能將在很多領(lǐng)域得到廣泛的應(yīng)用。目前重點部署的應(yīng)用有:語音識別,人臉識別,無人機,機器人,無人駕駛等。


1、深度學(xué)習(xí)



人工智能的核心是算法,深度學(xué)習(xí)是目前最主流的人工智能算法。深度學(xué)習(xí)在 1958 年就被提出,但直到最近,才真正火起來,主要原因在于:數(shù)據(jù)量的激增和計算機能力/成本。


深度學(xué)習(xí)是機器學(xué)習(xí)領(lǐng)域中對模式(聲音、圖像等等)進行建模的一種方法,它也是一種基于統(tǒng)計的概率模型。在對各種模式進行建模之后,便可以對各種模式進行識別了,例如待建模的模式是聲音的話,那么這種識別便可以理解為語音識別。而類比來理解,如果說將機器學(xué)習(xí)算法類比為排序算法,那么深度學(xué)習(xí)算法便是眾多排序算法當(dāng)中的一種,這種算法在某些應(yīng)用場景中,會具有一定的優(yōu)勢。


深度學(xué)習(xí)的學(xué)名又叫深層神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks ),是從很久以前的人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks)模型發(fā)展而來。這種模型一般采用計算機科學(xué)中的圖模型來直觀的表達,而深度學(xué)習(xí)的“深度”便指的是圖模型的層數(shù)以及每一層的節(jié)點數(shù)量,相對于之前的神經(jīng)網(wǎng)絡(luò)而言,有了很大程度的提升。


從單一的神經(jīng)元,再到簡單的神經(jīng)網(wǎng)絡(luò),到一個用于語音識別的深層神經(jīng)網(wǎng)絡(luò)。層次間的復(fù)雜度呈幾何倍數(shù)的遞增。


以圖像識別為例,圖像的原始輸入是像素,相鄰像素組成線條,多個線條組成紋理,進一步形成圖案,圖案構(gòu)成了物體的局部,直至整個物體的樣子。不難發(fā)現(xiàn),可以找到原始輸入和淺層特征之間的聯(lián)系,再通過中層特征,一步一步獲得和高層特征的聯(lián)系。想要從原始輸入直接跨越到高層特征,無疑是困難的。而整個識別過程,所需要的數(shù)據(jù)量和運算量是十分巨大的。


深度學(xué)習(xí)之所以能夠在今天得到重要的突破,原因在于:


1、海量的數(shù)據(jù)訓(xùn)練 

2、高性能的計算能力(CPU,GPU,F(xiàn)PGA,ASIC),兩者缺一不可。


2、算力


衡量芯片計算性能的重要指標(biāo)稱為算力。通常而言,將每秒所執(zhí)行的浮點運算次數(shù)(亦稱每秒峰值速度)作為指標(biāo)來衡量算力,簡稱為 FLOPS?,F(xiàn)有的主流芯片運算能力達到了 TFLOPS 級別。一個 TFLOPS(teraFLOPS)等於每秒萬億(=10^12)次的浮點運算。增加深度學(xué)習(xí)算力需要多個維度的齊頭并進的提升:


  • 1、系統(tǒng)并行程度 

  • 2、時鐘的速度 

  • 3、內(nèi)存的大小(包括register、cache、memory); 

  • 4、內(nèi)存帶寬(memory bandwidth)

  • 5、計算芯片同 CPU 之間的帶寬 

  • 6、還有各種微妙的硬件里的算法改進。


我們這篇報告將主要關(guān)注人工智能的芯片領(lǐng)域,著重討論 GPU,FPGA,ASIC 等幾種類型的芯片在人工智能領(lǐng)域的應(yīng)用和未來的發(fā)展。


3、GPU 簡介


GPU,又稱顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機和一些移動設(shè)備(如平板電腦、智能手機等)上圖像運算工作的微處理器,與 CPU 類似,只不過 GPU 是專為執(zhí)行復(fù)雜的數(shù)學(xué)和幾何計算而設(shè)計的,這些計算是圖形渲染所必需的。隨著人工智能的發(fā)展,如今的 GPU 已經(jīng)不再局限于 3D 圖形處理了,GPU 通用計算技術(shù)發(fā)展已經(jīng)引起業(yè)界不少的關(guān)注,事實也證明在浮點運算、并行計算等部分計算方面,GPU 可以提供數(shù)十倍乃至于上百倍于 CPU 的性能。


GPU 的特點是有大量的核(多達幾千個核)和大量的高速內(nèi)存,最初被設(shè)計用于游戲,計算機圖像處理等。GPU主要擅長做類似圖像處理的并行計算,所謂的“粗粒度并行(coarse-grain parallelism)”。這個對于圖像處理很適用,因為像素與像素之間相對獨立,GPU 提供大量的核,可以同時對很多像素進行并行處理。但這并不能帶來延遲的提升(而僅僅是處理吞吐量的提升)。


比如,當(dāng)一個消息到達時,雖然 GPU 有很多的核,但只能有其中一個核被用來處理當(dāng)前這個消息,而且 GPU 核通常被設(shè)計為支持與圖像處理相關(guān)的運算,不如 CPU 通用。GPU 主要適用于在數(shù)據(jù)層呈現(xiàn)很高的并行特性(data-parallelism)的應(yīng)用,比如 GPU 比較適合用于類似蒙特卡羅模擬這樣的并行運算。


CPU 和 GPU 本身架構(gòu)方式和運算目的不同導(dǎo)致了 CPU 和 GPU 之間的不同,主要不同點列舉如下。


正是因為 GPU 的特點特別適合于大規(guī)模并行運算,GPU 在 “深度學(xué)習(xí)”領(lǐng)域發(fā)揮著巨大的作用,因為 GPU 可以平行處理大量瑣碎信息。深度學(xué)習(xí)所依賴的是神經(jīng)系統(tǒng)網(wǎng)絡(luò)——與人類大腦神經(jīng)高度相似的網(wǎng)絡(luò)——而這種網(wǎng)絡(luò)出現(xiàn)的目的,就是要在高速的狀態(tài)下分析海量的數(shù)據(jù)。例如,如果你想要教會這種網(wǎng)絡(luò)如何識別出貓的模樣,你就要給它提供無數(shù)多的貓的圖片。而這種工作,正是 GPU 芯片所擅長的事情。而且相比于 CPU,GPU 的另一大優(yōu)勢,就是它對能源的需求遠(yuǎn)遠(yuǎn)低于 CPU。GPU 擅長的是海量數(shù)據(jù)的快速處理。


雖然機器學(xué)習(xí)已經(jīng)有數(shù)十年的歷史,但是兩個較為新近的趨勢促進了機器學(xué)習(xí)的廣泛應(yīng)用: 海量訓(xùn)練數(shù)據(jù)的出現(xiàn)以及 GPU 計算所提供的強大而高效的并行計算。人們利用 GPU 來訓(xùn)練這些深度神經(jīng)網(wǎng)絡(luò),所使用的訓(xùn)練集大得多,所耗費的時間大幅縮短,占用的數(shù)據(jù)中心基礎(chǔ)設(shè)施也少得多。GPU 還被用于運行這些機器學(xué)習(xí)訓(xùn)練模型,以便在云端進行分類和預(yù)測,從而在耗費功率更低、占用基礎(chǔ)設(shè)施更少的情況下能夠支持遠(yuǎn)比從前更大的數(shù)據(jù)量和吞吐量。


將 GPU 加速器用于機器學(xué)習(xí)的早期用戶包括諸多規(guī)模的網(wǎng)絡(luò)和社交媒體公司,另外還有數(shù)據(jù)科學(xué)和機器學(xué)習(xí)領(lǐng)域中一流的研究機構(gòu)。與單純使用 CPU 的做法相比,GPU 具有數(shù)以千計的計算核心、可實現(xiàn) 10-100 倍應(yīng)用吞吐量,因此 GPU 已經(jīng)成為數(shù)據(jù)科學(xué)家處理大數(shù)據(jù)的處理器。


綜上而言,我們認(rèn)為人工智能時代的 GPU 已經(jīng)不再是傳統(tǒng)意義上的圖形處理器,而更多的應(yīng)該賦予專用處理器的頭銜,具備強大的并行計算能力。


國內(nèi)在 GPU 芯片設(shè)計方面,還處于起步階段,與國際主流產(chǎn)品尚有一定的差距。不過星星之火,可以燎原。有一些企業(yè),逐漸開始擁有自主研發(fā)的能力,比如國內(nèi)企業(yè)景嘉微。景嘉微擁有國內(nèi)首款自主研發(fā)的 GPU 芯片 JM5400,專用于公司的圖形顯控領(lǐng)域。JM5400 為代表的圖形芯片打破外國芯片在我國軍用 GPU 領(lǐng)域的壟斷,率先實現(xiàn)軍用 GPU國產(chǎn)化。GPU JM5400 主要替代 AMD 的 GPU M9,兩者在性能上的比較如下。相比而言,公司的 JM5400 具有功耗低,性能優(yōu)的優(yōu)勢。


4、FPGA簡介



FPGA,即現(xiàn)場可編程門陣列,它是在 PAL、GAL、CPLD 等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。FPGA 芯片主要由 6 部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式 RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。


FPGA 還具有靜態(tài)可重復(fù)編程和動態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件的功能可以像軟件一樣通過編程來修改。FPGA能完成任何數(shù)字器件的功能,甚至是高性能 CPU 都可以用 FPGA 來實現(xiàn)。


FPGA 擁有大量的可編程邏輯單元,可以根據(jù)客戶定制來做針對性的算法設(shè)計。除此以外,在處理海量數(shù)據(jù)的時候,F(xiàn)PGA 相比于 CPU 和 GPU,獨到的優(yōu)勢在于:FPGA 更接近 IO。換句話說,F(xiàn)PGA是硬件底層的架構(gòu)。比如,數(shù)據(jù)采用 GPU 計算,它先要進入內(nèi)存,并在 CPU 指令下拷入 GPU 內(nèi)存,在那邊執(zhí)行結(jié)束后再拷到內(nèi)存被 CPU 繼續(xù)處理,這過程并沒有時間優(yōu)勢;而使用 FPGA 的話,數(shù)據(jù) I/O 接口進入 FPGA,在里面解幀后進行數(shù)據(jù)處理或預(yù)處理,然后通過 PCIE 接口送入內(nèi)存讓 CPU 處理,一些很底層的工作已經(jīng)被 FPGA 處理完畢了(FPGA 扮演協(xié)處理器的角色),且積累到一定數(shù)量后以 DMA 形式傳輸?shù)絻?nèi)存,以中斷通知 CPU 來處理,這樣效率就高得多。


雖然 FPGA 的頻率一般比 CPU 低,但 CPU 是通用處理器,做某個特定運算(如信號處理,圖像處理)可能需要很多個時鐘周期,而 FPGA 可以通過編程重組電路,直接生成專用電路,加上電路并行性,可能做這個特定運算只需要一個時鐘周期。


比如一般 CPU 每次只能處理 4 到 8 個指令,在 FPGA 上使用數(shù)據(jù)并行的方法可以每次處理 256 個或者更多的指令,讓FPGA可以處理比CPU多很多的數(shù)據(jù)量。


舉個例子,CPU 主頻 3GHz,F(xiàn)PGA主頻 200MHz,若做某個特定運算 CPU 需要 30 個時鐘周期,F(xiàn)PGA 只需一個,則耗時情況:CPU:30/3GHz =10ns;FPGA:1/200MHz =5ns??梢钥吹剑現(xiàn)PGA 做這個特定運算速度比 CPU 塊,能幫助加速。


北京大學(xué)與加州大學(xué)的一個關(guān)于 FPGA 加速深度學(xué)習(xí)算法的合作研究。展示了 FPGA 與 CPU 在執(zhí)行深度學(xué)習(xí)算法時的耗時對比。在運行一次迭代時,使用 CPU 耗時 375 毫秒,而使用 FPGA 只耗時 21 毫秒,取得了18倍左右的加速比。


FPGA 相對于 CPU 與 GPU 有明顯的能耗優(yōu)勢,主要有兩個原因。首先,在 FPGA 中沒有取指令與指令譯碼操作, 在 Intel 的 CPU 里面,由于使用的是 CISC 架構(gòu),僅僅譯碼就占整個芯片能耗的 50%;在 GPU 里面,取指令與譯碼也消耗了 10%~20%的能耗。其次,F(xiàn)PGA 的主頻比 CPU 與 GPU 低很多,通常 CPU 與 GPU 都在 1GHz 到 3GHz 之間,而 FPGA 的主頻一般在 500MHz 以下。如此大的頻率差使得 FPGA 消耗的能耗遠(yuǎn)低于 CPU 與 GPU。


FPGA與CPU在執(zhí)行深度學(xué)習(xí)算法時的耗能對比。在執(zhí)行一次深度學(xué)習(xí)運算,使用 CPU 耗能 36 焦,而使用 FPGA 只耗能 10 焦,取得了 3.5 倍左右的節(jié)能比。通過用 FPGA 加速與節(jié)能,讓深度學(xué)習(xí)實時計算更容易在移動端運行。


相比CPU和GPU,F(xiàn)PGA 憑借比特級細(xì)粒度定制的結(jié)構(gòu)、流水線并行計算的能力和高效的能耗,在深度學(xué)習(xí)應(yīng)用中展現(xiàn)出獨特的優(yōu)勢,在大規(guī)模服務(wù)器部署或資源受限的嵌入式應(yīng)用方面有巨大潛力。此外,F(xiàn)PGA 架構(gòu)靈活,使得研究者能夠在諸如 GPU 的固定架構(gòu)之外進行模型優(yōu)化探究。


5、ASIC簡介



ASIC(專用集成電路),是指應(yīng)特定用戶要求或特定電子系統(tǒng)的需要而設(shè)計、制造的集成電路。嚴(yán)格意義上來講,ASIC 是一種專用芯片,與傳統(tǒng)的通用芯片有一定的差異。是為了某種特定的需求而專門定制的芯片。


ASIC 作為集成電路技術(shù)與特定用戶的整機或系統(tǒng)技術(shù)緊密結(jié)合的產(chǎn)物,與通用集成電路相比,具有以下幾個方面的優(yōu)越性:體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低。回到深度學(xué)習(xí)最重要的指標(biāo):算力和功耗。我們對比 NVIDIA 的 GK210 和某 ASIC 芯片規(guī)劃的指標(biāo),如下所示:


從算力上來說,ASIC 產(chǎn)品的計算能力是 GK210 的 2.5 倍。第二個指標(biāo)是功耗, 功耗做到了 GK210 的 1/15。第三個指標(biāo)是內(nèi)部存儲容量的大小及帶寬。這個內(nèi)部 MEMORY 相當(dāng)于 CPU 上的 CACHE。深度雪地的模型比較大,通常能夠到幾百 MB 到 1GB 左右,會被頻繁的讀出來,如果模型放在片外的 DDR 里邊,對 DDR 造成的帶寬壓力通常會到 TB/S 級別。


全定制設(shè)計的ASIC,因為其自身的特性,相較于非定制芯片,擁有以下幾個優(yōu)勢:


  • 同樣工藝,同樣功能,第一次采用全定制設(shè)計性能提高 7.6 倍

  • 普通設(shè)計,全定制和非全定制的差別可能有 1~2 個數(shù)量級的差異

  • 采用全定制方法可以超越非全定制 4 個工藝節(jié)點(采用 28nm 做的全定制設(shè)計,可能比 5nm 做的非全定制設(shè)計還要好)我們認(rèn)為,ASIC 的優(yōu)勢,在人工智能深度學(xué)習(xí)領(lǐng)域,具有很大的潛力。


ASIC 在人工智能深度學(xué)習(xí)方面的應(yīng)用還不多,但是我們可以拿比特幣礦機芯片的發(fā)展做類似的推理。比特幣挖礦和人工智能深度學(xué)習(xí)有類似之處,都是依賴于底層的芯片進行大規(guī)模的并行計算。而 ASIC 在比特幣挖礦領(lǐng)域,展現(xiàn)出了得天獨厚的優(yōu)勢。


比特幣礦機的芯片經(jīng)歷了四個階段:CPU、GPU、FPGA 和 ASIC。ASIC 芯片是專為挖礦量身定制的芯片,它將 FPGA 芯片中在挖礦時不會使用的功能去掉,與同等工藝的 FPGA 芯片相比執(zhí)行速度塊,大規(guī)模生產(chǎn)后的成本也要低于 FPGA 芯片。

從 ASIC 在比特幣挖礦機時代的發(fā)展歷史,可以看出 ASIC 在專用并行計算領(lǐng)域所具有的得天獨厚的優(yōu)勢:算力高,功耗低,價格低,專用性強。谷歌最近曝光的專用于人工智能深度學(xué)習(xí)計算的TPU、其實也是一款 ASIC。


綜上,人工智能時代逐步臨近,GPU、FPGA、ASIC這幾塊傳統(tǒng)領(lǐng)域的芯片,將在人工智能時代迎來新的爆發(fā)。


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: 芯片

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉