詳解人工智能芯片 CPU/GPU/FPGA有何差異?
2.驟然爆發(fā)的數據洪流
本文引用地址:http://butianyuan.cn/article/201704/346122.htm深度學習模型需要通過大量的數據訓練才能獲得理想的效果。以語音識別問題為例,僅在其聲學建模部分,算法就面臨著十億到千億級別的訓練樣本數據。訓練樣本的稀缺使得人工智能即使在經歷了算法的突破后依然沒能成為人工智能應用領域的主流算法。直到2012年,分布于世界各地的互相聯系的設備、機器和系統促進了非結構化數據數量的巨大增長,并終于在可靠性方面發(fā)生了質的飛躍,大數據時代到來。
大數據到底有多大?一天之中,互聯網產生的全部內容可以刻滿1.68億張DVD;發(fā)出的郵件有2940億封之多,相當于美國兩年的紙質信件數量;發(fā)出的社區(qū)帖子達200萬個,相當于《時代》雜志770年的文字量;賣出的手機為37.8萬臺,高于全球每天出生的嬰兒數量37.1萬倍。然而,即使是人們每天創(chuàng)造的全部信息,包括語音通話、電子郵件和信息在內的各種通信,以及上傳的全部圖片、視頻與音樂,其信息量也無法匹及每一天所創(chuàng)造出的關于人們自身活動的數字信息量。
我們現在還處于所謂“物聯網”的最初級階段,隨著技術的成熟,我們的通訊設備、交通工具和可穿戴科技將能互相連接與溝通,信息量的增加也將以幾何倍數持續(xù)下去。
3.難以滿足的硬件需求
驟然爆發(fā)的數據洪流滿足了深度學習算法對于訓練數據量的要求,但是算法的實現還需要相應處理器極高的運算速度作為支撐。當前流行的包括X86和ARM在內的傳統CPU處理器架構往往需要數百甚至上千條指令才能完成一個神經元的處理,但對于并不需要太多的程序指令,卻需要海量數據運算的深度學習的計算需求,這種結構就顯得非常笨拙。尤其是在當前功耗限制下無法通過提升CPU主頻來加快指令執(zhí)行速度,這種矛盾愈發(fā)不可調和,深度學習研究人員迫切需要一種替代硬件來滿足海量數據的運算需求。
或許終有一日將會誕生全新的、為人工智能而專門設計的處理器架構,但在那之前的幾十年,人工智能仍然要向前走,便只能改進現有處理器,使之成為能夠最大程度適應大吞吐量運算的計算架構。目前來看,圍繞現有處理器的主流改進方式有兩個:
·圖形處理器通用化:
將圖形處理器GPU用作矢量處理器。在這種架構中,GPU擅長浮點運算的特點將得到充分利用,使其成為可以進行并行處理的通用計算芯片GPGPU。英偉達公司從2006年下半年已經開始陸續(xù)推出相關的硬件產品以及軟件開發(fā)工具,目前是人工智能硬件市場的主導。
·多核處理器異構化:
將GPU或FPGA等其他處理器內核集成到CPU上。在這種架構中,CPU內核所不擅長的浮點運算以及信號處理等工作,將由集成在同一塊芯片上的其它可編程內核執(zhí)行,而GPU與FPGA都以擅長浮點運算著稱。AMD與Intel公司分別致力于基于GPU與FPGA的異構處理器,希望借此切入人工智能市場。
三、現有市場——通用芯片GPU
在深度學習的領域里,最重要的是數據和運算。誰的數據更多,誰的運算更快,誰就會占據優(yōu)勢。因此,在處理器的選擇上,可以用于通用基礎計算且運算速率更快的GPU迅速成為人工智能計算的主流芯片??梢哉f,在過去的幾年,尤其是2015年以來,人工智能大爆發(fā)就是由于英偉達公司的GPU得到廣泛應用,使得并行計算變得更快、更便宜、更有效。
1.GPU是什么?
圖形處理器GPU最初是用在個人電腦、工作站、游戲機和一些移動設備上運行繪圖運算工作的微處理器,可以快速地處理圖像上的每一個像素點。后來科學家發(fā)現,其海量數據并行運算的能力與深度學習需求不謀而合,因此,被最先引入深度學習。2011年吳恩達教授率先將其應用于谷歌大腦中便取得驚人效果,結果表明,12顆英偉達的GPU可以提供相當于2000顆CPU的深度學習性能,之后紐約大學、多倫多大學以及瑞士人工智能實驗室的研究人員紛紛在GPU上加速其深度神經網絡。
2.GPU和CPU的設計區(qū)別
那么GPU的快速運算能力是如何獲得的?這就要追溯到芯片最初的設計目標了。中央處理器CPU需要很強的處理不同類型數據的計算能力以及處理分支與跳轉的邏輯判斷能力,這些都使得CPU的內部結構異常復雜;而圖形處理器GPU最初面對的是類型高度統一的、相互無依賴的大規(guī)模數據和不需要被打斷的純凈的計算環(huán)境,所以GPU只需要進行高速運算而不需要邏輯判斷。目標運算環(huán)境的區(qū)別決定了GPU與CPU不同的設計架構:
CPU基于低延時的設計
·大量緩存空間Cache,方便快速提取數據。CPU將大量訪問過的數據存放在Cache中,當需要再次訪問這些數據時,就不用從數據量巨大的內存中提取了,而是直接從緩存中提取。
·強大的算術運算單元ALU,可以在很短的時鐘周期內完成算數計算。當今的CPU可以達到64bit雙精度,執(zhí)行雙精度浮點源計算加法和乘法只需要1~3個時鐘周期,時鐘周期頻率達到1.532~3gigahertz。
·復雜的邏輯控制單元,當程序含有多個分支時,它通過提供分支預測來降低延時。
·包括對比電路單元與轉發(fā)電路單元在內的諸多優(yōu)化電路,當一些指令依賴前面的指令結果時,它決定這些指令在pipeline中的位置并且盡可能快的轉發(fā)一個指令的結果給后續(xù)指令。
GPU基于大吞吐量的設計
·壓縮緩存空間Cache,從而最大化激發(fā)內存吞吐量,可以處理超長的流水線。緩存的目的不是保存之后需要訪問的數據,而是擔任數據轉發(fā)的角色,為線程提高服務。如果有很多線程需要訪問同一個數據,緩存會合并這些訪問,再去DRAM中訪問數據,獲取的數據將通過緩存轉發(fā)給對應的線程。這種方法雖然減小了緩存,但由于需要訪問內存,因而自然會帶來延時效應。
·高效的算數運算單元和簡化的邏輯控制單元,把串行訪問拆分成多個簡單的并行訪問,并同時運算。例如,在CPU上約有20%的晶體管是用作計算的,而GPU上有80%的晶體管用作計算。
3.GPU和CPU的性能差異
CPU與GPU在各自領域都可以高效地完成任務,但當同樣應用于通用基礎計算領域時,設計架構的差異直接導致了兩種芯片性能的差異。
CPU擁有專為順序邏輯處理而優(yōu)化的幾個核心組成的串行架構,這決定了其更擅長邏輯控制、串行運算與通用類型數據運算;而GPU擁有一個由數以千計的更小、更高效的核心組成的大規(guī)模并行計算架構,大部分晶體管主要用于構建控制電路和Cache,而控制電路也相對簡單,且對Cache的需求小,只有小部分晶體管來完成實際的運算工作。所以大部分晶體管可以組成各類專用電路、多條流水線,使得GPU的計算速度有了突破性的飛躍,擁有了更強大的處理浮點運算的能力。這決定了其更擅長處理多重任務,尤其是沒有技術含量的重復性工作。
當前最頂級的CPU只有4核或者6核,模擬出8個或者12個處理線程來進行運算,但是普通級別的GPU就包含了成百上千個處理單元,高端的甚至更多,這對于多媒體計算中大量的重復處理過程有著天生的優(yōu)勢。
舉個常見的例子,一個向量相加的程序,可以讓CPU跑一個循環(huán),每個循環(huán)對一個分量做加法,也可以讓GPU同時開大量線程,每個并行的線程對應一個分量的相加。CPU跑循環(huán)的時候每條指令所需時間一般低于GPU,但GPU因為可以同時開啟大量的線程并行地跑,具有SIMD的優(yōu)勢。
評論