使用專用硬件加速深度卷積神經網絡

英文論文鏈接:http://research.microsoft.com/apps/pubs/default.aspx?id=240715

翻譯:卜居

轉載請註明出處:http://blog.csdn.net/kkk584520/article/details/47711755

【摘要】

最近在多層卷積神經網絡的突破導致了識別任務(如大量圖片分類和自動語音識別)準確率的大幅提升【1】。這些多層神經網絡很大,很複雜,需要大量計算資源來訓練和評估【2】。然而這些需求發生在目前這樣一個尷尬的時刻,商業處理器性能增長十分緩慢。

專用硬件形式有GPGPU,FPGA和ASIC,提供了通往處理能力和高能效的坦途。微軟通過使用FPGA增強型服務器(類似已經集成到微軟數據中心的硬件【3】)加速深度卷積神經網絡駕馭了專用硬件。

開始只是在中等規模FPGA上實現了單節點CNN加速器,展示了優於遺忘FPGA設計和高端GPGPU的性能,降低了功耗。未來會通過低延遲通信互聯多個FPGA,進一步可能訓練和評估模型。


【背景】

目前深度卷積神經網絡一般組織爲交替的卷積層、最大池化層後面加一系列稠密的全連接層,如圖1中經典的拓撲圖所示。


每個3D立方體表示一層的輸入,送入下一層會變換爲新3D立方體。在例子中有5個卷積層,3個最大池化層,以及3個全連接層。

本文中我們主要討論3D卷積問題,儘管其他操作如pooling和全連接層也會涉及。圖2展示了3D卷積的基本模型。一個N x N x D的3D輸入立方體被H個k x k x D維的卷積核卷積,輸出間隔爲S,每個3D核用類似滑動窗口的形式移動(移動偏移量由參數S定義)。每次移動,3D卷積核的每個權值同映射到3D輸入立方體的輸入值進行乘加,卷積後,可選地進行pooling操作(由參數p和s定義)用來下采樣卷積輸出,選擇窗口的最大值或平均值


【在數據中心加速深度卷積神經網絡】

2014年微軟宣佈了Catapult項目,成功展示了用FPGA在數據中心使Bing Ranking加速了近2倍【3】。利用這個基礎,我們團隊在微軟研究院開發了高吞吐CNN FPGA加速器,在很低的服務器功耗下獲得了優異性能。圖3給出了用於高效計算卷積層前向傳播的CNN FPGA加速器高層次概覽。


關鍵特徵如下:

(1)軟件可配置的引擎,支持多層運行時配置(無需硬件重編程);

(2)高效數據緩衝體制和片上分發網絡,將片外訪存降至最低;

(3)處理單元(PE)構成的空間分佈陣列,可很容易擴展到上千個單元;

在正常操作下,CNN加速器可以獲取輸入圖像,連續處理多個卷積層。在初始階段,輸入圖像像素從本地DRAM流入片上,存儲到多個bank輸入緩衝區。之後,數據流入多個PE陣列,實現3D卷積步驟中的獨立點乘操作。頂層控制器完成序列化、尋址、分發數據到每個PE陣列。最終,累加結果發送到特定片上網絡,將計算輸出循環送入輸入緩衝區用於下一輪的計算(雖然圖3中沒有顯示,但存在額外的邏輯處理pooling和ReLU操作)。


圖3中高亮的加速器位於雙插槽Xeon服務器,裝備一個Catapult FPGA卡,包括中等規模Stratix D5 FPGA和8GB DDR3-1333[3]。每個FPGA卡通過PCIe 3x8支持高達8GB/s帶寬,同時本地DRAM支持21.3GB/s帶寬。更多硬件描述可參考Catapult論文【3】。


表1顯示了使用著名模型(如基於cuda-convnet【4】的CIFAR-10,基於Alex的ImageNet-1K【1】等)進行圖像分類(只有前向傳播過程)的吞吐情況。我們進一步評估了最大的和最具挑戰性的模型:ImageNet-22K,在微軟ADAM項目中訓練的DCNN【2】。


總體上看,我們目前在裝備中等規模Stratix V D5 FPGA的Catapult服務器上獲得了最高處理吞吐。相比最近發表的FPGA實現【5】和運行在高端GPGPU上的Caffe+cuDNN【6】。注意GPGPU解決方案需要高達235W功耗【7】,使得部署到功耗限制的數據中心不太現實。相反,FPGA解決方案功耗不超過25W,佔整個服務器功耗的不到10%。我們的實現獲得了近3倍加速,相對最近發表的利用Virtex 7 485T FPGA的CNN加速器【5】。

(卜居注:【5】只說了處理能力達到61.62GFLOPS,並沒有說處理圖片速度,這篇文章怎麼算的?

2016/6/6 卜居補充:原來如此,文獻【5】 Table 7 給出了 FPGA 上 5 個 conv layers 計算總時間爲 21.61 ms,相當於每秒處理 46.27 張圖)

我們參數化的CNN加速器可靈活擴展到更新和更快的FPGA。我們團隊正在將設計移植到Altera的最新Arria 10 FPGA上,提供了對浮點處理支持,可以在高能效情況下達到1TFLOPS處理能力【8】。表1列出了我們的預期性能。


總而言之,本文描述了使用FPGA加速深度卷積神經網絡的研究。前期結果是很有希望的,顯示出專用硬件具有低功耗、高性能的優勢。未來我們希望在Arria 10和Stratix 10上設計更高性能的加速器,並考慮多片互聯並行訓練和評估。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章