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