詳解人工智能芯片 CPU/GPU/FPGA有何差異?
1.FPGA是什么?
本文引用地址:http://www.104case.com/article/201704/346122.htm場效可編程邏輯閘陣列FPGA運用硬件語言描述電路,根據所需要的邏輯功能對電路進行快速燒錄。一個出廠后的成品FPGA的邏輯塊和連接可以按照設計者的需要而改變,這就好像一個電路試驗板被放在了一個芯片里,所以FPGA可以完成所需要的邏輯功能。
FPGA和GPU內都有大量的計算單元,因此它們的計算能力都很強。在進行神經網絡運算的時候,兩者的速度會比CPU快很多。但是GPU由于架構固定,硬件原生支持的指令也就固定了,而FPGA則是可編程的。其可編程性是關鍵,因為它讓軟件與終端應用公司能夠提供與其競爭對手不同的解決方案,并且能夠靈活地針對自己所用的算法修改電路。
2.FPGA和GPU的性能差異
同樣是擅長并行計算的FPGA和GPU,誰能夠占領人工智能的高地,并不在于誰的應用更廣泛,而是取決于誰的性能更好。在服務器端,有三個指標可供對比:峰值性能、平均性能與功耗能效比。當然,這三個指標是相互影響的,不過還是可以分開說。
峰值性能:GPU遠遠高于FPGA
GPU上面成千上萬個核心同時跑在GHz的頻率上是非常壯觀的,最新的GPU峰值性能甚至可以達到10TFlops 以上。GPU的架構經過仔細設計,在電路實現上是基于標準單元庫而在關鍵路徑上可以用手工定制電路,甚至在必要的情形下可以讓半導體fab依據設計需求微調工藝制程,因此可以讓許多core同時跑在非常高的頻率上。
相對而言,FPGA首先設計資源受到很大的限制,例如GPU如果想多加幾個核心只要增加芯片面積就行,但FPGA一旦型號選定了邏輯資源上限就確定了。而且,FPGA里面的邏輯單元是基于SRAM查找表,其性能會比GPU里面的標準邏輯單元差很多。最后,FPGA的布線資源也受限制,因為有些線必須要繞很遠,不像GPU這樣走ASIC flow可以隨意布線,這也會限制性能。
平均性能:GPU遜于FPGA
FPGA可以根據特定的應用去編程硬件,例如如果應用里面的加法運算非常多就可以把大量的邏輯資源去實現加法器,而GPU一旦設計完就不能改動了,所以不能根據應用去調整硬件資源。
目前機器學習大多使用SIMD架構,即只需一條指令可以平行處理大量數據,因此用GPU很適合。但是有些應用是MISD,即單一數據需要用許多條指令平行處理,這種情況下用FPGA做一個MISD的架構就會比GPU有優勢。
所以,對于平均性能,看的就是FPGA加速器架構上的優勢是否能彌補運行速度上的劣勢。如果FPGA上的架構優化可以帶來相比GPU架構兩到三個數量級的優勢,那么FPGA在平均性能上會好于GPU。
功耗能效比:
功耗方面,雖然GPU的功耗遠大于FPGA的功耗,但是如果要比較功耗應該比較在執行效率相同時需要的功耗。如果FPGA的架構優化能做到很好以致于一塊FPGA的平均性能能夠接近一塊GPU,那么FPGA方案的總功耗遠小于GPU,散熱問題可以大大減輕。反之,如果需要二十塊FPGA才能實現一塊GPU的平均性能,那么FPGA在功耗方面并沒有優勢。
能效比的比較也是類似,能效指的是完成程序執行消耗的能量,而能量消耗等于功耗乘以程序執行的時間。雖然GPU的功耗遠大于FPGA的功耗,但是如果FPGA執行相同程序需要的時間比GPU長幾十倍,那FPGA在能效比上就沒有優勢了;反之如果FPGA上實現的硬件架構優化得很適合特定的機器學習應用,執行算法所需的時間僅僅是GPU的幾倍或甚至于接近GPU,那么FPGA的能效比就會比GPU強。
3.FPGA市場前景
隨著科技的進展,制造業走向更高度的自動化與智能化,對工業控制技術等領域不斷產生新的需求,在未來的工業制造領域,FPGA將有更大的發展空間。目前來看,有兩個領域的應用前景十分巨大:
工業互聯網領域
作為未來制造業發展的方向,工業大數據、云計算平臺、MES系統等都是支持工業智能化的重要平臺,它們需要完成大數據量的復雜處理,FPGA在其中可以發揮重要作用。
工業機器人設備領域
在多軸向運作的精密控制、實時同步的連接以及設備多功能整合等方面,兼具彈性和整合性的FPGA,更能展現設計優勢。如汽車ADAS需要對實時高清圖像進行及時的分析識別與處理;在人工智能方面,深度學習神經網絡也需要進行大量并行運算。
4.FPGA現有市場
FPGA市場前景誘人,但是門檻之高在芯片行業里無出其右。全球有60多家公司先后斥資數十億美元,前赴后繼地嘗試登頂FPGA高地,其中不乏英特爾、IBM、德州儀器、摩托羅拉、飛利浦、東芝、三星這樣的行業巨鱷,但是最終登頂成功的只有位于美國硅谷的兩家公司:Xilinx與Altera。這兩家公司共占有近90%的市場份額,專利達到6000余項之多,如此之多的技術專利構成的技術壁壘當然高不可攀。
2015年6月,英特爾用史無前例的167億美元巨款收購了Altera,當時業內對于英特爾此舉的解讀主要集中在服務器市場、物聯網市場的布局上,英特爾自己對收購的解釋也沒有明確提到機器學習。但現在看來,或許這筆收購在人工智能領域同樣具有相當大的潛力。
5.FPGA行業的開拓者:
英特爾能不能通過FPGA切入AI硬件市場?要講清楚這個問題,我們必須要把視角從人工智能身上拉遠,看看英特爾的整體戰略布局。最近幾年,英特爾的核心盈利業務CPU同時遭到了三個因素的狙擊:PC市場增長放緩、進軍移動市場的嘗試失敗以及摩爾定律逐漸逼近極限。單純的賣CPU固然也能賺到錢,但只有研發更高端的芯片,形成自己領導者的形象,才能賺更多的錢,支撐公司的發展。
上述三個因素的同時出現,已經讓英特爾發現,如果自己仍然只是安心的守著自己的CPU業務,很快就會面臨巨大的危機,事實上在過去的一年里,利潤下降、裁員的新聞也一直圍繞在英特爾的身邊,揮之不去。
因而英特爾十分渴望不要錯過下一個深度學習的潮流,不過它缺乏自己最先進的人工智能研究,所以在過去的兩年中瘋狂地收購。2015年,英特爾用史無前例的167億美元拍下了FPGA制造商Altera,2016年又相繼兼并了人工智能芯片初創公司Nervana與Movidius。目前的英特爾正在試圖將他們整合在一起。
6.Intel的產品布局
英特爾斥巨資收購Altera不是來為FPGA技術發展做貢獻的,相反,它要讓FPGA技術為英特爾的發展做貢獻。表現在技術路線圖上,那就是從現在分立的CPU芯片+分立的FPGA加速芯片,過渡到同一封裝內的CPU晶片+FPGA晶片,到最終的集成CPU+FPGA芯片。預計這幾種產品形式將會長期共存,因為分立器件雖然性能稍差,但靈活性更高。
如果簡單的將英特爾對于人工智能的產品布局,可以分以下幾層:
·Xeon Phi+ Nervana:用于云端最頂層的高性能計算。
·Xeon+FPGA:用于云端中間層/前端設備的低功耗性能計算。
英特爾下一代的FPGA和SoC FPGA將支持Intel架構集成,大致如下:代號為Harrisville的產品采用Intel 22nm工藝技術,用于工業IoT、汽車和小區射頻等領域;代號為Falcon Messa的中端產品采用Intel 10nm工藝技術,用于4G/5G無線通信、UHD/8K廣播視頻、工業IoT和汽車等領域;代號為Falcon Mesa的高端產品采用Intel 10nm工藝技術,用于云和加速、太比特系統和高速信號處理等領域。
·Core(GT):用于消費級前端設備的性能計算、圖形加速。
·Euclid:提供給開發者/創客的開發板,集成Atom低功耗處理器、RealSense攝像頭模塊、接口,可用做無人機、小型機器人的核心開發部件。
·Curie:提供給開發者/創客的模塊,其內置Quark SE系統芯片、藍牙低功耗無線電、以及加速計、陀螺儀等傳感器,可用做低功耗可穿戴設備的核心部件。
從產品線來看,包含了CPU與FPGA的異構計算處理器將是Intel盈利的重點。預計到2020年Intel將有1/3的云數據中心節點采用FPGA技術,CPU+FPGA擁有更高的單位功耗性能、更低時延和更快加速性能,在大數據和云計算領域有望沖擊CPU+GPU的主導地位,而Intel的至強處理器Xeon +FPGA也將在2017年下半年量產。
7.Intel的痛點:生態不完善
FPGA對GPU的潛力在于其計算速度與GPU不相上下,卻在成本和功耗上對GPU有著顯著優勢。當然,劣勢也有,但是FPGA的潛力是非常明顯的。作為一個想要推向市場的商品來說,FPGA最需要克服,也是最容易克服的問題是普及程度。
大部分PC都配有或高端或低端的獨立GPU,對于個人進行的中小規模神經網絡開發和訓練來說,其實它們的性能已經基本足夠。而FPGA卻不是在電腦里能找得到的東西,而多見于各種冰箱、電視等電器設備及實驗室中,因此想要搞到一塊能用來開發深度學習的FPGA其實還挺麻煩的。不僅如此,FPGA的不普及還體現在以下三個方面:
OpenCL編程平臺應用不廣泛
即使GPU有著種種不足,它也不是能夠輕易被取代的。從深度學習應用的開發工具角度,具備CUDA支持的GPU為用戶學習Caffe、Theano等研究工具提供了很好的入門平臺。自2006年推出CUDA以來,已有超過5億的筆記本電腦、工作站、計算集群和超級計算機安裝了支持CUDA的GPU。
如果FPGA想要攻占深度學習的市場,那么產業鏈下游的編程平臺必不可少。目前較為流行的異構硬件編程的替代性工具是OpenCL。不同于CUDA單一供應商的做法,OpenCL對開發者開源、免費,這是一大重要競爭力。但目前來看,其獲得的支持相較CUDA還略遜一籌。
實現硬件編程困難
除了軟件編程的不普及之外,吸引偏好上層編程語言的研究人員和應用科學家來開發FPGA尤為艱難。雖然能流利使用一種軟件語言常常意味著可以輕松地學習另一種軟件語言,但對于硬件語言翻譯技能來說卻非如此。針對FPGA最常用的語言是Verilog和VHDL,兩者均為硬件描述語言(HDL)。這些語言和傳統的軟件語言之間的主要區別是,HDL只是單純描述硬件,而例如C語言等軟件語言則描述順序指令,并無需了解硬件層面的執行細節。
有效地描述硬件需要對數字化設計和電路的專業知識,盡管一些下層的實現決定可以留給自動合成工具去實現,但往往無法達到高效的設計。因此,研究人員和應用科學家傾向于選擇軟件設計,因其已經非常成熟,擁有大量抽象和便利的分類來提高程序員的效率。
部署環節需要定制復雜套件
FPGA需要有一個完善的復雜生態系統才能保證其使用,不只體現在軟件與硬件編程平臺上,更體現在部署環節中。FPGA在安裝過程中需要針對不同的IP核定制一系列復雜的工具套件,相比之下,GPU通過PCI-e接口可以直接部署在服務器中,方便而快速。因此,嵌入式FPGA概念雖好,想要發展起來仍將面臨十分嚴峻的挑戰。
8.Intel的優勢
目前在深度學習市場FPGA尚未成氣候,谷歌這樣的超級大廠又喜歡自己研發專用芯片,因此可以說對于深度學習芯片來說,個人開發者及中小型企業內還有相當大的市場。這個市場目前幾乎只有英偉達一家獨大,英特爾想要強勢進入未必沒有機會。而相比于英偉達來說,英特爾有兩個明顯的優勢:
更熟悉CPU
盡管目前的人工智能市場幾乎只有英偉達一家獨大,但英偉達的芯片也不是能夠自己完成深度學習訓練的。或者說,英偉達的GPU芯片還不足以取代那些英特爾的CPU,大多數環境下它們暫時只能加速這些處理器。所以,GPGPU暫時只是概念上的,GPU還不足以在大多數復雜運算環境下代替CPU,而隨著人工智能技術的進步,對硬件的邏輯運算能力只會更高不會降低,所以搭載強大CPU核心的多核異構處理器才是更長期的發展方向。而論對CPU的熟悉,沒有一家芯片廠商能過勝過英特爾,英特爾是最有可能讓搭載了FPGA與CPU的異構處理器真正實現多核心相輔相成的芯片公司。
曾涉足云計算
算法的訓練應該是貫穿整個應用過程的,這樣可以隨時為消費者提供最好體驗的服務。但是如果要將所有算法都集中于本地訓練,不僅會面臨計算瓶頸的問題,也容易面臨從單個用戶處收集到的數據量太少的尷尬。我們暫時不考慮很久以后可能出現的基于小樣本的無監督學習的AI,畢竟那其實已經跟人差不多了,在目前AI的發展狀況下,將所有數據集中于云端進行計算顯然是更理性且有效的做法。這就對通信提出了極高的要求,而英特爾恰巧在這個領域有著相當多的積累。雖然英特爾的通信部門連年虧損,但在現在的形勢下,它卻意外地有了新的價值與潛力。
評論