1. 程式人生 > >目前在機器學習領域異構計算得到重視,GPU佔據主流位置,Fpga初現端倪,不知fpga在機器學習的前景如何?

目前在機器學習領域異構計算得到重視,GPU佔據主流位置,Fpga初現端倪,不知fpga在機器學習的前景如何?

2016 11/7 更新: 加入了伺服器端FPGA與GPU的比較

=====================
本文原來發布在《矽說》專欄,歡迎關注:)
FPGA vs. ASIC,誰將引領移動端人工智慧潮流? - 矽說 silicon talks - 知乎專欄

FPGA vs. ASIC

首先講講FPGA和ASIC的區別。FPGA全稱“可編輯門陣列”(Field Programmable Gate Array),其基本原理是在FPGA晶片內整合大量的數位電路基本閘電路以及儲存器,而使用者可以通過燒入FPGA配置檔案來來定義這些閘電路以及儲存器之間的連線。這種燒入不是一次性的,即使用者今天可以把FPGA配置成一個微控制器MCU,明天可以編輯配置檔案把同一個FPGA配置成一個音訊編解碼器。ASIC則是專用積體電路(Application-Specific Integrated Circuit),一旦設計製造完成後電路就固定了,無法再改變。

用於深度學習加速器的FPGA(Xilinx Kintex 7 Ultrascle,左)和ASIC(Movidius Myriad 2,右)

比較FPGA和ASIC就像比較樂高積木和模型。舉例來說,如果你發現最近星球大戰裡面Yoda大師很火,想要做一個Yoda大師的玩具賣,你要怎麼辦呢?有兩種辦法,一種是用樂高積木搭,還有一種是找工廠開模定製。用樂高積木搭的話,只要設計完玩具外形後去買一套樂高積木即可。而找工廠開模的話在設計完玩具外形外你還需要做很多事情,比如玩具的材質是否會散發氣味,玩具在高溫下是否會融化等等,所以用樂高積木來做玩具需要的前期工作比起找工廠開模製作來說要少得多,從設計完成到能夠上市所需要的時間用樂高也要快很多。FPGA和ASIC也是一樣,使用FPGA只要寫完Verilog程式碼就可以用FPGA廠商提供的工具實現硬體加速器了,而要設計ASIC則還需要做很多驗證和物理設計(ESD,Package等等),需要更多的時間。如果要針對特殊場合(如軍事和工業等對於可靠性要求很高的應用),ASIC則需要更多時間進行特別設計以滿足需求,但是用FPGA的話可以直接買軍工級的高穩定性FPGA完全不影響開發時間。但是,雖然設計時間比較短,但是樂高積木做出來的玩具比起工廠定製的玩具要粗糙(效能差)許多(下圖),畢竟工廠開模是量身定製。另外,如果出貨量大的話,工廠大規模生產玩具的成本會比用樂高積木做便宜許多。FPGA和ASIC也是如此,在同一時間點上用最好的工藝實現的ASIC的加速器的速度會比用同樣工藝FPGA做的加速器速度快5-10倍,而且一旦量產後ASIC的成本會遠遠低於FPGA方案(便宜10到100倍)。

FPGA vs ASIC :積木vs 手辦

當然,FPGA還有另一大特點,就是可以隨時重新配置,從而在不同的場合實現不同的功能。但是,當把FPGA實現的加速器當作一個商品賣給使用者時,要讓使用者自己去重新配置卻要花一番功夫。回到用樂高積木做玩具的例子,玩具廠商可以宣稱這個Yoda大師由積木搭起來,所以玩家可以把這些積木重新組合成其他角色(比如天行者路克)。但是一般玩家根本不會拆裝積木,怎麼辦?解決方案要麼是把目標市場定為精通積木的專業核心玩家,要麼是在玩具後面加一個開關,一般玩家只要按一下就可以讓積木自動重新組裝。很顯然,第二個方案需要很高的技術門檻。對於FPGA加速器來說,如果要把可重配置作為賣點,要麼是賣給有能力自己開發FPGA的企業使用者(如百度,微軟等公司確實有在開發基於FPGA的深度學習加速器並且在不同的應用場合將FPGA配置為不同的加速器),要麼是開發一套方便易用能將使用者的深度學習網路轉化為FPGA配置檔案的編譯器(深鑑等公司正在嘗試)。從目前來看,即使用高階的伺服器來做FPGA編譯都會需要數分鐘的時間,如果編譯在計算能力較弱的移動終端做需要的時間就更長了。對於移動終端使用者來說,如何說服他們嘗試重新配置FPGA並接受長達數十分鐘的時間來編譯網路並配置FPGA仍然是一個問題。

小結:

我把FPGA和ASIC的比較總結在下面表格裡。FPGA上市速度快,但效能較低。ASIC上市速度慢,需要大量時間開發,而且一次性成本(光刻掩模製作成本)遠高於FPGA,但是效能遠高於FPGA且量產後平均成本遠低於FPGA。FPGA可以完全重配置,但是ASIC也有一定的可配置能力,只要在設計的時候就把電路做成某些引數可調的即可。目標市場方面,FPGA成本太高,所以適合對價格不是很敏感的地方,比如企業應用,軍事和工業電子等等(在這些領域可重配置可能真的需要)。而ASIC由於低成本則適合消費電子類應用,而且在消費電子中可配置是否是一個偽需求還有待商榷。我們看到的市場現狀也是如此:使用FPGA做深度學習加速的多是企業使用者,百度、微軟、IBM等公司都有專門做FPGA的團隊為伺服器加速,而做FPGA方案的初創公司Teradeep的目標市場也是伺服器。而ASIC則主要瞄準消費電子,如Movidius。由於移動終端屬於消費電子領域,所以未來使用的方案應當是以ASIC為主。


=====================移動端與伺服器端的分割線==========================

下面討論伺服器端GPU和FPGA的比較。

在Server端, 我想有幾個指標可供對比:
*峰值效能
*靈活性
*平均效能
*功耗和能效比

其實這幾個指標是會互相影響的,不過還是分開說。
峰值效能來說,GPU(10Tflops)遠遠高於FPGA(<1TFlops)。GPU上面成千上萬個core同時跑在GHz的頻率上還是非常壯觀的,最新的GPU峰值效能可達10TFlops以上。GPU的架構經過仔細設計(例如使用深度流水線,retiming等技巧),在電路實現上是基於標準單元庫而在critical path上可以用手工定製電路,甚至在必要的情形下可以讓半導體fab依據設計需求微調工藝製程,因此可以讓許多core同時跑在非常高的頻率。相對而言,FPGA首先設計資源受到很大的限制,例如GPU如果想多加幾個core只要增加芯片面積就行,但FPGA一旦你型號選定了邏輯資源上限就確定了(浮點運算在FPGA裡會佔用很多資源),好漢也會被尿憋死。而且,FPGA裡面的邏輯單元是基於SRAM-查詢表,其效能會比GPU裡面的標準邏輯單元差好多。最後,FPGA的佈線資源也受限制(有些線必須要繞很遠),不像GPU這樣走ASIC flow可以隨意佈線,這也會限制性能。關於這一點,可以參考為什麼ASIC的頻率可以達到GHz,而FPGA只能達到幾百MHz? - 晶片(積體電路)下 @岑川的回答。





除了晶片效能外,GPU相對於FPGA還有一個優勢就是記憶體介面。GPU的記憶體介面(傳統的GDDR,最近更是用上了HBM和HBM2)的頻寬遠好於FPGA的傳統DDR介面,而眾所周知伺服器端機器學習演算法需要頻繁訪問記憶體。


但是從靈活性來說,FPGA遠好於GPU。FPGA可以根據特定的應用去程式設計硬體(例如如果應用裡面的加法運算非常多就可以把大量的邏輯資源去實現加法器),但是GPU一旦設計完那就沒法改動了,沒法根據應用去調整硬體資源。目前機器學習大多數適合使用SIMD架構(即只需一條指令可以平行處理大量資料),因此用GPU很適合。但是有些應用是MISD(即單一資料需要用許多條指令平行處理,微軟在2014年ISCA paper裡面就舉了一個MISD用於並行提取feature的例子),這種情況下用FPGA做一個MISD的架構就會比GPU有優勢。不過FPGA的程式設計對於程式設計師來說並不容易,所以為了能讓機器學習程式設計師能方便地使用FPGA往往還需要在FPGA公司提供的編譯器基礎上進行二次開發,這些都是隻有大公司才能做。

微軟在2014年ISCA paper裡面就MISD用於並行提取feature的例子

從上面兩條我們可以看出,FPGA實現的機器學習加速器在架構上可以根據特定應用優化所以比GPU有優勢,但是GPU的執行速度(>1GHz)相比FPGA有優勢(~200MHz)。所以,對於平均效能,看的就是FPGA加速器架構上的優勢是否能彌補執行速度上的劣勢。如果FPGA上的架構優化可以帶來相比GPU架構兩到三個數量級的優勢,那麼FPGA在平均效能上會好於GPU。例如,百度在HotChips上釋出的paper顯示,GPU的平均效能相比FPGA在矩陣運算等標準batch data SIMD bench上遠好於FPGA;但是在處理伺服器端的少量多次處理請求(即頻繁請求但每次請求的資料量和計算量都不大)的場合下,平均效能會比GPU更好。

功耗方面,雖然GPU的功耗(200W)遠大於FPGA的功耗(10W),但是如果要比較功耗應該比較在執行效率相同時需要的功耗。如果FPGA的架構優化能做到很好以致於一塊FPGA的平均效能能接近一塊GPU,那麼FPGA方案的總功耗遠小於GPU,散熱問題可以大大減輕。反之,如果需要二十塊FPGA才能實現一塊GPU的平均效能,那麼FPGA在功耗方面並沒有優勢。能效比的比較也是類似,能效指的是完成程式執行消耗的能量,而能量消耗等於功耗乘以程式執行的時間。雖然GPU的功耗遠大於FPGA的功耗,但是如果FPGA執行相同程式需要的時間比GPU長几十倍,那FPGA在能效比上就沒有優勢了;反之如果FPGA上實現的硬體架構優化得很適合特定的機器學習應用,執行演算法所需的時間僅僅是GPU的幾倍或甚至於接近GPU,那麼FPGA的能效比就會比GPU強。

相關推薦

目前機器學習領域計算得到重視GPU佔據主流位置Fpga端倪不知fpga機器學習前景如何?

2016 11/7 更新: 加入了伺服器端FPGA與GPU的比較 ===================== 本文原來發布在《矽說》專欄,歡迎關注:)FPGA vs. ASIC,誰將引領移動端人工智慧潮流? - 矽說 silicon talks - 知乎專欄 FPGA vs. ASIC 首先講講FPGA和A

深度學習加速技術(二):螺獅殼裏做道場

篩選 分享 intel 支持 get 更多 wid efficient 優勢 作者簡介:kevinxiaoyu,高級研究員,隸屬騰訊TEG-架構平臺部,主要研究方向為深度學習異構計算與硬件加速、FPGA雲、高速視覺感知等方向的構架設計和優化。“深度學習的異構加速技術”系列

掃盲人工智能的計算力基石--計算

價格 str 分享 動作 隨著 人員 tps 協處理器 加速 摘要: 本文將帶領入門讀者了解CPU,GPU,FPGA,ASIC和異構計算的一些基本概念和優缺點,希望幫助入門者和愛好者建立基本的芯片概念人工智能有三要素:算法,計算力,數據。我們今天主要來講講計算力。計算力歸根

計算:軟硬件結合全棧助力AI大爆發

水平 實時 ges follow 要求 構建 col 分布式 合作夥伴 摘要: 2018杭州雲棲大會,異構計算專場精彩回顧 9月20日上午,杭州雲棲小鎮E1-2會場,備受業界關註的2018年杭州雲棲大會異構計算專場召開。 近年來,人工智能持續爆發,對算力提出了更高的要求。異

書籍 opencl計算

本書將介紹在複雜環境下的OpenCL和並行程式設計。這裡的複雜環境包含多種裝置架構,比如:多芯 CPU,GPU,以及完全整合的加速處理單元(APU)。 OpenCL 2.0最新的改進: 共享虛擬記憶體(Shared virtual memory)可增強程式設計的靈活性,從而能大幅度減少在資料

計算

十歲的小男孩   本文淺顯的講解下X-PU之間的區別,CPU、GPU、TPU、NPU、BPU、DPU。   CPU     CPU( Central Processing Unit, 中央處理器)就是機器的“大腦”,也是佈局謀略、發號施令、控制行動的“總司令官”。    CPU的結構主要包括

CPU+GPU計算程式設計簡介

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

阿里雲計算產品是如何保障雙11業務的

一年一度的雙11購物狂歡節,是全球商家和消費者的盛會,同時也是一場技術的盛會,人臉識別,圖片搜尋,字元識別,語音識別,8K視訊直播,智慧推薦,語音助手等最先進的技術手段被廣泛使用,為大促的各個環節保駕護航。作為IT基礎設施的基石,阿里雲ECS為阿里集團雙十一業務提供了強有力的計算保障。 阿里雲異構計算產品—

阿裏雲計算產品是如何保障雙11業務的

提取 在線 理念 彈性 都是 消費者 視頻直播 當前 購物 一年一度的雙11購物狂歡節,是全球商家和消費者的盛會,同時也是一場技術的盛會,人臉識別,圖片搜索,字符識別,語音識別,8K視頻直播,智能推薦,語音助手等最先進的技術手段被廣泛使用,為大促的各個環節保駕護航。作為IT

阿里雲計算產品是如何保障雙11業務的?

一年一度的雙11購物狂歡節,是全球商家和消費者的盛會,同時也是一場技術的盛會,人臉識別,圖片搜尋,字元識別,語音識別,8K視訊直播,智慧推薦,語音助手等最先進的技術手段被廣泛使用,為大促的各個環節保駕護航。作為IT基礎設施的基石,阿里雲ECS為阿里集團雙十一業務提供了強有力的計算保障。

阿里雲計算團隊亮相英偉達2018 GTC大會

1、首屆雲原生計算國際會議上,彈性計算研究員伯瑜介紹了基於虛擬化、容器化編排技術的雲端計算作業系統PouchContainer 首屆雲原生計算國際會議(KubeCon + CloudNativeCon,China,2018)在上海舉辦,彈性計算研究員伯瑜介紹了基於虛擬化、容器化編排技術的雲端計算作業系統Po

計算:軟硬體結合全棧助力AI大爆發

摘要: 2018杭州雲棲大會,異構計算專場精彩回顧 9月20日上午,杭州雲棲小鎮E1-2會場,備受業界關注的2018年杭州雲棲大會異構計算專場召開。 近年來,人工智慧持續爆發,對算力提出了更高的要求。異構計算作為大計算時代的解決方案,意在打破傳統通用計算的限制,融合不同指

OpenCL:一種計算架構

轉載 王博部落格,https://www.cnblogs.com/wangshide/archive/2012/01/07/2315830.html OpenCL:一種異構計算架構 目錄 1 摘要 2 為什麼需要OpenCL? 3 OpenCL架構

OpenCL的多GPU和多核CPU計算--1

原作者:飛鴻驚雪 地址點選開啟連結 本文主要探究OpenCL的GPU和多核CPU的異構計算問題,主要簡要闡述了什麼是OpenCL異構計算,講述CPU和GPU各自的特點,並且把他們結合起來做異構計算的前景。然後具體講述在高效能實驗室Linux工作站上如何搭建多GPU和多核

進行計算GPUFPGACPUDSP這些平臺各有什麼特點?如何選擇?

恰好做系統方案時評估過,有些經驗,正好來回答。不過只能簡單說一下,具體資料屬於公司機密。不知題主想做哪類運算。就純粹運算能力來說。 先從最弱的說起 一般來講最弱的是cpu。雖然cpu主頻最高,但是單顆也就8核,16核的樣子,一個核3.5g,16核也就56g,再考慮指令週期,每秒最多也就30g次乘法。還是

OpenCL的多GPU和多核CPU計算--2

        本文主要探究OpenCL的GPU和多核CPU的異構計算問題,主要簡要闡述了什麼是OpenCL異構計算,講述CPU和GPU各自的特點,並且把他們結合起來做異構計算的前景。然後具體講述在高

OpenCL計算資料收集

Easy OpenCL with Python OpenCL與python聯合工作:與CUDA的前景分析 如果你對python熟,可以用 PyOpenCL, 兼顧 host 端的簡潔與 de

深入理解 CPU 和計算晶片 GPU/FPGA/ASIC

王玉偉,騰訊TEG架構平臺部平臺開發中心基礎研發組,組長為專家工程師Austingao,專注於為資料中心提供高效的異構加速雲解決方案。目前,FPGA已在騰訊海量圖片處理以及檢測領域已規模上線。 隨著網際網路使用者的快速增長,資料體量的急劇膨脹,資料中心對計算的需求也

深度學習加速技術(二):螺獅殼裡做道場

作者簡介:kevinxiaoyu,高階研究員,隸屬騰訊TEG-架構平臺部,主要研究方向為深度學習異構計算與硬體加速、FPGA雲、高速視覺感知等方向的構架設計和優化。“深度學習的異構加速技術”系列共有三篇文章,主要在技術層面,對學術界和工業界異構加速的構架演

CPU+GPU計算編程簡介

win windows 不能 ado 另一個 基於 旋轉 方式 objects 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net 異構計算(CPU +