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