聚焦 | GPU、FPGA和ASIC
人工智能包括三個(gè)要素:算法,計算和數據。對人工智能的實(shí)現來(lái)說(shuō),算法是核心,計算、數據是基礎。在算法上來(lái)說(shuō),主要分為工程學(xué)法和模擬法。
工程學(xué)方法是采用傳統的編程技術(shù),利用大量數據處理經(jīng)驗改進(jìn)提升算法性能;模擬法則是模仿人類(lèi)或其他生物所用的方法或者技能,提升算法性能,例如遺傳算法和神經(jīng)網(wǎng)絡(luò )。而在計算能力來(lái)說(shuō),目前主要是使用 GPU 并行計算神經(jīng)網(wǎng)絡(luò ),同時(shí),FPGA 和 ASIC 也將是未來(lái)異軍突起的力量。
隨著(zhù)百度、Google、Facebook、微軟等企業(yè)開(kāi)始切入人工智能,人工智能可應用的領(lǐng)域非常廣泛??梢钥吹?,未來(lái)人工智能的應用將呈幾何級數的倍增。應用領(lǐng)域包括互聯(lián)網(wǎng),金融,娛樂(lè ),政府機關(guān),制造業(yè),汽車(chē),游戲等。從產(chǎn)業(yè)結構來(lái)講,人工智能生態(tài)分為基礎、技術(shù)、應用三層。應用層包括人工智能+各行業(yè)(領(lǐng)域),技術(shù)層包括算法、模型及應用開(kāi)發(fā),基礎層包括數據資源和計算能力。
人工智能將在很多領(lǐng)域得到廣泛的應用。目前重點(diǎn)部署的應用有:語(yǔ)音識別,人臉識別,無(wú)人機,機器人,無(wú)人駕駛等。
1、深度學(xué)習
人工智能的核心是算法,深度學(xué)習是目前最主流的人工智能算法。深度學(xué)習在 1958 年就被提出,但直到最近,才真正火起來(lái),主要原因在于:數據量的激增和計算機能力/成本。
深度學(xué)習是機器學(xué)習領(lǐng)域中對模式(聲音、圖像等等)進(jìn)行建模的一種方法,它也是一種基于統計的概率模型。在對各種模式進(jìn)行建模之后,便可以對各種模式進(jìn)行識別了,例如待建模的模式是聲音的話(huà),那么這種識別便可以理解為語(yǔ)音識別。而類(lèi)比來(lái)理解,如果說(shuō)將機器學(xué)習算法類(lèi)比為排序算法,那么深度學(xué)習算法便是眾多排序算法當中的一種,這種算法在某些應用場(chǎng)景中,會(huì )具有一定的優(yōu)勢。
深度學(xué)習的學(xué)名又叫深層神經(jīng)網(wǎng)絡(luò )(Deep Neural Networks ),是從很久以前的人工神經(jīng)網(wǎng)絡(luò )(Artificial Neural Networks)模型發(fā)展而來(lái)。這種模型一般采用計算機科學(xué)中的圖模型來(lái)直觀(guān)的表達,而深度學(xué)習的“深度”便指的是圖模型的層數以及每一層的節點(diǎn)數量,相對于之前的神經(jīng)網(wǎng)絡(luò )而言,有了很大程度的提升。
從單一的神經(jīng)元,再到簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò ),到一個(gè)用于語(yǔ)音識別的深層神經(jīng)網(wǎng)絡(luò )。層次間的復雜度呈幾何倍數的遞增。
以圖像識別為例,圖像的原始輸入是像素,相鄰像素組成線(xiàn)條,多個(gè)線(xiàn)條組成紋理,進(jìn)一步形成圖案,圖案構成了物體的局部,直至整個(gè)物體的樣子。不難發(fā)現,可以找到原始輸入和淺層特征之間的聯(lián)系,再通過(guò)中層特征,一步一步獲得和高層特征的聯(lián)系。想要從原始輸入直接跨越到高層特征,無(wú)疑是困難的。而整個(gè)識別過(guò)程,所需要的數據量和運算量是十分巨大的。
深度學(xué)習之所以能夠在今天得到重要的突破,原因在于:
1、海量的數據訓練
2、高性能的計算能力(CPU,GPU,FPGA,ASIC),兩者缺一不可。
2、算力
衡量芯片計算性能的重要指標稱(chēng)為算力。通常而言,將每秒所執行的浮點(diǎn)運算次數(亦稱(chēng)每秒峰值速度)作為指標來(lái)衡量算力,簡(jiǎn)稱(chēng)為 FLOPS?,F有的主流芯片運算能力達到了 TFLOPS 級別。一個(gè) TFLOPS(teraFLOPS)等於每秒萬(wàn)億(=10^12)次的浮點(diǎn)運算。增加深度學(xué)習算力需要多個(gè)維度的齊頭并進(jìn)的提升:
1、系統并行程度
2、時(shí)鐘的速度
3、內存的大?。ò╮egister、cache、memory);
4、內存帶寬(memory bandwidth)
5、計算芯片同 CPU 之間的帶寬
6、還有各種微妙的硬件里的算法改進(jìn)。
我們這篇報告將主要關(guān)注人工智能的芯片領(lǐng)域,著(zhù)重討論 GPU,FPGA,ASIC 等幾種類(lèi)型的芯片在人工智能領(lǐng)域的應用和未來(lái)的發(fā)展。
3、GPU 簡(jiǎn)介
GPU,又稱(chēng)顯示核心、視覺(jué)處理器、顯示芯片,是一種專(zhuān)門(mén)在個(gè)人電腦、工作站、游戲機和一些移動(dòng)設備(如平板電腦、智能手機等)上圖像運算工作的微處理器,與 CPU 類(lèi)似,只不過(guò) GPU 是專(zhuān)為執行復雜的數學(xué)和幾何計算而設計的,這些計算是圖形渲染所必需的。隨著(zhù)人工智能的發(fā)展,如今的 GPU 已經(jīng)不再局限于 3D 圖形處理了,GPU 通用計算技術(shù)發(fā)展已經(jīng)引起業(yè)界不少的關(guān)注,事實(shí)也證明在浮點(diǎn)運算、并行計算等部分計算方面,GPU 可以提供數十倍乃至于上百倍于 CPU 的性能。
GPU 的特點(diǎn)是有大量的核(多達幾千個(gè)核)和大量的高速內存,最初被設計用于游戲,計算機圖像處理等。GPU主要擅長(cháng)做類(lèi)似圖像處理的并行計算,所謂的“粗粒度并行(coarse-grain parallelism)”。這個(gè)對于圖像處理很適用,因為像素與像素之間相對獨立,GPU 提供大量的核,可以同時(shí)對很多像素進(jìn)行并行處理。但這并不能帶來(lái)延遲的提升(而僅僅是處理吞吐量的提升)。
比如,當一個(gè)消息到達時(shí),雖然 GPU 有很多的核,但只能有其中一個(gè)核被用來(lái)處理當前這個(gè)消息,而且 GPU 核通常被設計為支持與圖像處理相關(guān)的運算,不如 CPU 通用。GPU 主要適用于在數據層呈現很高的并行特性(data-parallelism)的應用,比如 GPU 比較適合用于類(lèi)似蒙特卡羅模擬這樣的并行運算。
CPU 和 GPU 本身架構方式和運算目的不同導致了 CPU 和 GPU 之間的不同,主要不同點(diǎn)列舉如下。
正是因為 GPU 的特點(diǎn)特別適合于大規模并行運算,GPU 在 “深度學(xué)習”領(lǐng)域發(fā)揮著(zhù)巨大的作用,因為 GPU 可以平行處理大量瑣碎信息。深度學(xué)習所依賴(lài)的是神經(jīng)系統網(wǎng)絡(luò )——與人類(lèi)大腦神經(jīng)高度相似的網(wǎng)絡(luò )——而這種網(wǎng)絡(luò )出現的目的,就是要在高速的狀態(tài)下分析海量的數據。例如,如果你想要教會(huì )這種網(wǎng)絡(luò )如何識別出貓的模樣,你就要給它提供無(wú)數多的貓的圖片。而這種工作,正是 GPU 芯片所擅長(cháng)的事情。而且相比于 CPU,GPU 的另一大優(yōu)勢,就是它對能源的需求遠遠低于 CPU。GPU 擅長(cháng)的是海量數據的快速處理。
雖然機器學(xué)習已經(jīng)有數十年的歷史,但是兩個(gè)較為新近的趨勢促進(jìn)了機器學(xué)習的廣泛應用: 海量訓練數據的出現以及 GPU 計算所提供的強大而高效的并行計算。人們利用 GPU 來(lái)訓練這些深度神經(jīng)網(wǎng)絡(luò ),所使用的訓練集大得多,所耗費的時(shí)間大幅縮短,占用的數據中心基礎設施也少得多。GPU 還被用于運行這些機器學(xué)習訓練模型,以便在云端進(jìn)行分類(lèi)和預測,從而在耗費功率更低、占用基礎設施更少的情況下能夠支持遠比從前更大的數據量和吞吐量。
將 GPU 加速器用于機器學(xué)習的早期用戶(hù)包括諸多規模的網(wǎng)絡(luò )和社交媒體公司,另外還有數據科學(xué)和機器學(xué)習領(lǐng)域中一流的研究機構。與單純使用 CPU 的做法相比,GPU 具有數以千計的計算核心、可實(shí)現 10-100 倍應用吞吐量,因此 GPU 已經(jīng)成為數據科學(xué)家處理大數據的處理器。
綜上而言,我們認為人工智能時(shí)代的 GPU 已經(jīng)不再是傳統意義上的圖形處理器,而更多的應該賦予專(zhuān)用處理器的頭銜,具備強大的并行計算能力。
國內在 GPU 芯片設計方面,還處于起步階段,與國際主流產(chǎn)品尚有一定的差距。不過(guò)星星之火,可以燎原。有一些企業(yè),逐漸開(kāi)始擁有自主研發(fā)的能力,比如國內企業(yè)景嘉微。景嘉微擁有國內首款自主研發(fā)的 GPU 芯片 JM5400,專(zhuān)用于公司的圖形顯控領(lǐng)域。JM5400 為代表的圖形芯片打破外國芯片在我國軍用 GPU 領(lǐng)域的壟斷,率先實(shí)現軍用 GPU國產(chǎn)化。GPU JM5400 主要替代 AMD 的 GPU M9,兩者在性能上的比較如下。相比而言,公司的 JM5400 具有功耗低,性能優(yōu)的優(yōu)勢。
4、FPGA簡(jiǎn)介
FPGA,即現場(chǎng)可編程門(mén)陣列,它是在 PAL、GAL、CPLD 等可編程器件的基礎上進(jìn)一步發(fā)展的產(chǎn)物。FPGA 芯片主要由 6 部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時(shí)鐘管理、嵌入塊式 RAM、豐富的布線(xiàn)資源、內嵌的底層功能單元和內嵌專(zhuān)用硬件模塊。
FPGA 還具有靜態(tài)可重復編程和動(dòng)態(tài)在系統重構的特性,使得硬件的功能可以像軟件一樣通過(guò)編程來(lái)修改。FPGA能完成任何數字器件的功能,甚至是高性能 CPU 都可以用 FPGA 來(lái)實(shí)現。
FPGA 擁有大量的可編程邏輯單元,可以根據客戶(hù)定制來(lái)做針對性的算法設計。除此以外,在處理海量數據的時(shí)候,FPGA 相比于 CPU 和 GPU,獨到的優(yōu)勢在于:FPGA 更接近 IO。換句話(huà)說(shuō),FPGA是硬件底層的架構。比如,數據采用 GPU 計算,它先要進(jìn)入內存,并在 CPU 指令下拷入 GPU 內存,在那邊執行結束后再拷到內存被 CPU 繼續處理,這過(guò)程并沒(méi)有時(shí)間優(yōu)勢;而使用 FPGA 的話(huà),數據 I/O 接口進(jìn)入 FPGA,在里面解幀后進(jìn)行數據處理或預處理,然后通過(guò) PCIE 接口送入內存讓 CPU 處理,一些很底層的工作已經(jīng)被 FPGA 處理完畢了(FPGA 扮演協(xié)處理器的角色),且積累到一定數量后以 DMA 形式傳輸到內存,以中斷通知 CPU 來(lái)處理,這樣效率就高得多。
雖然 FPGA 的頻率一般比 CPU 低,但 CPU 是通用處理器,做某個(gè)特定運算(如信號處理,圖像處理)可能需要很多個(gè)時(shí)鐘周期,而 FPGA 可以通過(guò)編程重組電路,直接生成專(zhuān)用電路,加上電路并行性,可能做這個(gè)特定運算只需要一個(gè)時(shí)鐘周期。
比如一般 CPU 每次只能處理 4 到 8 個(gè)指令,在 FPGA 上使用數據并行的方法可以每次處理 256 個(gè)或者更多的指令,讓FPGA可以處理比CPU多很多的數據量。
舉個(gè)例子,CPU 主頻 3GHz,FPGA主頻 200MHz,若做某個(gè)特定運算 CPU 需要 30 個(gè)時(shí)鐘周期,FPGA 只需一個(gè),則耗時(shí)情況:CPU:30/3GHz =10ns;FPGA:1/200MHz =5ns??梢钥吹?,FPGA 做這個(gè)特定運算速度比 CPU 塊,能幫助加速。
北京大學(xué)與加州大學(xué)的一個(gè)關(guān)于 FPGA 加速深度學(xué)習算法的合作研究。展示了 FPGA 與 CPU 在執行深度學(xué)習算法時(shí)的耗時(shí)對比。在運行一次迭代時(shí),使用 CPU 耗時(shí) 375 毫秒,而使用 FPGA 只耗時(shí) 21 毫秒,取得了18倍左右的加速比。
FPGA 相對于 CPU 與 GPU 有明顯的能耗優(yōu)勢,主要有兩個(gè)原因。首先,在 FPGA 中沒(méi)有取指令與指令譯碼操作, 在 Intel 的 CPU 里面,由于使用的是 CISC 架構,僅僅譯碼就占整個(gè)芯片能耗的 50%;在 GPU 里面,取指令與譯碼也消耗了 10%~20%的能耗。其次,FPGA 的主頻比 CPU 與 GPU 低很多,通常 CPU 與 GPU 都在 1GHz 到 3GHz 之間,而 FPGA 的主頻一般在 500MHz 以下。如此大的頻率差使得 FPGA 消耗的能耗遠低于 CPU 與 GPU。
FPGA與CPU在執行深度學(xué)習算法時(shí)的耗能對比。在執行一次深度學(xué)習運算,使用 CPU 耗能 36 焦,而使用 FPGA 只耗能 10 焦,取得了 3.5 倍左右的節能比。通過(guò)用 FPGA 加速與節能,讓深度學(xué)習實(shí)時(shí)計算更容易在移動(dòng)端運行。
相比CPU和GPU,FPGA 憑借比特級細粒度定制的結構、流水線(xiàn)并行計算的能力和高效的能耗,在深度學(xué)習應用中展現出獨特的優(yōu)勢,在大規模服務(wù)器部署或資源受限的嵌入式應用方面有巨大潛力。此外,FPGA 架構靈活,使得研究者能夠在諸如 GPU 的固定架構之外進(jìn)行模型優(yōu)化探究。
5、ASIC簡(jiǎn)介
ASIC(專(zhuān)用集成電路),是指應特定用戶(hù)要求或特定電子系統的需要而設計、制造的集成電路。嚴格意義上來(lái)講,ASIC 是一種專(zhuān)用芯片,與傳統的通用芯片有一定的差異。是為了某種特定的需求而專(zhuān)門(mén)定制的芯片。
ASIC 作為集成電路技術(shù)與特定用戶(hù)的整機或系統技術(shù)緊密結合的產(chǎn)物,與通用集成電路相比,具有以下幾個(gè)方面的優(yōu)越性:體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低?;氐缴疃葘W(xué)習最重要的指標:算力和功耗。我們對比 NVIDIA 的 GK210 和某 ASIC 芯片規劃的指標,如下所示:
從算力上來(lái)說(shuō),ASIC 產(chǎn)品的計算能力是 GK210 的 2.5 倍。第二個(gè)指標是功耗, 功耗做到了 GK210 的 1/15。第三個(gè)指標是內部存儲容量的大小及帶寬。這個(gè)內部 MEMORY 相當于 CPU 上的 CACHE。深度雪地的模型比較大,通常能夠到幾百 MB 到 1GB 左右,會(huì )被頻繁的讀出來(lái),如果模型放在片外的 DDR 里邊,對 DDR 造成的帶寬壓力通常會(huì )到 TB/S 級別。
全定制設計的ASIC,因為其自身的特性,相較于非定制芯片,擁有以下幾個(gè)優(yōu)勢:
同樣工藝,同樣功能,第一次采用全定制設計性能提高 7.6 倍
普通設計,全定制和非全定制的差別可能有 1~2 個(gè)數量級的差異
采用全定制方法可以超越非全定制 4 個(gè)工藝節點(diǎn)(采用 28nm 做的全定制設計,可能比 5nm 做的非全定制設計還要好)我們認為,ASIC 的優(yōu)勢,在人工智能深度學(xué)習領(lǐng)域,具有很大的潛力。
ASIC 在人工智能深度學(xué)習方面的應用還不多,但是我們可以拿比特幣礦機芯片的發(fā)展做類(lèi)似的推理。比特幣挖礦和人工智能深度學(xué)習有類(lèi)似之處,都是依賴(lài)于底層的芯片進(jìn)行大規模的并行計算。而 ASIC 在比特幣挖礦領(lǐng)域,展現出了得天獨厚的優(yōu)勢。
比特幣礦機的芯片經(jīng)歷了四個(gè)階段:CPU、GPU、FPGA 和 ASIC。ASIC 芯片是專(zhuān)為挖礦量身定制的芯片,它將 FPGA 芯片中在挖礦時(shí)不會(huì )使用的功能去掉,與同等工藝的 FPGA 芯片相比執行速度塊,大規模生產(chǎn)后的成本也要低于 FPGA 芯片。
從 ASIC 在比特幣挖礦機時(shí)代的發(fā)展歷史,可以看出 ASIC 在專(zhuān)用并行計算領(lǐng)域所具有的得天獨厚的優(yōu)勢:算力高,功耗低,價(jià)格低,專(zhuān)用性強。谷歌最近曝光的專(zhuān)用于人工智能深度學(xué)習計算的TPU、其實(shí)也是一款 ASIC。
綜上,人工智能時(shí)代逐步臨近,GPU、FPGA、ASIC這幾塊傳統領(lǐng)域的芯片,將在人工智能時(shí)代迎來(lái)新的爆發(fā)。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。