1. 程式人生 > >適用於深度學習的高性能系統架構綜述

適用於深度學習的高性能系統架構綜述

局限性 orm 網路 notice nis csdn 計算機視覺 tor model

課程作業,正好自己也在學深度學習,正好有所幫助,做了深度學習的AI芯片調研,時間比較短,寫的比較倉促,大家隨便看看

近年來,深度學習技術,如卷積神經網絡(CNN)、遞歸神經網絡(RNN)等,成為計算機視覺等相關領域的研究熱點之一,取得了一定的研究和應用成果。回顧人工智能發展史,早在上世紀 80 年代末期,Geoffrey Hinton等人便提出深度學習的方法,並且在數字手寫體的識別問題方面取得突破性進展。進入90 年代後,由於對深度學習理論認識和硬件系統計算能力的局限性,深度學習技術的發展受到制約。隨著芯片存儲和處理能力的提升,深度學習研究也被推向一個高潮。

相對於SIFT等傳統手工特征,深度學習技術通過大規模數據的多層次學習,訓練出深度模型,可以從數據中提取更加抽象的特征表示。然而,深度學習模型結構復雜、參數數量龐大,訓練深度學習模型需要極大的數據量和超強計算能力。隨著計算機硬件技術的快速發展,各種加速器的處理能力顯著增強,為深度模型的訓練提供了硬件基礎。因此,本文對深度學習研究中用到的幾種硬件架構進行調研,做出分析和總結。

GPU:當前市場主流芯片

對於深度學習來說,目前硬件加速主要靠使用圖形處理單元(GPU)集群作為通用計算圖形處理單元(GPGPU)。相比傳統的通用處理器(GPP),GPU的核心計算能力要多出幾個數量級,也更容易進行並行計算。尤其是NVIDIA CUDA,作為最主流的GPGPU編寫平臺,各個主要的深度學習工具均用其來進行GPU加速。最近,開放型並行程序設計標準OpenCL作為異構硬件編程的替代性工具備受關註,而對這些工具的熱情也在高漲。雖然在深度學習領域內,OpenCL獲得的支持相較CUDA還略遜一籌,但OpenCL有兩項獨特的性能。首先,OpenCL對開發者開源、免費,不同於CUDA單一供應商的做法。其次,OpenCL支持一系列硬件,包括GPU、GPP、現場可編程門陣列(FPGA)和數字信號處理器(DSP)。

2012 年,Krizhevsky 等人僅憑借兩塊 GPU 訓練 AlexNet 模型,取得了 ImageNet圖像分類的極佳效果。CPU 與 GPU 兩者都是由控制器、邏輯單元和寄存器組成,其中,GPU 中邏輯單元的規模遠遠高於 CPU,如圖1所示。這種不同的構架決定了 GPU 在數據的算術、邏輯運算等方面的並行處理能力顯著增強,而基於神經網絡的深度學習技術,對並行處理能力的要求遠遠高於計算精度。除了計算核心的增加,GPU 在每個流處理器集群末端設有共享內存,在共享內存中就可以完成線程之間的數據通訊,通訊速度顯著提高,而 CPU 每次都返回內存,進行數據調用。另外,GPU 采用的是 GDDR5 顯存顆粒,具備很高的工作頻率和顯存帶寬,對大規模深度神經網絡的訓練更有優勢。

圖1 CPU與GPU架構對比

現有的GPU架構主要有Tesla、Fermi、Kepler、Maxwell、Pascal等。2017 年 5 月,英偉達發布新的 GPU 架構Volta,可以實現4倍於Pascal 架構的性能,GV100 是采用 Volta 架構的第一款 GPU。Tesla V100 是使用GV100 GPU的第一個 AI 芯片。相對於 Pascal 架構,Tesla V100 對深度神經網絡訓練和推理階段的性能分別提高 12 倍和 5 倍。GPU在浮點計算、並行處理等方面的性能遠遠高出 CPU。同時,越來越多的深度學習標準庫支持基於 GPU 加速,如 OpenCL、CUDA等。英偉達的 GPU 雲平臺 NGC,提供 Caffe、Caffe2、MXNet、CNTK、Theano、TensorFlow、Torch 等框架、深度學習 SDK 等,此舉將大大促進深度學習技術的發展。

FPGA:高性能低成本架構

GPU 價格昂貴且功耗大,相對於GPU,價格便宜、能耗較低的可編輯門陣列(FPGA)引起了大家的註意。

FPGA(Field Programmable Gate Array)是在PAL、GAL、CPLD等可編程邏輯器件的基礎上進一步發展的產物。它是作為專用集成電路領域中的一種半定制電路而出現的,既解決了全定制電路的不足,又克服了原有可編程邏輯器件門電路數有限的缺點。FPGA的開發相對於傳統PC、單片機的開發有很大不同。FPGA以並行運算為主,以硬件描述語言來實現;相比於PC或單片機(無論是馮諾依曼結構還是哈佛結構)的順序操作有很大區別。FPGA開發需要從頂層設計、模塊分層、邏輯實現、軟硬件調試等多方面著手。FPGA可以通過燒寫位流文件對其進行反復編程,目前,絕大多數 FPGA 都采用基於 SRAM(Static Random Access Memory 靜態隨機存儲器)工藝的查找表結構,通過燒寫位流文件改變查找表內容實現配置。

目前,FPGA 可以采用OpenCL、C等更高效的編程語言降低了硬件編程的難度 ;還可以集成重要的控制功能,整合系統模塊,提高了應用的靈活性 ;FPGA 以門電路直接運算,速度快,而用戶可以自由定義這些門電路和存儲器之間的布線,改變執行方案,以期得到最佳效果。

現有的 FPGA 的廠商主要有賽靈思、 Altera、Lattice 等。目前,國內有許多企業,也致力於 FPGA 研究。例如,深鑒科技主要研究了針對機器學習的處理器和編譯器技術,發明的“深度壓縮”和“片上存儲”技術,可以把深度神經網絡壓縮幾十倍卻不會降低準確度,同時提高了內存讀取速度,並減少功耗。

FPGA 性能高,但是也有一些局限性 :第一,編譯速度慢、編程難度較高。使用高端服務器需要幾分鐘才能 完 成 FPGA 編譯,移動端速度會更慢。第二,FPGA要求使用者能使用硬件描述語言對其進行編程。但是,已經有科技公司和研究機構開發了更加容易使用的語言比如Impulse Accelerated Technologies Inc. 開發了C-to-FPGA編譯器使得FPGA更加貼合用戶的使用,耶魯的E-Lab 開發了Lua腳本語言。這些工具在一定程度上縮短了研究者的開發時限,使研究更加簡單易行。此外,FPGA 加速器主要針對的是企業客戶,如百度、IBM、微軟等公司。

TPU:定制化機器學習加速器

在2017年的谷歌 I/O 開發者大會上,谷歌宣布設計一款全新類別的定制化機器學習加速器定制化硬件-張量處理器。

TPU 將使我們快速做出預測,並使產品迅速對用戶需求做出回應。TPU 運行在每一次的搜索中;TPU 支持作為谷歌圖像搜索(Google Image Search)、谷歌照片(Google Photo)和谷歌雲視覺 API(Google Cloud Vision API)等產品的基礎的精確視覺模型;TPU 將加強谷歌翻譯去年推出的突破性神經翻譯質量的提升;並在谷歌 DeepMind AlphaGo 對李世石的勝利中發揮了作用,這是計算機首次在古老的圍棋比賽中戰勝世界冠軍。

TPU 的中心是一個 65536 的 8 位 MAC 矩陣乘法單元,如圖3所示,可提供 92 萬億次運算/秒(TOPS)的速度和一個大的(28 MiB)的可用軟件管理的片上內存。相對於 CPU 和 GPU 的隨時間變化的優化方法(高速緩存、無序執行、多線程、多處理、預取……),這種 TPU 的確定性的執行模型(deterministic execution model)能更好地匹配我們的神經網絡應用的 99% 的響應時間需求,因為 CPU 和 GPU 更多的是幫助對吞吐量進行平均,而非確保延遲性能。這些特性的缺失有助於解釋為什麽盡管 TPU 有極大的 MAC 和大內存,但卻相對小和低功耗。

圖3 TPU各模塊框圖

TPU采用專用的處理單元以及專用的指令集,相比於GPU,極大地提高了處理的效率。TPU有足夠的靈活性來匹配2017年以及2013年的神經網絡,盡管數據路徑和內存較大,但是省略了通用功能,使得功耗較小;量化應用程序使用8位整數;而且應用程序是使用TensorFlow編寫的,這使得它們可以很容易地以高性能移植到TPU上,而不必重寫,以便在不同的TPU硬件上運行良好。

TPU已經應用在很多方面,例如機器學習人工智能系統RankBrain,它是用來幫助Google處理搜索結果並為用戶提供更加相關搜索結果的;還有街景Street View,用來提高地圖與導航的準確性的以及下圍棋的計算機程序AlphaGo。

NPU:神經網絡處理器

NPU的典型代表有國內的寒武紀系列芯片。DianNao在ISCA-2012加速器的基礎上增加了局部存儲,使其可以捕捉深度神經網路的數據局部性並由此克服內存帶寬的限制。DianNao家族的第二個加速器是DianNao的多片版本,被稱為DaDianNao。該芯片主要有兩個設計目標:一是揭示神經網絡層的可分特性使得加速器可具備極好的可擴展性,二是聚集足夠多的片上存儲來將整個機器學習模型都放在片上,從而克服內存帶寬的限制。作為克服嵌入式應用中內存帶寬限制的另一種方法,我們揭示可以通過加速器和傳感器的直連來繞過內存。我們將此思想應用於視覺傳感器,從而提出了DianNao家族的第三個加速器ShiDianNao,發表於2015年的ISCA上。最後,揭示出這類加速器的應用領域可以被拓展至多種機器學習算法,因為這些算法多具有類似的運算操作。相應的加速器設計稱為PuDianNao(DianNao家族的第四個以及最後一個成員),發表於ASPLOS-2015。

DianNao結合神經網絡模型的數據局部性特點以及計算特性,進行存儲體系以及專用硬件設計,從而獲取更好的性能加速比以及計算功耗比。

主流的基於異構的GPU的加速和FPGA的加速,還有直接硬件化算法的 ASIC都沒有真正處理還內存訪問和內存帶寬的限制,而由於大規模的神經網絡的特點,這種直接給予DMA的方式在一定程度上不能對神經網絡進行理想的加速。與CPU的設計不同的是此架構將內存的訪問作為設計的第一考慮因素。主要在以下三方面做出貢獻:對大規模的CNNs和DNNs機器學習算法的綜合硬件的設計; 在很小的芯片空間上高吞吐率和低功耗;專註訪存的性能,性能不受計算任務訪存的區別。

相對於主流的CPU,SIMD快了117倍,而功耗變成了原來的1/21。與主流的GPU的性能相當,但功耗降低了兩個數量級。

類腦芯片:未來發展

AI 界的科學家一直致力於模仿人類大腦研究。人腦中的神經元之間,信號傳導速度緩慢,但是其數量眾多,而且每個神經元都與另外的眾多神經元相互連接,共同支配著人的感知和行為。同時,有些神經元在不需要時並不會被激活,從而降低了整體耗能。研究人員按照此機理,對人腦進行模擬,如由 1000 臺配有 16 核處理器的計算機組成的 Google Brain 等,在硬件上對大型神經網絡進行仿真。但是組成這些網絡需要大量的計算機集群,這種架構使得集群處理能力顯著提高,但是能耗巨大。IBM 的 SyNAPSE 項目則在芯片上對人腦進行模仿。此計劃目的是還原大腦的計算功能,使系統能夠模擬人類的感知、行為與交流的能力,以輔助士兵在戰場上的認知能力,用於無人武器的自動作戰。

類腦芯片TureNorth 在該計劃中備受矚目。不同於傳統馮諾依曼體系,TureNorth的內存、CPU 和通信部件是集成為一體的。因此,信息的處理完全在本地進行,神經元之間的溝通更為便捷。上海的西井科技發布了全球第一款可商用化類腦芯片,也是世界上擁有最多神經元數目的類腦芯片,共 5000 萬個神經元。

從芯片性能來看,與 GPU 和FPGA 相比,類腦芯片的計算能力很有限。因此,類腦芯片在人工智能研究中使用最小眾化。如果未來人類可以更好地理解人腦的結構和機理,有了更充分的理論和實驗支持,類腦芯片的性能也可能會得到極大改善。

未來展望

首先,在實現相同的深度學習算法時,FPGA 和 ASIC 的處理效率更高,且功耗在很大程度上低於 GPU/CPU ;其次,由於馮諾依曼結構的局限性,GPU/CPU 的並行計算能力不能充分發揮,而 FPGA 與 ASIC 可以同時實現並行計算和流水線操作,縮小了輸入與輸出的延時比;針對移動端的深度學習,在FPGA 和 ASIC 中,SoC+IP 模式可以更好地優化神經網絡結構,提升效率。另外,FPGA 芯片具有研發周期短、可配置性高、功耗低等特性,被廣泛應用於大型企業和軍工單位等。ASIC 在應用上則偏向於移動終端等領域。

經過分析比較得知,GPU 較為適合 SIMD 體系結構,它只需一個指令就能並行處理大量數據。但是對於需要用多條指令平行處理一個數據的 MISD,FPGA更有優勢,且更適合深度學習加速。FPGA 可以方便靈活地調整電路配置來適應算法 ;FPGA 比GPU 更適合用於深度學習的推斷階段;最後,賽靈思研發了可重配置加速棧堆,以降低 FPGA 的編程難度,提供了一些硬件加速方案,用戶可直接挑選方案,不用自己設計布局布線,方便快捷。所以未來,FPGA 將會更有效地適應深度學習技術研究。

參考文獻

[1] Chen T, Du Z, Sun N, et al. DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning[J]. Acm Sigplan Notices, 2014, 49(4):269-284.

[2] Chen Y, Luo T, Liu S, et al. DaDianNao: A Machine-Learning Supercomputer[C]// Ieee/acm International Symposium on Microarchitecture. IEEE, 2014:609-622.

[3] Du Z, Fasthuber R, Chen T, et al. ShiDianNao:shifting vision processing closer to the sensor[C]// ACM/IEEE, International Symposium on Computer Architecture. IEEE, 2015:92-104.

[4] Liu D, Chen T, Liu S, et al. PuDianNao: A Polyvalent Machine Learning Accelerator[C]// Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 2015:369-381.

[5] Jouppi N P, Young C, Patil N, et al. In-Datacenter Performance Analysis of a Tensor Processing Unit[J]. 2017:1-12.

[6] Akopyan F, Sawada J, Cassidy A, et al. TrueNorth: Design and Tool Flow of a 65 mW 1 Million Neuron Programmable Neurosynaptic Chip[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2015, 34(10):1537-1557.

[7] 沈陽, 王倩, 王亞男,等. 深度學習硬件方案綜述[J]. 廣播電視信息, 2017(10):64-68.

[8] http://ee.ofweek.com/2017-04/ART-11001-2814-30122437_3.html

[9] http://www.openhw.org/module/forum/thread-658461-1-1.html

[10] http://blog.csdn.net/amds123/article/details/66109709

適用於深度學習的高性能系統架構綜述