深度學習最近取得的成功勢不可擋:從圖像分類和語音識別到圖片標注、理解視覺場景、視頻概述、語言翻譯、繪畫,甚至是生成圖像、語音、聲音和音樂!隨著我們的家變得越來越智能,你會發現許多設備都會需要連續地使用深度學習應用、收集和處理數據。
所以我們需要新的硬件,一個比 Intel Xeon 所驅動的服務器更加高效的硬件。一個英特爾服務器 CPU 可能會消耗 100-150 瓦功率并需要一個有著冷卻裝置的超大系統來支持其性能的正常發揮。
還有哪些其它的選擇?
圖形處理器、GPU 現場可編程的邏輯器件、FPGA(現場可編程門陣列/Field-Programmable Gate Array) 定制芯片、特殊應用型集成電路、ASIC、[**芯片**](http://pubads.g.doubleclick.net/gampad/clk?id=132505090&iu=/122049170/TEXT_AD)系統或 [**SoC**](http://pubads.g.doubleclick.net/gampad/clk?id=132505090&iu=/122049170/TEXT_AD) 數字信號處理器、DSP 未來的、外星人發明的、由新的物理定律所發展出的技術
GPU
GPU 最早是為生成基于多邊形網絡的計算機圖形而設計的。在最近幾年,由于近來計算機游戲和圖形引擎領域的需求和復雜度需要,GPU 積累了強大的處理性能。英偉達是 GPU 領域的領軍者,能生產有數千個內核的處理器,這些內核的設計工作效率可以達到 100%。實際上這些處理器也非常適用于運行神經網絡和矩陣乘法方面的計算。注意,矩陣向量的乘法運算被認為是「尷尬的并行(embarrassingly parallel)」,因為它可以通過簡單的算法擴展被并行化(它們缺少分支因而可以避免緩存信息丟失)。
Titan X 是訓練深度學習模型的一個最得力的助手。它擁有 3500 多個內核,每秒能夠執行超過 11 萬億次浮點運算。更多測試性能方面的信息請參考這里(https://github.com/soumith/convnet-benchmarks)。
由于 GPU 的超多核(~3500 個,對比 Intel Xeon 的 16 個/ Xeon Phi 的 32 個),英特爾的 CPU 和英偉達的 GPU 之間的競爭助長了后者的發展,使其 GPU 比 CPU 在時鐘頻率快 2~3 倍。GPU 核是更為復雜(分支預測和流程)的 CPU 核的流線型版本,但是前者許多都支持更高級別的并行運算,因而擁有更好的性能。
這種 GPU 很擅長訓練深度學習系統——卷積神經網絡或者循環神經網絡。它們可以在僅僅幾毫秒之內就運行一批 128 或 256 張圖像。但是它們同時也會消耗大約 250 瓦的功率并且需要一個完整的計算機來支持運行,這又消耗了額外的 150 瓦的功率。一個高性能的 GPU 系統至少需要消耗 400 瓦的功率。
這并不適用于增強現實眼鏡、無人機、手機、移動設備和小型機器人。甚至對于未來的消費級自動駕駛汽車來說也是不可接受的。
英偉達正在致力于開發效率更高的器件,比如 Tegra TX1、TX2(深度神經網絡需要 12 瓦的能耗和每秒 ~100 千兆次浮點運算的性能,TX2 需要的更多)和更強大的 Drive PX(250 瓦,與一個 Titan X 的消耗量差不多)。
這里還要注意,在自動駕駛汽車和智能攝像機中,直播視頻是必要的而圖像批處理是不可能實現的,因為視頻需要針對及時響應進行實時處理。
一般 GPU 的水平大約是 5 G-flops/s per W。如果我們想在移動系統中部署深度學習解決方案,那我們還需要更好的方法!
FPGA
Xilinx 等公司的現代 FPGA 器件就是電子元器件中的樂高。我們可以使用其電路作為模塊來構建出整個定制微處理器和復雜的異構系統。而在最近幾年,FPGA 開始生產出越來越多的乘累加計算模塊。這些 DSP 模塊正如其名,能夠執行乘法運算并可以被排列到一起來進行一定量的并行運算。
我們將 FPGA 應用于神經網絡的研究歷史已有 10 年時間。我們的工作始于來自紐約大學的 Yann LeCun 的開創性工作,尤其是 Clement Farabet。我們的協同合作制造出了 NeuFlow,它是一個復雜的、用于運行神經網絡的數據流處理器。
從 2011 年到 2015 年早期,我們完善了一個全新的設計——nn-X。這項工作是由 Berin Martini 和 Vinayak Gokhale(來自我們的辦公室)領導的。這套系統可以在 4 瓦的功率電力預算下實現 200 G-ops/s 的速度,也即 50 G-ops/s/W,這個結果幾乎是 GPU 性能的 10 倍。
但是 nn-X 有兩個很大的問題:
當固定的卷積引擎(convolutional engine)未被使用時其利用率會很低
高內存帶寬
第一個問題是由于 nn-X 采用了固定的 10x10 卷積引擎,而當它在執行 3x3 卷積時,只有 9% 的 DSP 單元得到了有效利用。這一點后來是通過將一個 12x12 的網格分為 4x4 單元的 3x3 卷積器而得以解決。不幸的是該系統還需要高內存帶寬,因為它并沒有使用數據緩存且需要從內存中讀取輸入并直接將結果保存在內存中。像這樣的 nn-X 不能進行擴展,且其 DPS 單元的利用率永遠不會超過 75–80%。
設計方面有類似限制的系統也會有性能方面的限制。
我們所需的是一個帶有數據緩存的系統,它可以使用任意組 DPS 單元來有效地(近乎 100% 地)利用資源。這種系統有 Microsoft Catapult 和我們的 SnowFlake 加速器,后者的利用率幾乎可以達到 100%(更多內容即將呈現)。
微軟使用 Altera 器件來實現創紀錄的深度神經網絡處理性能。不幸的是它并不是一個商業化的系統,而是一項微軟的數據中心資產,因而還未對公眾開放。中國的科技巨頭企業百度也加入了這一隊列。
定制 SoC
高通、AMD、ARM、英特爾和英偉達都在致力于將定制化芯片整合進它們的現有解決方案中。Nervana 和 Movidius(目前都在英特爾旗下)已經或者說正在開發集合方案。SoC 在同一技術節點上所能提供的性能大約是 FPGA 系統的 10 倍,在特定結構中還要更高。由于 SoC 和處理器所需的功率變得越來越低,其區別將來自于新的集合內存系統和帶寬對外部存儲器的有效利用。在這一領域,整合為 systems-on-a-package(SOP)的 3D memory 至少可以節約 10 倍的功率。
DSP
DSP 已經存在了很長一段時間,它最初是用來執行矩陣算法的。但到目前為止,DSP 并沒能真正提供任何有用的性能或是可以與 GPU 相匹敵的器件。為什么會這樣呢?其主要原因就是核數量。DSP 主要用于電信系統,且無需擁有 16 個或 32 個以上的核。其工作負載并不需要這么多。相反,GPU 負載在近 10~15 年間一直在增加,因此它需要更多的核。最終,大約從 2006 年開始,英偉達的 GPU 在性能上就超過了 DSP。
Texas Instruments 公司還在開發 DSP,但是我們從中并沒有看到任何有競爭力的性能。且許多 DSP 也已經被 FPGA 取代了。
Qualcomm 在它們的 SoC 中使用 DSP,并且其性能會有所加速,但是目前還沒有足夠多的信息來將它與其它的解決方案進行比較。
-
FPGA
+關注
關注
1644文章
21993瀏覽量
615336 -
cpu
+關注
關注
68文章
11054瀏覽量
216264 -
深度學習
+關注
關注
73文章
5557瀏覽量
122579
原文標題:剖析GPU、FPGA、ASIC和DSP,如何選擇高效的深度學習硬件?
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論